linux unix mysql 数据库自动备份

互联网十八般武艺 互联网十八般武艺

文章给大家介绍在linux unix中利用shell命令实现mysql 数据库自动备份脚本代码,有需要了解的朋友只需简单修改一下即可使用了.

文件名 mysql_data_backup.sh (需要执行权限)

mysql 数据库表自动备份shell 脚本 (第二版)

调用示例,代码如下:mysql_data_backup.sh

包含功能:

1.生成备份日志

2.自动检测指定数据库中的库列表,单独备份每个库,最后打包为tar文件

3.可指定备份存档文件(.tar) 保留的数目, 按时间正序清理以前的存档

4.恢复时可以登录 mysql 以后直接用 source xxx.sql 自动删除和创建数据库,并还原数据.

需要修改的变量,代码如下:

  1. db_host//数据库主机
  2. db_user//数据库帐号
  3. db_passwd//数据库密码
  4. backupFileNum//保留的备份存档文件数目,超出该数目自动清理
  5. backupDir//备份文件存放的目录
  6. logfile//日志文件路径

如何恢复数据:

参见 mysql 数据库表自动备份shell 脚本,第一版,代码如下:

  1. #!/bin/bash
  2. #mysqlinkuserconfig
  3. db_host=192.168.0.222
  4. db_user=admin
  5. db_passwd=123456
  6. #backupFilenumber
  7. backupFileNum=4
  8. #logfile
  9. logfile='/sqlbackup/backup.log'
  10. #backupofdirectoryDonotbring/
  11. backupDir="/sqlbackup"
  12. #checkdatabasename
  13. echo'Backupbegin'
  14. begin_time=`date'+%s'`
  15. #getdatabaseslist
  16. databases_content=`mysqlshow-u$db_user-p$db_passwd-h$db_host|sed's/|//g'|sed's///g'|sed'1,4d'|sed'$d'`
  17. #checkdatabasesifemptyedthenexit
  18. databases_content_check=`echo-n$databases_content>/tmp/mysql_backup_check.tmp`
  19. if[!-s/tmp/mysql_backup_check.tmp];then
  20. echo'DatabaseEmptyedBackupstop.'
  21. exit
  22. fi
  23. #planbackupofsqldatabases
  24. databases=(${databases_content})
  25. #getdatabaseslength
  26. databases_len=${#databases[*]}
  27. #backupofdirectoryfordate
  28. datestamp=$(date"+%Y%m%d")
  29. #finalbackupdirectroy
  30. fileDir="$backupDir/$datestamp"
  31. #autocreatetargetdirectory
  32. if[!-d$backupDir];then
  33. mkdir$backupDir
  34. fi
  35. if[!-d$fileDir];then
  36. mkdir$fileDir
  37. fi
  38. if[!-d$logfile];then
  39. touch$logfile
  40. fi
  41. echo"total$databases_lendatabases."
  42. for((i=0;i<$databases_len;i++))
  43. do
  44. dbName="${databases[$i]}"
  45. fileName="${databases[$i]}.sql"
  46. filePath="$fileDir/$fileName"
  47. echo"Database[$dbName]Backup..."
  48. echo"DROPDATABASEIFEXISTS`$dbName`;">$filePath
  49. echo"CREATEDATABASE`$dbName`CHARACTERSET`utf8`;">>$filePath
  50. echo"use$dbName;">>$filePath
  51. mysqldump-h$db_host-u$db_user-p$db_passwd$dbName>>$filePath
  52. done
  53. #tarfiles
  54. cd$backupDir
  55. tarcvf${datestamp}.tar./${datestamp}
  56. #deletesourcearchive
  57. rm-rf./${datestamp}
  58. end_time=`date'+%s'`
  59. total_time=$[end_time-begin_time]
  60. echo'BackupDone'
  61. echo"Totaltime:${total_time}second"
  62. now_date=`date'+%Y-%m-%d%k:%M:%S'`
  63. #savelog
  64. echo"${now_date}:BackupDatabases:Totaltime[${total_time}s]">>$logfile
  65. #begincleanexcessofbackupfile
  66. #countbackupdirnameoflength;
  67. backupDir_length=`exprlength"$backupDir"`
  68. #gettarfilelist
  69. backupFile_list=`find$backupDir-name"*.tar"|sort-n-r-k1.$backupDir_length`
  70. #setarray
  71. backupFiles=(${backupFile_list})
  72. backupFile_length=${#backupFiles[*]}
  73. if[$backupFile_length-gt$backupFileNum];then
  74. for((i=$backupFile_length;i>$backupFileNum;i--))
  75. do
  76. fileName="${backupFiles[$i-1]}"
  77. rm-rf$fileName
  78. #savelog
  79. echo"file:$fileNamedeleted"
  80. echo"file:$fileNamedeleted">>$logfile
  81. done--phpfensi.com
  82. else
  83. echo"backupfilenumbernormal."
  84. fi

相关广告
  • linux unix mysql 数据库自动备份 linux unix mysql 数据库自动备份 linux unix mysql 数据库自动备份
相关阅读

linux unix mysql 数据库自动备份

2019/10/10 17:35:07 | 谷歌SEO算法 | 5G标准出炉