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

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

linux中mysql備份,增量備份及恢復(fù)程序

2024-07-24 12:38:26
字體:
供稿:網(wǎng)友

一個linux中mysql完全備份,增量備份及恢復(fù)腳本實(shí)現(xiàn)程序,有需要的朋友可參考一下,可以把它做成定時備份,代碼如下:

  1. #!/bin/bash 
  2. # full && increment backup and recover 
  3. # 說明:事先要確保存在/data/bak目錄,且要保證在執(zhí)行增量備份時已做過至少一次全量備份,否則找不到position文件. 
  4. port='3306' 
  5. back_src_dir="/data/mysql/${port}/logs/binlog" 
  6. back_dir='/data/bak' 
  7. DATE=`date +%Y%m%d` 
  8. user='root' 
  9. pass='cy2009' 
  10. bak_db='test1' 
  11. mysql_bin='/usr/local/mysql-5.1.48/bin' 
  12. socket="/data/mysql/${port}/mysql.sock" 
  13. full_bak() 
  14. cd ${back_dir} 
  15. DumpFile=Full_back$DATE.sql 
  16. ${mysql_bin}/mysqldump --lock-all-tables --flush-logs --master-data=2 -u${user} -p${pass} ${bak_db} > ${DumpFile} 
  17. ${mysql_bin}/mysql -u${user} -p${pass} --socket=${socket} -e "unlock tables" 
  18.  
  19. #把當(dāng)前的binlog和position信息存入position文件 
  20. cat ${DumpFile} |grep 'MASTER_LOG_FILE'|awk -F"'" '{print $2}' > ${back_dir}/position 
  21. cat ${DumpFile} |grep 'MASTER_LOG_FILE'|awk -F"=" '{print $3}' |awk -F";" '{print $1}' >> ${back_dir}/position 
  22. incre_bak() 
  23. #鎖定表,刷新log 
  24. ${mysql_bin}/mysql -u${user} -p${pass} --socket=${socket} -e "flush tables with read lock" 
  25. ${mysql_bin}/mysqladmin -u${user} -p${pass} --socket=${socket} flush-logs 
  26. #獲取上次備份完成時的binlog和position 
  27. cd ${back_dir} 
  28. start_binlog=`sed -n '1p' position` 
  29. start_pos=`sed -n '2p' position` 
  30.  
  31. #獲取目前的binlog和position 
  32. mysql -u${user} -p${pass} --socket=${socket} -e "show master statusG" | awk '{print $2}'| sed -n '2,3p' > now_position 
  33. stop_binlog=`sed -n '1p' now_position` 
  34. stop_pos=`sed -n '2p' now_position` 
  35. #如果在同一個binlog中 
  36. if [ "${start_binlog}" == "${stop_binlog}" ]; then 
  37. ${mysql_bin}/mysqlbinlog --start-position=${start_pos} --stop-position=${stop_pos} ${back_src_dir}/${start_binlog} >> Incr_back$DATE.sql 
  38.  
  39. #跨binlog備份 
  40. else 
  41. startline=`awk "/${start_binlog}/{print NR}" ${back_src_dir}/mysql-bin.index` 
  42. stopline=`wc -l ${back_src_dir}/mysql-bin.index |awk '{print $1}'
  43. for i in `seq ${startline} ${stopline}` 
  44. do 
  45. binlog=`sed -n "$i"p ${back_src_dir}/mysql-bin.index |sed 's/.*///g'
  46. case "${binlog}" in 
  47. "${start_binlog}"
  48. ${mysql_bin}/mysqlbinlog --start-position=${start_pos} ${back_src_dir}/${binlog} >> Incr_back$DATE.sql 
  49. ;; 
  50. "${stop_binlog}"
  51. ${mysql_bin}/mysqlbinlog --stop-position=${stop_pos} ${back_src_dir}/${binlog} >> Incr_back$DATE.sql 
  52. ;; 
  53. *) 
  54. ${mysql_bin}/mysqlbinlog ${back_src_dir}/${binlog} >> Incr_back$DATE.sql 
  55. ;;  
  56. esac 
  57. done 
  58. fi 
  59. #解除表鎖定,并保存目前的binlog和position信息到position文件。 
  60. ${mysql_bin}/mysql -u${user} -p${pass} --socket=${socket} -e "unlock tables" 
  61. cp now_position position 
  62. full_recov() 
  63. cd ${back_dir} 
  64. recov_file1=`ls | grep 'Full_back'
  65. ${mysql_bin}/mysql -u${user} -p${pass} --socket=${socket} -e "use ${bak_db}; source ${back_dir}/${recov_file1};" 
  66.  
  67. incre_recov() 
  68. {  
  69. cd ${back_dir} 
  70. recov_file2=`ls |grep 'Incr_back'`  
  71. ${mysql_bin}/mysql -u${user} -p${pass} --socket=${socket} -e "use ${bak_db}; source ${back_dir}/${recov_file2};" 
  72. while true 
  73. do 
  74. echo -e "tt**************************************" 
  75. echo 
  76. echo -e "tttWelcome to backup program!" 
  77. echo 
  78. echo -e "ttt(1) Full Backup For MySQL" 
  79. echo -e "ttt(2) Increment Backup For MySQL" 
  80. echo -e "ttt(3) Recover From The Full Backup File" 
  81. echo -e "ttt(4) Recover From The Increment Backup File" 
  82. echo -e "ttt(5) Exit The Program!" 
  83. echo  
  84. echo -e "tt**************************************" 
  85. read -p "Enter your choice:" choice 
  86. case $choice in 
  87. echo "now! let's backup the data by full method......." 
  88. full_bak 
  89. echo "succeed!" 
  90. sleep 2 
  91. ;; 
  92. echo "now! let's backup the data by increment method......" 
  93. incre_bak 
  94. echo "succeed" 
  95. sleep 2 
  96. ;; 
  97. echo "now! let's recover from the full back file" 
  98. full_recov 
  99. echo "successful" 
  100. sleep 2 
  101. ;; 
  102. echo "now! let's recover from the increment backup file" 
  103. incre_recov  //Vevb.com 
  104. echo "successful" 
  105. sleep 2 
  106. ;; 
  107. break 
  108. ;; 
  109. *) 
  110. echo "Wrong Option! try again!" 
  111. sleep 2 
  112. continue 
  113. ;; 
  114. esac 
  115. done

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 于都县| 凤城市| 乡宁县| 奉新县| 和林格尔县| 基隆市| 容城县| 甘肃省| 莱州市| 德保县| 罗甸县| 蓝田县| 伊宁县| 南郑县| 阳江市| 竹溪县| 育儿| 肥乡县| 马关县| 高要市| 扎鲁特旗| 安平县| 屯留县| 马鞍山市| 襄汾县| 佛山市| 离岛区| 高安市| 天台县| 青州市| 萝北县| 仙游县| 贵南县| 上杭县| 韶关市| 新营市| 南京市| 张家界市| 越西县| 宕昌县| 安庆市|