共计 1409 个字符,预计需要花费 4 分钟才能阅读完成。
随着业务量的增长,数据库也是成倍增长,原来一直使用的全库备份不再适合现在的数据库了,动辄就备份 10G-20G, 太占用磁盘空间,所以就考虑用更简洁更快速更节省磁盘空间的备份方法,这就想到了使用 binlog 日志来进行备份和恢复,下面是具体实施的方法:
环境介绍:
操作系统:CentOS 7.2
数据库:MySQL 5.6
一. 安装 Mysql 和改配置文件
安装就不具体介绍了,网上教程很多,配置文件需要添加以下选项:
vim /etc/my.cnf
log_bin = mysql-binlog #开启 binlog 日志功能, 默认在 mysql 的 datadir 目录下面
show variables like ‘log_bin’; #进入 Mysql 查看 binlog 日志是否开启
二. 创建实验数据
由于刚建的数据库,日志中没有数据,创建新的数据库和表格来进行实验
# 创建 t1 库
create database t1;
# 创建 tab1 表
create table t1.tab1(id int primary key auto_increment,name varchar(20));
# 插入两条数据
insert into t1.tab1(name) values(‘zhangsan’);
insert into t1.tab1(name) values(‘lisi’);
三. 进行全库备份和日志备份
# 进行全库备份, 并产生新日志
mysqldump -uroot -p123456 –flush-logs t1 > /opt/t1_`date +%Y%m%d`.sql
# 备份日志文件,全库备份前有几个日志就备份几个
cp /usr/local/mysql/binlog/mysql.bin.000001 /opt/
四. 模拟删除数据
delete from t1.tab1 where id=2;
# 插入新数据
insert into t1.tab1(name) values(‘wangwu’);
五. 备份 mysqldump 之后的 binlog 日志文件
cp /usr/local/mysql/binlog/mysql.bin.000002 /opt/
六. 用 Mysqldump 实现全库备份 +binlog 的数据还原
mysql -uroot -p123456 tab1 < /opt/t1_20170626.sql #还原删除前的全部数据,这时候应该有两条数据,zhangsan 和 lisi
mysqlbinlog -v /usr/local/mysql/binlog/mysql.bin.000002 #分析新开启的 binlog 日志文件,里面误操作的时间的起始位置和终止位置,只要跳过这一段时间即可
从 binlog 恢复数据
mysqlbinlog –stop-position=120 /opt/mysql.bin.000002|mysql -uroot -p123456
mysqlbinlog –start-position=291 /opt/mysql.bin.000002|mysql -uroot -p123456
查看恢复情况
select * from t1.tab1; #此时表中有三条数数据为恢复成功
手动备份恢复过程已经全部完成,下次说一说如何脚本化这个流程 http://www.linuxidc.com/Linux/2017-09/147037.htm
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-09/147036.htm