自建单机MySQL数据库备份方案

database

使用全量备份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

6err() {

7echo"[$(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

16if [ $? -ne 0 ];then

17 err $?

18 exit

19fi

三、定时任务:

  1.  查看定时任务

crontab 命令选项基本只对用户操作的选项:

-u 指定一个用户

-l 列出某个用户的任务计划

-r 删除某个用户的任务

-e 编辑某个用户的任务

示例:

  查看指定用户的定时任务

[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

3crontab: installing new crontab

4 [root@*** ~]# crontab -u username -l

502 */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

  错误语句示例:

以上是 自建单机MySQL数据库备份方案 的全部内容, 来源链接: utcz.com/z/534402.html

回到顶部