激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - 分享一個自動編寫MySQL數據庫備份腳本

分享一個自動編寫MySQL數據庫備份腳本

2022-02-20 21:35波波說運維 Mysql

其實主要是為了偷懶,所以就搞了一個自動編寫MySQL數據庫備份腳本,每次寫備份腳本傳參就可以了,僅供參考。

其實主要是為了偷懶,所以就搞了一個自動編寫MySQL數據庫備份腳本,每次寫備份腳本傳參就可以了,僅供參考。

1. MySQL備份模板(上傳到下載平臺)

  1. #!/bin/bash
  2. #################################
  3. # copyright by hwb
  4. # DATE:2020-12-03
  5. # 用途:MYSQL備份模板
  6. #################################
  7.  
  8. #定義
  9. db_host=localhost
  10. db_port=3306
  11. db_name=mysql_prod
  12. db_user=root
  13. db_pwd=password
  14. backup_path="/data/backup"
  15.  
  16. # view,function,procedure,event,trigger
  17. output_type='view,function,procedure,event,trigger'
  18. today=`date +"%Y%m%d-%H%M%S"`
  19. data_file=$backup_path/$db_name$today.sql
  20. object_file="${backup_path}/obj_${db_name}$today.sql"
  21. log_file="/home/scripts/mysql_backup.log"
  22. mysql_cmd="mysql -u${db_user} -p${db_pwd} -h${db_host} -P${db_port} "
  23. mysqldump_cmd="mysqldump -u${db_user} -p${db_pwd} -h${db_host} -P${db_port} $db_name "
  24.  
  25.  
  26. #調用函數庫
  27. [ -f /etc/init.d/functions ] && source /etc/init.d/functions
  28. export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
  29. source /etc/profile
  30.  
  31. #Require root to run this script.
  32. [ $(id -u) -gt 0 ] && echo "請用root用戶執行此腳本!" && exit 1
  33.  
  34.  
  35. [ -d $backup_path ] || mkdir -p $backup_path
  36.  
  37.  
  38. #[ ! -n "$5" ] && echo -e " Usage: $0 IP 端口 實例名 用戶名 '密碼' " && exit 1
  39.  
  40.  
  41. function mysql_backup()
  42. {
  43. echo ""
  44. echo -e "***********************************************mysql數據庫備份****************************************************"
  45.  
  46. echo -e "**************備份數據庫數據到$data_file**************"
  47. #A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events
  48. $mysqldump_cmd --single_transaction -R -E --flush-logs --master-data=2 --set-gtid-purged=OFF > $data_file
  49.  
  50. if [ $? -eq 0 ];then
  51. action "[$today]>>>完成數據庫${db_name}數據備份" /bin/true
  52. echo "[$today]>>>完成數據庫${db_name}數據備份" >> ${log_file}
  53. else
  54. action "[$today]>>>數據庫${db_name}備份失敗,請檢查相關配置!" /bin/false
  55. echo "[$today]>>>數據庫${db_name}備份失敗,請檢查相關配置!" >> ${log_file}
  56. exit 1
  57. fi
  58.  
  59.  
  60. echo -e "*******備份${db_name}函數、視圖等定義到$object_file***********"
  61. cat > $object_file<<EOF
  62. ouput object‘s definition for database "$db_name"
  63. ouput time: $(date "+%Y-%m-%d %H:%M:%S")
  64. ouput object type: $output_type
  65. EOF
  66. echo "">> $object_file
  67. echo "">> $object_file
  68.  
  69. # 視圖
  70. if [[ $output_type == *"view"* ]]
  71. then
  72. echo "-- ------------------------------------------------------------" >> $object_file
  73. echo "-- views" >> $object_file
  74. echo "-- ------------------------------------------------------------" >> $object_file
  75. #讓 MySQL不輸出列名 可以用-N 或者--skip-column-names參數
  76. $mysql_cmd --skip-column-names
  77. -e "select concat('SHOW CREATE VIEW ',table_schema,'.',table_name,';') from information_schema.views where table_schema='$db_name'" |
  78. sed 's/;/\G/g' | $mysql_cmd $db_name |
  79. sed 's/Create View: /kk_begin /g' | sed 's/[ ]*character_set_client:/; kk_end/g' |
  80. sed -n '/kk_begin/{:a;N;/kk_end/!ba;s/.*kk_begin|kk_end.*//g;p}' >> $object_file
  81. fi
  82.  
  83. # 函數
  84. if [[ $output_type == *"function"* ]]
  85. then
  86. echo "-- ------------------------------------------------------------" >> $object_file
  87. echo "-- function" >> $object_file
  88. echo "-- ------------------------------------------------------------" >> $object_file
  89. $mysql_cmd --skip-column-names
  90. -e "select concat('SHOW CREATE FUNCTION ',routine_schema,'.',routine_name,';') from information_schema.routines where routine_schema='$db_name' and ROUTINE_TYPE='FUNCTION'" |
  91. sed 's/;/\G/g' | $mysql_cmd $db_name |
  92. sed 's/Create Function: /kk_begin delimiter $$ /g' | sed 's/[ ]*character_set_client:/$$ delimiter ; kk_end/g' |
  93. sed -n '/kk_begin/{:a;N;/kk_end/!ba;s/.*kk_begin|kk_end.*//g;p}' >> $object_file
  94. fi
  95.  
  96. # 存儲過程
  97. if [[ $output_type == *"procedure"* ]]
  98. then
  99. echo "-- ------------------------------------------------------------" >> $object_file
  100. echo "-- procedure" >> $object_file
  101. echo "-- ------------------------------------------------------------" >> $object_file
  102. $mysql_cmd --skip-column-names
  103. -e "select concat('SHOW CREATE PROCEDURE ',routine_schema,'.',routine_name,';') from information_schema.routines where routine_schema='$db_name' and ROUTINE_TYPE='PROCEDURE'" |
  104. sed 's/;/\G/g' | $mysql_cmd $db_name |
  105. sed 's/Create Procedure: /kk_begin delimiter $$ /g' | sed 's/[ ]*character_set_client:/$$ delimiter ; kk_end/g' |
  106. sed -n '/kk_begin/{:a;N;/kk_end/!ba;s/.*kk_begin|kk_end.*//g;p}' >> $object_file
  107. fi
  108.  
  109. # 事件
  110. if [[ $output_type == *"event"* ]]
  111. then
  112. echo "-- ------------------------------------------------------------" >> $object_file
  113. echo "-- event" >> $object_file
  114. echo "-- ------------------------------------------------------------" >> $object_file
  115. $mysql_cmd --skip-column-names
  116. -e "select concat('SHOW CREATE EVENT ',EVENT_SCHEMA,'.',EVENT_NAME,';') from information_schema.events where EVENT_SCHEMA='$db_name'" |
  117. sed 's/;/\G/g' | $mysql_cmd |
  118. sed 's/Create Event: /kk_begin delimiter $$ /g' | sed 's/[ ]*character_set_client:/$$ delimiter ; kk_end/g' |
  119. sed -n '/kk_begin/{:a;N;/kk_end/!ba;s/.*kk_begin|kk_end.*//g;p}' >> $object_file
  120. fi
  121.  
  122. # 觸發器
  123. if [[ $output_type == *"trigger"* ]]
  124. then
  125. echo "-- ------------------------------------------------------------" >> $object_file
  126. echo "-- trigger" >> $object_file
  127. echo "-- ------------------------------------------------------------" >> $object_file
  128. $mysql_cmd --skip-column-names
  129. -e "select concat('SHOW CREATE TRIGGER ',TRIGGER_SCHEMA,'.',TRIGGER_NAME,';') from information_schema.triggers where TRIGGER_SCHEMA='$db_name';" |
  130. sed 's/;/\G/g' | $mysql_cmd $db_name|
  131. sed 's/SQL Original Statement: /kk_begin delimiter $$ /g' | sed 's/[ ]*character_set_client:/$$ delimiter ; kk_end/g' |
  132. sed -n '/kk_begin/{:a;N;/kk_end/!ba;s/.*kk_begin|kk_end.*//g;p}' >> $object_file
  133. fi
  134.  
  135. # ^M, you need to type CTRL-V and then CTRL-M
  136. sed -i "s/^M//g" $object_file
  137.  
  138. #清理過期備份
  139. find ${backup_path} -mtime +10 -type f -name '*.sql' -exec rm -f {} ;
  140.  
  141. if [ $? -eq 0 ];then
  142. action "[$today]>>>完成數據庫${db_name}過期備份清理" /bin/true
  143. echo "[$today]>>>完成數據庫${db_name}過期備份清理" >> ${log_file}
  144. else
  145. action "[$today]>>>數據庫${db_name}過期備份清理失敗,請檢查相關配置!" /bin/false
  146. echo "[$today]>>>數據庫${db_name}過期備份清理失敗,請檢查相關配置!" >> ${log_file}
  147. exit 1
  148. fi
  149.  
  150. echo -e "**********************************************完成${db_name}數據庫備份**********************************************"
  151. cat > /tmp/mysql_backup.log << EOF
  152. mysql地址:${db_host}
  153. mysql端口:${db_port}
  154. mysql實例名:${db_name}
  155. 數據備份文件:${data_file}
  156. 定義備份文件:${object_file}
  157. EOF
  158. cat /tmp/mysql_backup.log
  159. echo -e "e[1;31m 以上信息保存在/tmp/mysql_backup.log文件下 e[0m"
  160. echo -e "*******************************************************************************************************************"
  161. echo ""
  162. }
  163.  
  164.  
  165. mysql_backup

分享一個自動編寫MySQL數據庫備份腳本

2. 自動編寫MySQL數據庫備份腳本

  1. #!/bin/bash
  2. ###################################################################
  3. # copyright by hwb
  4. # DATE: 2020-12-04
  5. # 用途:自動編寫MySQL備份腳本
  6. ###################################################################
  7.  
  8. #腳本外變量
  9. mysql_path="/home/scripts"
  10. script_name="mysql_backup.sh"
  11. mysql_date=`date +"%Y-%m-%d-%H:%M:%S"`
  12. #腳本內變量
  13. db_host="localhost"
  14. db_port="53306"
  15. db_name="dbname"
  16. db_user="root"
  17. db_pwd="xxxx"
  18. backup_path="/data/backup"
  19. bk_backup_path=`echo $backup_path | sed 's:/:\/:g'`
  20. bk_db_pwd=`echo $db_pwd | sed 's:/:\/:g'`
  21.  
  22. #調用函數庫
  23. [ -f /etc/init.d/functions ] && source /etc/init.d/functions
  24. export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
  25. source /etc/profile
  26.  
  27.  
  28. #root用戶執行腳本
  29. [ $(id -u) -gt 0 ] && echo "請用root用戶執行此腳本!" && exit 1
  30.  
  31.  
  32. #判斷目錄是否存在
  33. [ -d $mysql_path ] || mkdir -p $mysql_path
  34. [ -d $backup_path ] || echo "mysql數據庫備份目錄[$backup_path]不存在,請確認參數是否正確!"
  35. [ -d $backup_path ] || exit 1
  36.  
  37.  
  38. function bk_mysqlbackup(){
  39. echo ""
  40. echo -e "**************************自動配置mysql數據庫備份腳本[$mysql_path/$script_name]**************************"
  41. echo ""
  42. echo -e " Usage: $0 "
  43. echo ""
  44.  
  45. [ -f $mysql_path/$script_name ] && echo "${mysql_path}已存在腳本[${script_name}],請檢查相關配置!" && exit 1
  46.  
  47. wget https://app.fslgz.com/portal/api/public/fs/association/file/downLoad?uploadId=784001405093478400 -O /opt/mysql_backup_template.sh
  48. mv /opt/mysql_backup_template.sh $mysql_path/$script_name
  49.  
  50. #處理windows傳linux的腳本格式問題(注意空格位置不能多不能少)
  51. vi +':w ++ff=unix' +':q' ${mysql_path}/${script_name}
  52.  
  53. sed -i "s/localhost/${db_host}/g" $mysql_path/$script_name
  54. sed -i "s/3306/${db_port}/g" $mysql_path/$script_name
  55. sed -i "s/mysql_prod/${db_name}/g" $mysql_path/$script_name
  56. sed -i "s/root/${db_user}/g" $mysql_path/$script_name
  57. sed -i "s/password/${bk_db_pwd}/g" $mysql_path/$script_name
  58. sed -i "s#/data/backup#${bk_backup_path}#g" $mysql_path/$script_name
  59.  
  60. action "完成mysql備份腳本[$mysql_path/$script_name]編寫!" /bin/true
  61. chmod u+x $mysql_path/$script_name
  62.  
  63. #配置定時任務
  64. echo "30 11 * * * /bin/bash ${mysql_path}/${script_name} " >> /var/spool/cron/root
  65.  
  66. if [ $? -eq 0 ];then
  67. echo ""
  68. action "[$mysql_date]>>>完成數據庫備份定時任務配置" /bin/true
  69. else
  70. echo ""
  71. action "[$mysql_date]>>>定時任務配置失敗,請檢查相關配置!" /bin/false
  72. fi
  73.  
  74. echo ""
  75. echo "|------------------------------------定時任務內容------------------------------------|"
  76. crontab -l
  77. echo ""
  78. echo "|---------------mysql備份腳本[$mysql_path/$script_name]內容如下---------------|"
  79. cat $mysql_path/$script_name
  80. echo -e "************************************完成mysql數據庫備份腳本配置*****************************************"
  81. echo ""
  82. }
  83.  
  84.  
  85. bk_mysqlbackup

分享一個自動編寫MySQL數據庫備份腳本

3. 基于藍鯨平臺測試自動編寫備份腳本

測試成功..

分享一個自動編寫MySQL數據庫備份腳本

4. 測試備份的腳本是否有效

成功完成備份..

分享一個自動編寫MySQL數據庫備份腳本

原文地址:https://www.toutiao.com/i6902767275703845379/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成年免费大片黄在线观看岛国 | 国产理论视频在线观看 | 免费a级观看 | 日日操夜夜透 | 在火车上摸两乳爽的大叫 | 欧美一级黄色录相 | 91精品国产毛片 | 久久久精品视频免费看 | 色综合久久久久综合99 | 毛片在线免费观看视频 | 麻豆蜜桃在线观看 | 亚洲影院在线播放 | 欧美国产日韩在线观看成人 | 久久经典国产视频 | 精品一区二区三区中文字幕老牛 | 精品国产一区二区三区久久久蜜月 | 国产精选电影免费在线观看 | 4p嗯啊巨肉寝室调教男男视频 | 欧美久久久久久久久 | av免费在线观看免费 | 成人18免费观看 | 国产高潮国产高潮久久久91 | 亚洲小视频在线播放 | 一级做a爰片性色毛片2021 | 91极品在线 | av黄色片网站 | 国产亚洲美女精品久久久2020 | 久久精品亚洲一区二区三区观看模式 | 亚洲情视频 | 黄色成人小视频 | 国产精品视频免费在线观看 | 中国a级黄色片 | 射逼网站 | 国产午夜精品理论片a级探花 | 中文字幕一二三区芒果 | 日韩黄色免费在线观看 | 97人操 | 91成人在线网站 | 伊人在线视频 | www国产网站 | 久久久久久久亚洲精品 |