2018-05-30 17:32:55  202644 1

数据库MySQL备份方案设计(增量备份+全量备份)

 标签:   

数据库备份方案  全量备份+增量备份


 注意:此方案适用于对数据实时性要求不是很高的情况。实时性要求高 用阿里云 或者腾讯从数据库

 QQ截图20180530170937.jpg

备份流程:

1 每天对数据库进行一次全量备份

2 每隔一段时间对binlog进行备份  时间根据自己的业务进行设置

3 同时全量备份以及增量备份,会远程推送到文件服务器。

 

准备  一台mysql服务器  一台备份文件服务器

 

mysql 版本: 5.5.54

 

系统:CentOS Linux release 7.3.1611 (Core)

 

技术:

Shell    (脚本 打包备份数据库)

Crontab(定时任务备份本地数据库)

Rsync  (远程推送)


安装rsync

 

备份服务器配置安装

 

yum install rsync  -y

 

vim /etc/rsyncd.conf

 

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

uid = root

gid = root

use chroot = no

max connections = 200

timeout = 300

 

[mysql-back]

path = /var/mysql-back

ignore errors

read only = false

write only = no

list = false

hosts allow = 192.168.1.0/24

auth users = mysql

secrets file = /etc/rsyncd.passwd

 

vim /etc/rsyncd.passwd

 

mysql:123456

 

chmod 600 /etc/rsyncd.passwd

 

启动

 

rsync         --daemon

 

mysql服务器客户端安装

 

yum install rsync  -y

 

 vim /etc/rsyncd.passwd

 

mysql:123456

 

chmod 600 /etc/rsyncd.passwd

 

客户端测试推送

 

rsync  -av  shop.tar.gz  mysql@192.168.1.18::mysql-back  --password-file /etc/rsyncd.passwd

命令实现全量备份  并压缩

 

/usr/local/mysql/bin/mysqldump -u用户名 -p密码  --flush-logs --single-transaction  数据库名 |/bin/gzip >shop.tar.gz

 

--flush-logs  切割日志

--single-transaction 加锁

 

全量备份脚本

#!/bin/bash
USER=root
PASSWORD=123456
DB=shop
FILE=`date  +"%y-%m-%d"`-$DB.tar.gz
PATH=/home/mysql_back/
IP=192.168.1.18
 
 
/usr/local/mysql/bin/mysqldump -u$USER -p$PASSWORD  --flush-logs --single-transaction $DB |/bin/gzip >$PATH$FILE
/usr/bin/rsync  -qav  $PATH$FILE  mysql@$IP::mysql-back  --password-file /etc/rsyncd.passwd


增量备份脚本

#!/bin/bash
DIR=/usr/local/mysql/data/
BIN_FILE=`tail -1 /usr/local/mysql/data/mysql-bin.index |cut -c 3-`
IP=192.168.1.18
/usr/bin/rsync  -qav  $DIR$BIN_FILE  mysql@$IP::mysql-back  --password-file /etc/rsyncd.passwd


备份恢复演练

先恢复全量备份 在恢复binlog日志

导入全量备份

gunzip <全量备份文件 |mysql -u用户名 -p密码  数据库名

 

导入bin-log

 

bin-log转化成sql语句

 

/usr/local/mysql/bin/mysqlbinlog  mysql-bin.000020  > bin.sql

进入到数据库导入bin.sql即可

 

source bin.sql

 

定时任务设置:

 

编辑定时任务

 

crontab  -e   //编辑

 

 

*     *    *    *     *       command

                     命令行

 

 

分钟(0-59
小时(0-24
日期(1-31
月份(1-12
星期几(0-6,其中0代表星期日)

 

*/1     *    *    *     *        command  每分钟执行一次

30     *    *    *     *         command   130  230执行

30     2    *    *     *        command   每天的230执行

30     2    10    *     *       command   10号的230执行

30     2    10    6     *       command   610号的230执行

30     2    *    *     2       command   周二的230执行

 

 

crontab  -l

 

10  4 * * *    /root/mysql_full.sh  >/dev/null  2>&1

 

15  4 * * *   /root/mysql_bin.sh   >/dev/null  2>&1

 

 注意:备份完后  要经常的进行恢复演练。。本文章配套视频教程扫面下面图片二维码。


PHP开发进阶加薪必备技能之linux运维架构开发系列视频教程 570×420mm.jpg

1 条留言此文章没有人评论

给我留言

评论内容