dump:
在/home/下创建 back.sh 文件
#数据库用户名
dbuser='root'
#数据库用密码
dbpasswd='123456'
#需要备份的数据库,多个数据库用空格分开
dbname='db11 db22 db33'
#备份时间
backtime=`date +%Y%m%d%H%M%S`
#日志备份路径
logpath='/bak/mysqldata'
#数据备份路径
datapath='/bak/mysqldata'
#日志记录头部
echo ‘"${backtime},备份数据库表 ${dbname} 开始" >> ${logpath}/log.log
#正式备份数据库
for table in $dbname;do
/usr/bin/mysqldump -u${dbuser} -p${dbpasswd} -h 127.0.0.1 -R --single-transaction --quick --set-gtid-purged=OFF  --add-drop-database --master-data=2 -B ${table} |gzip > ${datapath}/${table}_${backtime}.sql.gz;
#备份成功以下操作
if [ "$?" == 0 ];then
#删除七天前备份,也就是只保存7天内的备份
#find $datapath -name "*.tar.bz2" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
find ${datapath} -name "*.sql.gz" -type f -mtime +1 -exec rm -rf {} \; > /dev/null 2>&1
echo "${backtime},数据库表 ${table} 备份成功!!" >> ${logpath}/log.log
else
#备份失败则进行以下操作
echo "${backtime},数据库表 ${table} 备份失败!!" >> ${logpath}/log.log
fi
done
赋予脚本权限:
chmod +x /home/mysql.sh
如果没有执行看下是不是cron没有启动
/sbin/service crond status
如果没有启动就启动
 /sbin/service crond start


输出日志文件:
‘20170803122401,备份数据库表 db1 db2 db3 开始
20170803122401,数据库表 db1 备份成功!!
20170803122401,数据库表 db2 备份成功!!
20170803122401,数据库表 db3 备份成功!!
‘20170803122501,备份数据库表 db1 db2 db3 开始
20170803122501,数据库表 db1 备份成功!!
20170803122501,数据库表 db2 备份成功!!
20170803122501,数据库表 db3 备份成功!!
方便我们查看dump过程,如果失败及时处理
定时执行:
设置定时任务:
  [root@localhost ~]#  crontab -e 或者:vi /etc/crontab 
编写定时任务信息:
     * 0 * * * /bin/sh /home/back.sh 
时间格式参考 点击打开链接  点击打开链接
     /home/back.sh是dump脚本位置
   上面这句代码,就是每天晚上12点使用sh命令自动执行我放在/home文件夹下面的back.sh文件。
以上就实现了每天晚上12点自动备份数据库的操作了,我们想要测试一下看看行不行的话,我们可以先设置每分钟一次,然后去mysql_back_path定义的目录查看我们的备份文件
每分钟的定时任务得这么写
    */1 * * * * /bin/sh /home/back.sh
编写完之后可以通过
[root@localhost ~]# crontab -l
来查看我们刚刚查看的创建的定时任务,如果有列出来那就说明我们的任务创建成功了。
查看指定备份目录下是否进行备份,
还原:
在sql文件所在的文件夹执行
[root@localhost mysqldata]# mysql -uroot -p < db22_20170803144801.sql
Enter password: 
即可还原,是不是很简单。当然万一有错误那就复杂了
一、
比如:数据库开启了gtid
在还原时就会提示:mysql dump ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.
解决方案1:http://blog.csdn.net/u010098331/article/details/50930520   reset master
2.dump时增加参数
--set-gtid-purged=OFF 
不设置gtid
二、生成的sql文件没有创建数据库语句 加  -B
参考学习:点击打开链接 点击打开链接

本文转载:CSDN博客