国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

linux mysql 數(shù)據(jù)庫(kù)自動(dòng)備份的設(shè)置方法

2024-07-24 12:37:13
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在linux中實(shí)現(xiàn)mysql自動(dòng)備份很簡(jiǎn)單,我們可以直接使用計(jì)劃任務(wù)與與相關(guān)的任務(wù)來(lái)實(shí)現(xiàn)自動(dòng)備份與恢復(fù)了,下面小編來(lái)給大家詳細(xì)介紹一下具體過(guò)程.

mysql 數(shù)據(jù)庫(kù)表自動(dòng)備份shell 腳本,調(diào)用示例,代碼如下:

  1. mysql_data_backup.bash 110 www_cas 
  2. mysql_data_backup.bash 112 www_qiche 
  3. mysql_data_backup.bash 112 www_health 

包含功能:

1.參數(shù)檢測(cè),2.生成備份日志,3.自動(dòng)檢測(cè)指定數(shù)據(jù)庫(kù)中的表,單獨(dú)備份每個(gè)表,最后打包為tar文件,4.單獨(dú)備份每個(gè)表,方便恢復(fù)用,5 支持多個(gè)數(shù)據(jù)主機(jī)判斷

以下為文件內(nèi)容,代碼如下:

  1.  #!/bin/bash 
  2. check host 
  3. if [ ! $1 ];then 
  4. echo 'usage: mysql_data_backup [hostID] dbname' 
  5. exit 
  6. else 
  7. if [ $1 -eq 110 ]; then 
  8. db_host=192.168.1.110 
  9. db_user=xxxx 
  10. db_passwd=xxx 
  11. elif [ $1 -eq 112 ]; then 
  12. db_host=192.168.1.112 
  13. db_user=xxx 
  14. db_passwd=xxx 
  15. else 
  16. echo 'Invalid Host ID' 
  17. exit 
  18. fi 
  19. fi 
  20.  
  21. check database name 
  22. if [ ! $2 ];then 
  23. echo 'usage: mysql_data_backup hostID [dbname]' 
  24. exit 
  25. else 
  26. echo 'Backup begin' 
  27. fi 
  28. begin_time=`date '+%s'
  29. db_name=$2 
  30.  
  31. # get table info 
  32. tables_content=`mysqlshow -u $db_user -p$db_passwd -h $db_host $db_name | sed 's/|//g' | sed 's/ //g' | sed '1,4d' | sed '$d'
  33. check content if emptyed 
  34. tables_content_check=`echo -n $tables_content > /tmp/mysql_backup_check.tmp` 
  35. if [ ! -s /tmp/mysql_backup_check.tmp ];then 
  36. echo 'Backup stop' 
  37. exit 
  38. fi 
  39.  
  40. # plan backup of sql tables 
  41. tables=(${tables_content}) 
  42. # get tables length 
  43. tables_len=${#tables[*]} 
  44. # backup file(tar) number 
  45. backupFileNum=3 
  46. # backup of directory Do not bring / 
  47. backupDir="/backup1/sqldata/$db_name" 
  48. # backup of directory for date 
  49. datestamp=$(date "+%Y%m%d"
  50. # log file 
  51. logfile='/backup1/sqldata/backup.log' 
  52. # final backup directroy 
  53. fileDir="$backupDir/$datestamp" 
  54.  
  55. # auto create target directory 
  56. if [ ! -d $backupDir ];then 
  57. mkdir $backupDir 
  58. fi 
  59. if [ ! -d $fileDir ];then 
  60. mkdir $fileDir 
  61. fi 
  62. if [ ! -d $logfile ];then 
  63. touch $logfile 
  64. fi 
  65.  
  66. echo "total $tables_len tables." 
  67. for ((i=0;i<$tables_len;i++)) 
  68. do 
  69. tableName="${tables[$i]}" 
  70. fileName="${tables[$i]}.sql" 
  71. filePath="$fileDir/$fileName" 
  72. echo "Table [${tables[$i]}] Backup ..." 
  73. mysqldump -e -h $db_host -u $db_user -p$db_passwd $db_name $tableName > $filePath 
  74. done 
  75.  
  76. # tar files 
  77. cd $backupDir 
  78. tar cvf ${datestamp}.tar ./${datestamp} 
  79. delete source archive 
  80. rm -rf ./${datestamp} 
  81. end_time=`date '+%s'
  82. total_time=$[end_time-begin_time] 
  83. echo 'Backup Done' 
  84. echo "Total time: ${total_time} second" 
  85.  
  86. now_date=`date '+%Y-%m-%d %k:%M:%S'
  87. # save log 
  88. echo "${now_date} : Backup Database [${db_name}] : Total time [${total_time}s]" >> $logfile 
  89.  
  90. begin clean excess of backup file 
  91. count backup dir name of length; 
  92. backupDir_length=`expr length "$backupDir"
  93. # get tar file list 
  94. backupFile_list=` find $backupDir -name "*.tar" | sort -n -r -k 1.$backupDir_length` 
  95. set array 
  96. backupFiles=(${backupFile_list}) 
  97. backupFile_length=${#backupFiles[*]} 
  98. if [ $backupFile_length -gt $backupFileNum ];then 
  99.         for((i=$backupFile_length;i>$backupFileNum;i--)) 
  100.         do 
  101.                 fileName="${backupFiles[$i-1]}" 
  102.                 rm -rf $fileName 
  103.                 #save log 
  104.                 echo "file: $fileName deleted" 
  105.                 echo "file: $fileName deleted" >> $logfile 
  106.         done  //Vevb.com 
  107. else 
  108.         echo "backup file number normal." 
  109. fi 

數(shù)據(jù)恢復(fù)可以使用批處理來(lái)恢復(fù)數(shù)據(jù)表,G:database20110324 此目錄放置需要恢復(fù)的表sql文件,main.bat restore.bat 均放置在此目錄,點(diǎn)擊 main.bat 即可開始備份,每執(zhí)行完一個(gè)文件會(huì)暫停,按任意鍵可以繼續(xù).

綠色背景藍(lán)色文字部分需要根據(jù)需要修改.

共2處,第一處為 sql 文件路徑,第二處為 數(shù)據(jù)庫(kù)名稱

main.bat內(nèi)容如下:

@echo off

for %%b IN (./*.sql) DO @restore.bat G:database20110324%%b

restore.bat 內(nèi)容如下:

  1. @echo off 
  2. pause 
  3. echo 文件 %1 開始還原 
  4. mysql -h localhost -u root -t database1 --default-character-set=utf8 -e "source %1" 
  5. echo 文件 %1 完成還原 
  6. echo . 
  7. echo . 
  8. echo .

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 长武县| 托里县| 大石桥市| 太湖县| 承德县| 莱芜市| 靖江市| 罗甸县| 莱阳市| 雅安市| 靖边县| 正宁县| 榆中县| 洛隆县| 台湾省| 那曲县| 平果县| 亳州市| 体育| 固安县| 永州市| 卫辉市| 大名县| 常德市| 河北省| 葫芦岛市| 兴宁市| 灌云县| 伊川县| 长岛县| 仙居县| 调兵山市| 乾安县| 泽州县| 苗栗县| 三亚市| 彩票| 齐齐哈尔市| 涡阳县| 铜陵市| 彰武县|