mysql增量备份具体步骤_记一次mysql全量备份、增量备份的学习过程

增量备份依赖于全量备份,因此首先要有全量备份,在全量备份的基础上,添加增量备份。

为了方便操作,我们先来做些准备工作。在客户端直接输入mysql、mysqldump、mysqladmin、mysqlbinlog。看是否能直接出来。

[root@develop mysqlbackup]# mysql

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection idis 15Server version:5.7.20-log MySQL Community Server (GPL)**********mysql>

[root@develop mysqlbackup]# mysqldump

Usage: mysqldump [OPTIONS] database [tables]

OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]

OR mysqldump [OPTIONS] --all-databases [OPTIONS]

如果提示 :未找到命令,我们可以创建软链接

# /usr/local/mysql/ 为mysql的安装路径

[root@develop ~]# ln -s /usr/local/mysql/bin/mysql /usr/bin

[root@develop ~]# ln -s /usr/local/mysql/bin/mysqladmin /usr/bin

好了,接下来,我们将正式进入话题。

第一步 :修改my.cnf

(1)添加如下配置

# log_bin为增量备份位置,我这里设置为/var/mysqlbackup/,binlog是它的文件名

log_bin=/var/mysqlbackup/binlog

# server-id 必须要有,可以任意赋值。如果缺失,则无法启动服务。

server-id=127

(2)修改完之后,重启服务,使其生效,生效后,会有下列两个初始化文件

2e3215345a8bdc3bfc39a74a04086b93.png

第二步:建立全量备份

mysqldump -uroot -p --all-databases --flush-logs --delete-master-logs --single-transaction -R > /data/mysqlfullbackup/prm1.sql -- 数据全量备份

说明:

/data/mysql/backups/prm1.sql  存放路径,自定义

-u 账户             -p 密码

--all-databases, -A    转储所有数据库中的所有表。会带有CREATE DATABASE 语句。

--databases   -B           第一个名称参数视为数据库名称

--tables                        表名

--add-drop-database  在每个CREATE DATABASE语句之前添加DROP DATABASE语句

--flush-logs, -F          在开始转储之前刷新MySQL服务器日志文件。

--delete-master-logs   删除前面二进制日志。此选项自动启用 --master-data。此参数可加可不加

--single-transaction    此选项将事务隔离模式设置为, REPEATABLE READ并START TRANSACTION在转储数据之前将SQL语句发送到服务器。它仅对事务表有用,例如InnoDB

--routines, -R           在输出中包含转储数据库的存储例程(过程和函数)

-E,  --events              任务

e81f74acf27615301cbbd1f57a6676d6.png

下面开始测试

第三步,往一个表里面增加数据、删除数据

(1)先建一个测试表,有以下原始数据

1d47c3fc75403eed181e83a9397c672b.png

(2)先添加一些记录

6c2e4fe4a58ef556eaae53d582fefcfd.png

(3)删除一些记录

28fdd16e4ea5d752428030360bdaed83.png

第四步:刷新日志

由于恢复全量备份的操作会存在日志里,所以先刷新日志,这样恢复全量备份的操作会存在新的日志里,有利于跟前面的增量备份区分开来

使用以下语句

mysqladmin -uroot -p flush-logs;

或者

[root@develop ~]# mysql

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection idis 42.....................mysql>flush logs;

Query OK,0 rows affected (0.14 sec)

ec4c95e499ca3a1b785a0ef26debe42d.png

第五步:恢复全量备份

mysql -uroot -p < /data/mysql/backups/prm1.sql

此步操作有点慢,耐心等候,完成后,我们查看表,已经还原到初始状态

221242544b13aa03f44756df0f5c661e.png

第六步:增量备份还原

(1)查看日志

①将其转化为sql文件

mysqlbinlog --base64-output=decode-rows -vv binlog.000002 > temp.sql

--base64-output使用base-64编码打印二进制日志条目,decode-rows

--verbose重建行事件并将其显示为注释的SQL语句。如果给出此选项两次(通过传入“-vv”或“--verbose --verbose”),则输出包括用于指示列数据类型和一些元数据的注释,以及如果已配置的行查询日志事件。

②找位置和时间节点

找自己想恢复的某个点,我这里找到最后一个插入语句节点

13381327926c0260b853e2964a6c8814.png

③恢复节点

mysqlbinlog --stop-datetime="2019-01-11 11:10:54" binlog.000002 | mysql -uroot -p

mysqlbinlog--stop-position=1449 binlog.000002 | mysql -uroot -p

--start-datetime 在时间戳等于或晚于datetime参数的第一个事件处开始读取二进制日志

--start-position 在位置等于或大于的第一个事件处开始读取二进制日志

--stop-datetime 在时间戳等于或晚于datetime参数的第一个事件处停止读取二进制日志

--stop-position 在位置等于或大于的第一个事件处停止读取二进制日志

c633ad79ab2e079b0303eaa0dbc7c622.png

恢复后面的

mysqlbinlog --start-position=1449 binlog.000002 | mysql -uroot -p

9c0fbac09410adaf4abecddf3c93c1d3.png

最后一步:flush logs 刷新日志,开始新的操作

知识点:

要查看所有二进制日志文件的列表,请使用以下语句:

mysql> SHOW BINARYLOGS;

要确定当前二进制日志文件的名称,请发出以下语句:

mysql> SHOW MASTER STATUS;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值