1 设置好crontab 定时任务备份
#每天备份三次数据库 0 5,15,22 * * * sh /data/script/alldatabase_back.sh &>/dev/null #每天2点备份 0 2 * * * sh /data/script/dev_alldatabase_back.sh &>/dev/null
2 开始写备份脚本
#!/bin/bash backupdir=/data/backup time=`date +%Y-%m-%d-%H-%M` if [ ! -e /data/backcup ];then mkdir -p /data/backup fi /usr/bin/mysqldump --single-transaction --flush-logs --skip-add-drop-table -uroot -p'root@xx' 数据库 |bzip2 > $backupdir/数据库$time.sql.bz2 # 清理超过7天没使用的文件 find $backupdir -name "数据库*.sql.bz2" -type f -mtime +7 -exec rm {} \; > /dev/null 2>&1 批注: --single-transaction参数的作用,设置事务的隔离级别为可重复读,即REPEATABLE READ,这样能保证在一个事务中所有相同的查询读取到同样的数据,也就大概保证了在dump期间,如果其他innodb引擎的线程修改了表的数据并提交,对该dump线程的数据并无影响 --skip-add-drop-table ---取消每个数据表创建之前添加drop数据表语句(默认每个表之前存在drop语句) --flush-logs 在开始导出前刷新服务器的日志文件 最后导出的数据库备份文件 就是这个 xx2019-11-14-02-00.sql.bz2 mysql -u 用户名 -p密码 数据库名 < 备份文件.sql 恢复某个节点数据
© 著作权归作者所有
举报
发表评论
0/200