MySQL数据库备份Shell脚本

  

此脚本将远程主机或者本地主机上的数据库的数据备份到本地。

备份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   null

MySQL数据库备份Shell脚本