此脚本将远程主机或者本地主机上的数据库的数据备份到本地。
备份MySQL数据库除了information_schema, performance_schema, MySQL自带库的其他生产库。
备份时将MySQL数据库中的每一个库都进行备份(穷举),生成一个包含数据结构和数据的备份文件和一个仅包含数据结构的备份文件。
通常此脚本将结合crontab一起使用,crontab的使用方法已经在脚本中列出。
允许用户修改的变量如下:
mysql_host=127.0.0.1 #,主机地址 mysql_port=3306,#,主机端口号 mysql_username=dev #,备份时使用的用户名 mysql_password=dev #,备份时使用的用户名的密码 mysql_basedir=/usr/地方/mysql #,mysqlbase目录,如果是自定义安装的mysql,则修改此处,使用软件包安装的mysql则无需修改此处 save_old_backups_for_days=5 #,保存备份文件的天数 mysql_backup_dir=/数据/备份/db/mysql #,mysql备份路径
脚本内容如下:
# !/usr/bin/env bash #,Function 描述: #,Backup MySQL  databases for ,, Backup schema 以及schema with data 拷贝one 行动。 #,用法: #,bash BackupMysqlByDate.sh #,Birth 时间: #,2016 - 06 - 24,17:44:43.895515929 + 0800 #,作者: #,Open Source  Software written by “Guodong Ding & lt; dgdenterprise@gmail.com>” #,博客:http://dgd2010.blog.51cto.com/#,Github: https://github.com/DingGuodong #,其它: ——#,crontabs configuration 以及scripts for running periodical 工作 #,SHELL=/bin/bash #,路径=/sbin:/bin:/usr/sbin:/usr/bin #,MAILTO=根 #,回家=/#,For details 阅读man 4, crontab中 #,Example of  job 定义: #,。- - - - - - - - - - - - - - - - -,minute (0,安康;59) #,|,。- - - - - - - - - - - -安康;hour (0,安康,23) #,|,,|,,。- - - - - - - - - - -,day of month (1,安康;31) | #,|,还以为;,|,,。- - - - - -安康;month (1,安康;12),1月,2月,3月,趁机apr … #,|,,|,,|,,|,,。- - - - -,day of week (0,安康;6),(7)周日=0,或是,一、太阳,星期一,星期二,星期三,星期四,星期五,坐 | #,|,还以为;,|,,|,| #,*,,*,,*,,*,,*,user-name command 用be 执行 #,m h , dom mon dow ,命令 #,execute 提醒11:59 per 星期天 #,59岁,11,*,*,*/0,/路径//BackupMysqlByDate.sh 在/tmp/log_backup_mysql_美元(date +“Y \ \ % % m \ % d \ % H \ % m \ % S ") . log #,或 #,execute 提醒23:59 per 一天 #,59岁,23日,*,*,*,/路径//BackupMysqlByDate.sh 在/tmp/log_backup_mysql_美元(date +“Y \ \ % % m \ % d \ % H \ % m \ % S ") . log 用户=" id 联合国” LOGNAME=" $ USER " if [, UID 美元;-ne 0,),然后 ,,,echo “警告:,Running as a non-root 用户,,\“美元LOGNAME \”只Functionality may be 不可用只Only root 还要use some commands 或是选项” fi old_PATH=$路径 declare -x 路径="/usr/地方/sbin:/usr/地方/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/游戏:/usr/地方/游戏” mysql_host=127.0.0.1 mysql_port=3306 mysql_username=dev mysql_password=dev mysql_basedir=/usr/地方/mysql save_old_backups_for_days=5 mysql_bin_mysql=$ {mysql_basedir}/bin/mysql mysql_bin_dump=$ {mysql_basedir}/bin/, mysqldump mysql_backup_dir=/数据/备份/db/mysql date_format_type_dir=$ (date + Y % - % - % d) date_format_type_file=$ Y (date + % % m % d % H % % S) echo “- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -” echo “=祝辞,do backup scheduler start at $ Y (date + % % m % d % H % % S)” #,待办事项,check user 特权 #,check user  if have “重载、事件”,权限等 #,backup 作用 ALTER  #, GRANT 改变;习惯,创建、CREATE 常规,CREATE TEMPORARY 表、CREATE 看来,删除掉,执行索引,插入,LOCK 表、选择、更新、SHOW 看来,重载,EVENT 提醒*。*,用“开发”@“%”; #,FLUSH 特权; [,-d $ {mysql_basedir},),,,, mysql_datadir=$ {mysql_basedir}/data | |, mysql_datadir=/var/lib/mysql [,-x $ {mysql_bin_mysql},], | |, mysql_bin_mysql=mysql [,-x $ {mysql_bin_dump},], | |, mysql_bin_dump=, mysqldump [,-d $ {mysql_backup_dir}/$ {date_format_type_dir},], | |, mkdir -p $ {mysql_backup_dir}/$ {date_format_type_dir} mysql_databases_list=" " if [, -d $ {mysql_datadir},];然后 ,,,mysql_databases_list=發s -p $ {mysql_datadir}, |, grep /, | tr -d /' 其他的 null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null nullMySQL数据库备份Shell脚本