分享一个自动编写MySQL数据库备份脚本,值得收藏

其实主要是为了偷懒,所以就搞了一个自动编写MySQL数据库备份脚本,每次写备份脚本传参就可以了,仅供参考。

其实主要是为了偷懒,所以就搞了一个自动编写MySQL数据库备份脚本,每次写备份脚本传参就可以了,仅供参考。

其实主要是为了偷懒,所以就搞了一个自动编写MySQL数据库备份脚本,每次写备份脚本传参就可以了,仅供参考。

1. MySQL备份模板(上传到下载平台)

  1. #!/bin/bash
  2. #################################
  3. #copyrightbyhwb
  4. #DATE:2020-12-03
  5. #用途:MYSQL备份模板
  6. #################################
  7. #定义
  8. db_host=localhost
  9. db_port=3306
  10. db_name=mysql_prod
  11. db_user=root
  12. db_pwd=password
  13. backup_path="/data/backup"
  14. #view,function,procedure,event,trigger
  15. output_type='view,function,procedure,event,trigger'
  16. today=`date+"%Y%m%d-%H%M%S"`
  17. data_file=$backup_path/$db_name$today.sql
  18. object_file="${backup_path}/obj_${db_name}$today.sql"
  19. log_file="/home/scripts/mysql_backup.log"
  20. mysql_cmd="mysql-u${db_user}-p${db_pwd}-h${db_host}-P${db_port}"
  21. mysqldump_cmd="mysqldump-u${db_user}-p${db_pwd}-h${db_host}-P${db_port}$db_name"
  22. #调用函数库
  23. [-f/etc/init.d/functions]&&source/etc/init.d/functions
  24. exportPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
  25. source/etc/profile
  26. #Requireroottorunthisscript.
  27. [$(id-u)-gt0]&&echo"请用root用户执行此脚本!"&&exit1
  28. [-d$backup_path]||mkdir-p$backup_path
  29. #[!-n"$5"]&&echo-e"\033[31mUsage:$0IP端口实例名用户名'密码'\033[0m"&&exit1
  30. functionmysql_backup()
  31. {
  32. echo""
  33. echo-e"\033[33m***********************************************mysql数据库备份****************************************************\033[0m"
  34. echo-e"\033[36m**************备份数据库数据到$data_file**************\033[0m"
  35. #ApartialdumpfromaserverthathasGTIDswillbydefaultincludetheGTIDsofalltransactions,eventhosethatchangedsuppressedpartsofthedatabase.Ifyoudon'twanttorestoreGTIDs,pass--set-gtid-purged=OFF.Tomakeacompletedump,pass--all-databases--triggers--routines--events
  36. $mysqldump_cmd--single_transaction-R-E--flush-logs--master-data=2--set-gtid-purged=OFF>$data_file
  37. if[$?-eq0];then
  38. action"[$today]>>>完成数据库${db_name}数据备份"/bin/true
  39. echo"[$today]>>>完成数据库${db_name}数据备份">>${log_file}
  40. else
  41. action"[$today]>>>数据库${db_name}备份失败,请检查相关配置!"/bin/false
  42. echo"[$today]>>>数据库${db_name}备份失败,请检查相关配置!">>${log_file}
  43. exit1
  44. fi
  45. echo-e"\033[36m*******备份${db_name}函数、视图等定义到$object_file***********\033[0m"
  46. cat>$object_file<<EOF
  47. ouputobject‘sdefinitionfordatabase"$db_name"
  48. ouputtime:$(date"+%Y-%m-%d%H:%M:%S")
  49. ouputobjecttype:$output_type
  50. EOF
  51. echo"">>$object_file
  52. echo"">>$object_file
  53. #视图
  54. if[[$output_type==*"view"*]]
  55. then
  56. echo"--------------------------------------------------------------">>$object_file
  57. echo"--views">>$object_file
  58. echo"--------------------------------------------------------------">>$object_file
  59. #让MySQL不输出列名可以用-N或者--skip-column-names参数
  60. $mysql_cmd--skip-column-names\
  61. -e"selectconcat('SHOWCREATEVIEW',table_schema,'.',table_name,';')frominformation_schema.viewswheretable_schema='$db_name'"|\
  62. sed's/;/\\G/g'|$mysql_cmd$db_name|\
  63. sed's/CreateView:/kk_begin\n/g'|sed's/[]*character_set_client:/;\nkk_end/g'|\
  64. sed-n'/kk_begin/{:a;N;/kk_end/!ba;s/.*kk_begin\|kk_end.*//g;p}'>>$object_file
  65. fi
  66. #函数
  67. if[[$output_type==*"function"*]]
  68. then
  69. echo"--------------------------------------------------------------">>$object_file
  70. echo"--function">>$object_file
  71. echo"--------------------------------------------------------------">>$object_file
  72. $mysql_cmd--skip-column-names\
  73. -e"selectconcat('SHOWCREATEFUNCTION',routine_schema,'.',routine_name,';')frominformation_schema.routineswhereroutine_schema='$db_name'andROUTINE_TYPE='FUNCTION'"|\
  74. sed's/;/\\G/g'|$mysql_cmd$db_name|\
  75. sed's/CreateFunction:/kk_begin\ndelimiter$$\n/g'|sed's/[]*character_set_client:/$$\ndelimiter;\nkk_end/g'|\
  76. sed-n'/kk_begin/{:a;N;/kk_end/!ba;s/.*kk_begin\|kk_end.*//g;p}'>>$object_file
  77. fi
  78. #存储过程
  79. if[[$output_type==*"procedure"*]]
  80. then
  81. echo"--------------------------------------------------------------">>$object_file
  82. echo"--procedure">>$object_file
  83. echo"--------------------------------------------------------------">>$object_file
  84. $mysql_cmd--skip-column-names\
  85. -e"selectconcat('SHOWCREATEPROCEDURE',routine_schema,'.',routine_name,';')frominformation_schema.routineswhereroutine_schema='$db_name'andROUTINE_TYPE='PROCEDURE'"|\
  86. sed's/;/\\G/g'|$mysql_cmd$db_name|\
  87. sed's/CreateProcedure:/kk_begin\ndelimiter$$\n/g'|sed's/[]*character_set_client:/$$\ndelimiter;\nkk_end/g'|\
  88. sed-n'/kk_begin/{:a;N;/kk_end/!ba;s/.*kk_begin\|kk_end.*//g;p}'>>$object_file
  89. fi
  90. #事件
  91. if[[$output_type==*"event"*]]
  92. then
  93. echo"--------------------------------------------------------------">>$object_file
  94. echo"--event">>$object_file
  95. echo"--------------------------------------------------------------">>$object_file
  96. $mysql_cmd--skip-column-names\
  97. -e"selectconcat('SHOWCREATEEVENT',EVENT_SCHEMA,'.',EVENT_NAME,';')frominformation_schema.eventswhereEVENT_SCHEMA='$db_name'"|\
  98. sed's/;/\\G/g'|$mysql_cmd|\
  99. sed's/CreateEvent:/kk_begin\ndelimiter$$\n/g'|sed's/[]*character_set_client:/$$\ndelimiter;\nkk_end/g'|\
  100. sed-n'/kk_begin/{:a;N;/kk_end/!ba;s/.*kk_begin\|kk_end.*//g;p}'>>$object_file
  101. fi
  102. #触发器
  103. if[[$output_type==*"trigger"*]]
  104. then
  105. echo"--------------------------------------------------------------">>$object_file
  106. echo"--trigger">>$object_file
  107. echo"--------------------------------------------------------------">>$object_file
  108. $mysql_cmd--skip-column-names\
  109. -e"selectconcat('SHOWCREATETRIGGER',TRIGGER_SCHEMA,'.',TRIGGER_NAME,';')frominformation_schema.triggerswhereTRIGGER_SCHEMA='$db_name';"|\
  110. sed's/;/\\G/g'|$mysql_cmd$db_name|\
  111. sed's/SQLOriginalStatement:/kk_begin\ndelimiter$$\n/g'|sed's/[]*character_set_client:/$$\ndelimiter;\nkk_end/g'|\
  112. sed-n'/kk_begin/{:a;N;/kk_end/!ba;s/.*kk_begin\|kk_end.*//g;p}'>>$object_file
  113. fi
  114. #^M,youneedtotypeCTRL-VandthenCTRL-M
  115. sed-i"s/\^M//g"$object_file
  116. #清理过期备份
  117. find${backup_path}-mtime+10-typef-name'*.sql'-execrm-f{}\;
  118. if[$?-eq0];then
  119. action"[$today]>>>完成数据库${db_name}过期备份清理"/bin/true
  120. echo"[$today]>>>完成数据库${db_name}过期备份清理">>${log_file}
  121. else
  122. action"[$today]>>>数据库${db_name}过期备份清理失败,请检查相关配置!"/bin/false
  123. echo"[$today]>>>数据库${db_name}过期备份清理失败,请检查相关配置!">>${log_file}
  124. exit1
  125. fi
  126. echo-e"\033[33m**********************************************完成${db_name}数据库备份**********************************************\033[0m"
  127. cat>/tmp/mysql_backup.log<<EOF
  128. mysql地址:${db_host}
  129. mysql端口:${db_port}
  130. mysql实例名:${db_name}
  131. 数据备份文件:${data_file}
  132. 定义备份文件:${object_file}
  133. EOF
  134. cat/tmp/mysql_backup.log
  135. echo-e"\e[1;31m以上信息保存在/tmp/mysql_backup.log文件下\e[0m"
  136. echo-e"\033[33m*******************************************************************************************************************\033[0m"
  137. echo""
  138. }
  139. mysql_backup

分享一个自动编写MySQL数据库备份脚本,值得收藏

2. 自动编写MySQL数据库备份脚本

  1. #!/bin/bash
  2. ###################################################################
  3. #copyrightbyhwb
  4. #DATE:2020-12-04
  5. #用途:自动编写MySQL备份脚本
  6. ###################################################################
  7. #脚本外变量
  8. mysql_path="/home/scripts"
  9. script_name="mysql_backup.sh"
  10. mysql_date=`date+"%Y-%m-%d-%H:%M:%S"`
  11. #脚本内变量
  12. db_host="localhost"
  13. db_port="53306"
  14. db_name="dbname"
  15. db_user="root"
  16. db_pwd="xxxx"
  17. backup_path="/data/backup"
  18. bk_backup_path=`echo$backup_path|sed's:\/:\\\/:g'`
  19. bk_db_pwd=`echo$db_pwd|sed's:\/:\\\/:g'`
  20. #调用函数库
  21. [-f/etc/init.d/functions]&&source/etc/init.d/functions
  22. exportPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
  23. source/etc/profile
  24. #root用户执行脚本
  25. [$(id-u)-gt0]&&echo"请用root用户执行此脚本!"&&exit1
  26. #判断目录是否存在
  27. [-d$mysql_path]||mkdir-p$mysql_path
  28. [-d$backup_path]||echo"mysql数据库备份目录[$backup_path]不存在,请确认参数是否正确!"
  29. [-d$backup_path]||exit1
  30. functionbk_mysqlbackup(){
  31. echo""
  32. echo-e"\033[33m**************************自动配置mysql数据库备份脚本[$mysql_path/$script_name]**************************\033[0m"
  33. echo""
  34. echo-e"\033[36mUsage:$0\033[0m"
  35. echo""
  36. [-f$mysql_path/$script_name]&&echo"${mysql_path}已存在脚本[${script_name}],请检查相关配置!"&&exit1
  37. wgethttps://app.fslgz.com/portal/api/public/fs/association/file/downLoad?uploadId=784001405093478400-O/opt/mysql_backup_template.sh
  38. mv/opt/mysql_backup_template.sh$mysql_path/$script_name
  39. #处理windows传linux的脚本格式问题(注意空格位置不能多不能少)
  40. vi+':w++ff=unix'+':q'${mysql_path}/${script_name}
  41. sed-i"s/localhost/${db_host}/g"$mysql_path/$script_name
  42. sed-i"s/3306/${db_port}/g"$mysql_path/$script_name
  43. sed-i"s/mysql_prod/${db_name}/g"$mysql_path/$script_name
  44. sed-i"s/root/${db_user}/g"$mysql_path/$script_name
  45. sed-i"s/password/${bk_db_pwd}/g"$mysql_path/$script_name
  46. sed-i"s#\/data\/backup#${bk_backup_path}#g"$mysql_path/$script_name
  47. action"完成mysql备份脚本[$mysql_path/$script_name]编写!"/bin/true
  48. chmodu+x$mysql_path/$script_name
  49. #配置定时任务
  50. echo"3011***/bin/bash${mysql_path}/${script_name}">>/var/spool/cron/root
  51. if[$?-eq0];then
  52. echo""
  53. action"[$mysql_date]>>>完成数据库备份定时任务配置"/bin/true
  54. else
  55. echo""
  56. action"[$mysql_date]>>>定时任务配置失败,请检查相关配置!"/bin/false
  57. fi
  58. echo""
  59. echo"|------------------------------------定时任务内容------------------------------------|"
  60. crontab-l
  61. echo""
  62. echo"|---------------mysql备份脚本[$mysql_path/$script_name]内容如下---------------|"
  63. cat$mysql_path/$script_name
  64. echo-e"\033[33m************************************完成mysql数据库备份脚本配置*****************************************\033[0m"
  65. echo""
  66. }
  67. bk_mysqlbackup

分享一个自动编写MySQL数据库备份脚本,值得收藏

3. 基于蓝鲸平台测试自动编写备份脚本

测试成功..

分享一个自动编写MySQL数据库备份脚本,值得收藏

4. 测试备份的脚本是否有效

成功完成备份..

分享一个自动编写MySQL数据库备份脚本,值得收藏

©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经

(0)
打赏 微信扫码打赏 微信扫码打赏 支付宝扫码打赏 支付宝扫码打赏
清一色的头像清一色管理团队
上一篇 2023年5月6日 13:18
下一篇 2023年5月6日 13:18

相关推荐

发表评论

登录后才能评论

联系我们

在线咨询:1643011589-QQbutton

手机:13798586780

QQ/微信:1074760229

QQ群:551893940

工作时间:工作日9:00-18:00,节假日休息

关注微信