注意:必须首先声明一下,此方案知识数据库备份方案的入门级设计,大神请移步。

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

注意:此方案适用于对数据实时性要求不是很高的情况。并且数据量不要太大。

备份流程:

  1. 每天对数据库进行一次全量备份
  2. 每隔一段时间对binlog进行备份 时间根据自己的业务进行设置
  3. 同时全量备份以及增量备份,会远程推送到文件服务器。

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

mysql 版本: 5.5.54

系统:CentOS Linux release 7.3.1611 (Core)

技术:

  1. Shell (脚本 打包备份数据库)
  2. Crontab(定时任务备份本地数据库)
  3. rsync (远程推送)

安装rsync

备份服务器配置安装

yum install rsync -y

vim /etc

pid file = /var/run

lock file = /var/run

log file = /var/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

vim /etc

mysql:123456

chmod 600 /etc

启动

rsync –daemon

mysql服务器客户端安装

yum install rsync -y

vim /etc

mysql:123456

chmod 600 /etc

客户端测试推送

rsync -av mysql@192.168.1.18::mysql-back –password-file /etc

命令实现全量备份 并压缩

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

–flush-logs 切割日志

–single-transaction 加锁

全量备份脚本

#!/bin/bash

USER=root

PASSWORD=123456

DB=shop

FILE=`date +"%y-%m-%d"`-$DB.

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

增量备份脚本

#!/bin/bash

DIR=/usr/local/mysql/data/

BIN_FILE=`tail -1 /usr/local/mysql/data |cut -c 3-`

IP=192.168.1.18

/usr/bin/rsync -qav $DIR$BIN_FILE mysql@$IP::mysql-back –password-file /etc

备份恢复演练

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

导入全量备份

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

导入bin-log

bin-log转化成sql语句

/usr/local/mysql/bin/mysqlbinlog my > 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 1:30 2:30执行

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

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

30 2 10 6 * command 6月10号的2:30执行

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

crontab -l

10 4 * * * /roo >/dev/null 2>&1

15 4 * * * /roo >/dev/null 2>&1

注意:备份完后 要经常的进行恢复演练。。

相关推荐