mysqlbinlog增量恢复
[ 2021-04-30 16:24:38 | 作者: admin ]
p.s. mysqlbinlog可以按照pos和datetime,指定database,来浏览和导出为sql文件,也可以直接传递给mysql直接执行sql语句
mysqlbinlog工具的作用是解析mysql的二进制binlog的日志内容,把二进制日志解析成可以在MySQL数据库里执行的SQL语句。
1.mysql的binlog日志是什么
mysql数据目录下的xxx-bin.000001这样的文件就是mysql的binlog日志
2.mysql的binlog日志的作用
mysql的binlog日志用于记录MySQL内部的增删改等操作,也就是对MySQL数据库更新内容的记录(对数据库的改动),对数据库进行查询的语句(如以show、select开头的语句),不会被binlog日志记录。binlog日志的主要作用是数据库的主从复制以及数据灾难后的增量恢复。
3.mysql的binlog日志功能如何开启
在mysql的配置文件my.cnf中,增加log_bin参数即可开启binlog日志,也可以通过赋值来指定binlog日志的文件名。
vi /etc/my.cnf
4.mysqlbinlog工具解析binlog日志
binlog日志是二进制格式的,不能使用查看文本工具的命令(比如,cat、vi等)查看。
4.1.解析指定库的binlog日志
利用“mysqlbinlog -d”参数解析指定库的binlog日志:
mysqlbinlog -d oldboy mysql-bin.000004 -r bin.sql #-d指定库,-r指定生成的文件
grep -i insert bin.sql #过滤内容
mysqlbinlog可以指定-d实现分库导出binlog,如果使用-d参数,那么在更新数据时,必须要有use库名,才能分出指定库的binlog,例如,写入数据库的语句必须采用的写法。
这种写法是不行的:
4.2.按照位置截取binlog内容
按照位置截取binlog内容的优点是精确,但是要花费时间寻找位置。
指定了开始位置,而不指定结束位置:
指定了结束位置,而不指定开始位置:
所谓的位置点,就是mysqlbinlog解析文件里的不同行行首的“# at 数字”标识的数据。
4.3.按照时间截取binlog内容
按照时间截取binlog内容的缺点是模糊、不准确,截取的内容会丢失部分数据,精确到秒,1秒也可能会有很多条语句。
截取mysql-bin.000009文件中从‘2014-10-16 17:14:15'时间到’2014-10-26 17:15:15‘时间的数据
指定了开始时间,而不指定结束时间:
指定了结束时间,而不指定开始时间:
所谓的时间点,就是mysqlbinlog解析文件里的不同行行首的“#170303 9:44:22“标识的数据
5.mysqlbinlog命令常用参数
mysqlbinlog工具的作用是解析mysql的二进制binlog的日志内容,把二进制日志解析成可以在MySQL数据库里执行的SQL语句。
1.mysql的binlog日志是什么
mysql数据目录下的xxx-bin.000001这样的文件就是mysql的binlog日志
2.mysql的binlog日志的作用
mysql的binlog日志用于记录MySQL内部的增删改等操作,也就是对MySQL数据库更新内容的记录(对数据库的改动),对数据库进行查询的语句(如以show、select开头的语句),不会被binlog日志记录。binlog日志的主要作用是数据库的主从复制以及数据灾难后的增量恢复。
3.mysql的binlog日志功能如何开启
在mysql的配置文件my.cnf中,增加log_bin参数即可开启binlog日志,也可以通过赋值来指定binlog日志的文件名。
vi /etc/my.cnf
[mysqld]
log_bin=/data/mysql/mysql-bin
log_bin=/data/mysql/mysql-bin
4.mysqlbinlog工具解析binlog日志
binlog日志是二进制格式的,不能使用查看文本工具的命令(比如,cat、vi等)查看。
4.1.解析指定库的binlog日志
利用“mysqlbinlog -d”参数解析指定库的binlog日志:
mysqlbinlog -d oldboy mysql-bin.000004 -r bin.sql #-d指定库,-r指定生成的文件
grep -i insert bin.sql #过滤内容
mysqlbinlog可以指定-d实现分库导出binlog,如果使用-d参数,那么在更新数据时,必须要有use库名,才能分出指定库的binlog,例如,写入数据库的语句必须采用的写法。
use oldboy;
insert into test values(1,'oldboy');
insert into test values(1,'oldboy');
这种写法是不行的:
insert into oldboy.test values(2,'oldgirl');
4.2.按照位置截取binlog内容
按照位置截取binlog内容的优点是精确,但是要花费时间寻找位置。
mysqlbinlog mysql-bin.000009 --start-position=365 --stop-position=456 -r pos.sql
指定了开始位置,而不指定结束位置:
mysqlbinlog mysql-bin.000009 --start-position=365 -r pos.sql
指定了结束位置,而不指定开始位置:
mysqlbinlog mysql-bin.000009 --start-position=456 -r pos.sql
所谓的位置点,就是mysqlbinlog解析文件里的不同行行首的“# at 数字”标识的数据。
4.3.按照时间截取binlog内容
按照时间截取binlog内容的缺点是模糊、不准确,截取的内容会丢失部分数据,精确到秒,1秒也可能会有很多条语句。
截取mysql-bin.000009文件中从‘2014-10-16 17:14:15'时间到’2014-10-26 17:15:15‘时间的数据
mysqlbinlog mysql-bin.000009 --start-datetime='2014-10-16 17:14:15' --stop=datetime='2014-10-26 17:15:15' -r time.sql
指定了开始时间,而不指定结束时间:
mysqlbinlog mysql-bin.000009 --start-datetime='2014-10-16 17:14:15' -r time.sql
指定了结束时间,而不指定开始时间:
mysqlbinlog mysql-bin.000009 --stop=datetime='2014-10-26 17:15:15' -r time.sql
所谓的时间点,就是mysqlbinlog解析文件里的不同行行首的“#170303 9:44:22“标识的数据
5.mysqlbinlog命令常用参数
[最后修改由 admin, 于 2021-04-30 16:36:35]
评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=2782
这篇日志没有评论。
此日志不可发表评论。