自建单机MySQL数据库备份方案
短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
使用全量备份SQL+BinLog进行数据恢复
一、环境
环境:Centos 6.5 ,MySQL 5.7.22, yum install 命令安装
二、备份
指定备份路径,指定 --master-data=2 参数备份时输出 MASTER_LOG_POS 位置信息
备份脚本:
1 #!/bin/bash
2
3 backup_path=/home/app/bak_mysql
4 password="password"
5
6 err() {
7 echo "[$(date +"%Y-%m-%d %H:%M:%S")]: $@" >&2 >>${backup_path}/fail_$(date +%Y%m%d).log
8 }
9 #错误后打印错误信息生成日志
10
11 mysqldump -uroot -p${password} --opt -R --events --triggers=true
12 --master-data=2 --single-transaction databaseName --ignore-table=databaseName.t_attachment
13 | gzip > ${backup_path}/backup_$(date +%Y%m%d).sql.gz
14 #备份同时压缩
15
16 if [ $? -ne 0 ];then
17 err $?
18 exit
19 fi
三、定时任务:
- 查看定时任务
[root@daf ~]# crontab -u username -l
no crontab for vfit
要查看所有用户的,只能根据 /etc/passwd 文件中的用户名一一列举了,可以用脚本。
for u in `cat /etc/passwd | cut -d":" -f1`;do crontab -l -u $u;done
给指定用户创建定时任务
1 [root@*** ~]# crontab -u username -e
2 no crontab for username - using an empty one
3 crontab: installing new crontab
4 [root@*** ~]# crontab -u username -l
5 0 2 */2 * * /home/username/backup_mysql/backup_mysql.sh
若指定用户无权限操作指定脚本则需进行授权: chmod u+x backup_mysql.sh
定时任务日志文件目录:/var/log/cron
三、恢复方案
1、准备好最新的备份文件进行全量恢复
2、找出增量文件
3、恢复数据
1 [vfit@iZ946xtgmogZ bak_mysql]$ grep MASTER_LOG_POS bak.sql
2 -- CHANGE MASTER TO MASTER_LOG_FILE="mysql-bin.000004", MASTER_LOG_POS=1633307;
3
4 [vfit@iZ946xtgmogZ bak_mysql]$ mysqlbinlog --no-defaults --database=bak --start-position=1633307 /var/lib/mysql/mysql-bin.000004 > ~/addbak.sql
5 //删除问题语句 执行恢复代码
6 [vfit@iZ946xtgmogZ bak_mysql]$ mysql -uroot -pgo2020@Vfangtuan bak < ~/bak.sql
7 [vfit@iZ946xtgmogZ bak_mysql]$ mysql -uroot -pgo2020@Vfangtuan bak < ~/addbak.sql
错误语句示例:
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341