mysqldump备份结合binlog日志恢复

http://hongge.blog.51cto.com/

MySQL备份一般采取全库备份加日志备份的方式,例如每天执行一次全备份,每小时执行一次二进制日志备份。这样在MySQL故障后可以使用全备份和日志备份将数据恢复到最后一个二进制日志备份前的任意位置或时间。

1、binlog介绍

mysql的二进制日志记录着该数据库的所有增删改的操作日志(前提是要在自己的服务器上开启binlog),还包括了这些操作的执行时间。为了显示这些二进制内容,我们可以使用mysqlbinlog命令来查看。

Binlog的用途

1:主从同步

2:恢复数据库

开启binary log功能

通过编辑my.cnf中的log-bin选项可以开启二进制日志;形式如下:

log-bin [=DIR/[filename]]

其中,DIR参数指定二进制文件的存储路径;filename参数指定二级制文件的文件名,其形式为filename.number,number的形式为000001、000002等。每次重启mysql服务或运行mysql> flush logs;都会生成一个新的二进制日志文件,这些日志文件的number会不断地递增。除了生成上述的文件外还会生成一个名为filename.index的文件。这个文件中存储所有二进制日志文件的清单又称为二进制文件的索引

配置保存以后重启mysql的服务器,用mysql> show variables like ‘log_bin‘;查看bin-log是否开启,如图:

查看产生的binary log 注:查看binlog内容是为了恢复数据
bin-log因为是二进制文件,不能通过文件内容查看命令直接打开查看,mysql提供两种方式查看方式,在介绍之前,我们先对数据库进行一下增删改的操作,否则log里边数据有点空。

#mysql -uroot -p -e "reset master"

#mysql -uroot -p -e "create database test"

#mysql -uroot -p -e "use test;create table tb1(id int primary key auto_increment,name varchar(20))"

#mysql -uroot -p -e "insert into test.tb1(name) values(‘lisi‘)"

#mysql -uroot -p -e "insert into test.tb1(name) values(‘zhangsan‘)"

重新开始一个新的日志文件

#mysql -uroot -p -e "flush logs"

#mysql -uroot -p -e "delete from test.tb1 where id=2"

#mysql -uroot -p -e "insert into test.tb1(name) values(‘tom‘)"

# mysql -uroot -p -e "select * from test.tb1"

Enter password:

+----+------+

| id | name |

+----+------+

| 1 | lisi |

| 3 | tom |

+----+------+

查看MySQL Server上的二进制日志

mysql> show binary logs;

+------------------+-----------+

| Log_name | File_size |

+------------------+-----------+

| mysql-bin.000001 | 1087 |

| mysql-bin.000002 | 673 |

+------------------+-----------+

查看二进制日志信息的命令:

语法格式:SHOW BINLOG EVENTS [IN ‘log_name‘] [FROM pos] [LIMIT [offset,] row_count]

查看二进制日志中的事件

mysql> show binlog events;

默认显示可找到的第一个二进制日志文件中的事件,包含了日志文件名、事件的开始位置、事件类型、结束位置、信息等内容

+------------------+------+----------------+-----------+-------------+----------------------------------------------------------------------------------+

| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |

+------------------+------+----------------+-----------+-------------+----------------------------------------------------------------------------------+

| mysql-bin.000001 | 4 | Format_desc | 1 | 123 | Server ver: 5.7.13-log, Binlog ver: 4 | //此事件为格式描述事件

| mysql-bin.000001 | 123 | Previous_gtids | 1 | 154 | |

| mysql-bin.000001 | 154 | Anonymous_Gtid | 1 | 219 | SET @@SESSION.GTID_NEXT= ‘ANONYMOUS‘ |

| mysql-bin.000001 | 219 | Query | 1 | 313 | create database test | //为查询事件

| mysql-bin.000001 | 313 | Anonymous_Gtid | 1 | 378 | SET @@SESSION.GTID_NEXT= ‘ANONYMOUS‘ |

| mysql-bin.000001 | 378 | Query | 1 | 520 | use `test`; create table tb1(id int primary key auto_increment,name varchar(20)) |

| mysql-bin.000001 | 520 | Anonymous_Gtid | 1 | 585 | SET @@SESSION.GTID_NEXT= ‘ANONYMOUS‘ |

| mysql-bin.000001 | 585 | Query | 1 | 653 | BEGIN | //为查询事件,事务开始

| mysql-bin.000001 | 653 | Table_map | 1 | 702 | table_id: 110 (test.tb1) | //为表映射事件

| mysql-bin.000001 | 702 | Write_rows | 1 | 747 | table_id: 110 flags: STMT_END_F | //为我们执行的insert事件

| mysql-bin.000001 | 747 | Xid | 1 | 778 | COMMIT /* xid=2052 */ | //Xid时间是自动提交事务的动作

| mysql-bin.000001 | 778 | Anonymous_Gtid | 1 | 843 | SET @@SESSION.GTID_NEXT= ‘ANONYMOUS‘ |

| mysql-bin.000001 | 843 | Query | 1 | 911 | BEGIN |

| mysql-bin.000001 | 911 | Table_map | 1 | 960 | table_id: 110 (test.tb1) |

| mysql-bin.000001 | 960 | Write_rows | 1 | 1009 | table_id: 110 flags: STMT_END_F |

| mysql-bin.000001 | 1009 | Xid | 1 | 1040 | COMMIT /* xid=2055 */ |

| mysql-bin.000001 | 1040 | Rotate | 1 | 1087 | mysql-bin.000002;pos=4 | //为日志轮换事件,是我们执行flush logs开启新日志文件引起的。

查看指定的二进制日志中的事件

mysql> show binlog events in ‘mysql-bin.000002‘;

+------------------+-----+----------------+-----------+-------------+---------------------------------------+

| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |

+------------------+-----+----------------+-----------+-------------+---------------------------------------+

| mysql-bin.000002 | 4 | Format_desc | 1 | 123 | Server ver: 5.7.13-log, Binlog ver: 4 |

| mysql-bin.000002 | 123 | Previous_gtids | 1 | 154 | |

| mysql-bin.000002 | 154 | Anonymous_Gtid | 1 | 219 | SET @@SESSION.GTID_NEXT= ‘ANONYMOUS‘ |

| mysql-bin.000002 | 219 | Query | 1 | 287 | BEGIN |

| mysql-bin.000002 | 287 | Table_map | 1 | 336 | table_id: 110 (test.tb1) |

| mysql-bin.000002 | 336 | Delete_rows | 1 | 385 | table_id: 110 flags: STMT_END_F |

| mysql-bin.000002 | 385 | Xid | 1 | 416 | COMMIT /* xid=2068 */ |

| mysql-bin.000002 | 416 | Anonymous_Gtid | 1 | 481 | SET @@SESSION.GTID_NEXT= ‘ANONYMOUS‘ |

| mysql-bin.000002 | 481 | Query | 1 | 549 | BEGIN |

| mysql-bin.000002 | 549 | Table_map | 1 | 598 | table_id: 110 (test.tb1) |

| mysql-bin.000002 | 598 | Write_rows | 1 | 642 | table_id: 110 flags: STMT_END_F |

| mysql-bin.000002 | 642 | Xid | 1 | 673 | COMMIT /* xid=2071 */ |

该命令还包含其他选项以便灵活查看

mysql> show binlog events in ‘mysql-bin.000002‘ from 219 limit 1,3;

+------------------+-----+-------------+-----------+-------------+---------------------------------+

| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |

+------------------+-----+-------------+-----------+-------------+---------------------------------+

| mysql-bin.000002 | 287 | Table_map | 1 | 336 | table_id: 110 (test.tb1) |

| mysql-bin.000002 | 336 | Delete_rows | 1 | 385 | table_id: 110 flags: STMT_END_F |

| mysql-bin.000002 | 385 | Xid | 1 | 416 | COMMIT /* xid=2068 */ |

SHOW BINARY LOGS 等价于 SHOW MASTER LOGS
PURGE BINARY LOGS用于删除二进制日志,如:
PURGE BINARY LOGS TO ‘mysql-bin.00010‘; //把这个文件之前的其他文件都删除掉
PURGE BINARY LOGS BEFORE ‘2016-08-28 22:46:26‘;//把指定时间之前的二进制文件删除了
RESET MASTER 与 RESET SLAVE
前者清空index文件中列出的所有二进制日志,重置index文件为空,并创建一个新的二进制日志文件,一般用于MASTER首次启动时。后者使SLAVE忘记其在MASTER二进制日志文件中的复制位置,它会删除master.info、relay-log.info 和所有中继日志文件并开始一个新的中继日志文件,以便于开始一个干净的复制。在使用RESET SLAVE前需先关闭 SLAVE复制线程。

上述方式可以查看到服务器上存在的二进制日志文件及文件中的事件,但是想查看到文件中具体的内容并应于恢复场景还得借助mysqlbinlog这个工具。

语法格式: mysqlbinlog [options] log_file ...

输出内容会因日志文件的格式以及mysqlbinlog工具使用的选项不同而略不同。

mysqlbinlog的可用选项可参考man手册。

二进制日志文件的格式包含行模式、语句模式和混合模式(也即有服务器决定在什么情况下记录什么类型的日志),基于语句的日志中事件信息包含执行的语句等,基于行的日志中事件信息包含的是行的变化信息等。混合模式的日志中两种类型的事件信息都会记录。

为了便于查看记录了行变化信息的事件在当时具体执行了什么样的SQL语句可以使用mysqlbinlog工具的-v(--verbose)选项,该选项会将行事件重构成被注释掉的伪SQL语句,如果想看到更详细的信息可以将该选项给两次如-vv,这样可以包含一些数据类型和元信息的注释内容,如

先切换到binlog所在的目录下

#mysqlbinlog mysql-bin.000001

#mysqlbinlog -v mysql-bin.000001

#mysqlbinlog -vv mysql-bin.000001

另外mysqlbinlog和可以通过--read-from-remote-server选项从远程服务器读取二进制日志文件,这时需要一些而外的连接参数,如-h,-P,-p,-u等,这些参数仅在指定了--read-from-remote-server后有效。
无论是本地二进制日志文件还是远程服务器上的二进制日志文件,无论是行模式、语句模式还是混合模式的二进制日志文件,被mysqlbinlog工具解析后都可直接应用与MySQL Server进行基于时间点、位置或数据库的恢复。

下面我们就来演示如何使用binlog恢复之前删除数据(id=2那条记录)

注意:在实际生产环境中,如果遇到需要恢复数据库的情况,不要让用户能访问到数据库,以避免新的数据插入进来,以及在主从的环境下,关闭主从。

查看binlog文件,从中找出delete from test.tb1 where id=2

# cd /usr/local/mysql/data/

# mysqlbinlog -v mysql-bin.000002

显示结果

# at 219

#160913 20:59:51 server id 1 end_log_pos 287 CRC32 0x1a97741b Query thread_id=42 exec_time=0 error_code=0

SET TIMESTAMP=1473771591/*!*/;

SET @@session.pseudo_thread_id=42/*!*/;

SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;

SET @@session.sql_mode=1075838976/*!*/;

SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;

/*!\C utf8 *//*!*/;

SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;

SET @@session.lc_time_names=0/*!*/;

SET @@session.collation_database=DEFAULT/*!*/;

BEGIN

/*!*/;

# at 287

#160913 20:59:51 server id 1 end_log_pos 336 CRC32 0x930ab248 Table_map: `test`.`tb1` mapped to number 125

# at 336

#160910 23:17:43 server id 1 end_log_pos 385 CRC32 0xdede3eb7 Delete_rows: table id 110 flags: STMT_END_F

BINLOG ‘

FyTUVxMBAAAAMQAAAFABAAAAAG4AAAAAAAEABHRlc3QAA3RiMQACAw8CPAAC2t7UdQ==

FyTUVyABAAAAMQAAAIEBAAAAAG4AAAAAAAEAAgAC//wCAAAACHpoYW5nc2Futz7e3g==

‘/*!*/;

### DELETE FROM `test`.`tb1`

### WHERE

### @1=2

### @2=‘zhangsan‘

# at 385

#160910 23:17:43 server id 1 end_log_pos 416 CRC32 0x7881c9da Xid = 2068

COMMIT/*!*/;

从中可以看出delete事件发生position是287,事件结束position是416

恢复流程:直接用bin-log日志将数据库恢复到删除位置287前,然后跳过故障点,再进行恢复下面所有的操作,命令如下

由于之前没有做过全库备份,所以要使用所有binlog日志恢复,所以生产环境中需要很长时间恢复,导出相关binlog文件

#mysqlbinlog /usr/local/mysql/data/mysql-bin.000001 > /opt/mysql-bin.000001.sql

#mysqlbinlog --stop-position=287 /usr/local/mysql/data/mysql-bin.000002 > /opt/287.sql

#mysqlbinlog --start-position=416 /usr/local/mysql/data/mysql-bin.000002 > /opt/416.sql

删除test数据库

mysql>drop database test;

利用binlog恢复数据

#mysql -uroot -p123456< /opt/mysql-bin.000001.sql

#mysql -uroot -p123456< /opt/287.sql

#mysql -uroot -p123456< /opt/416.sql

恢复完成后,我们检查下表的数据是否完整

mysql> select * from test.tb1;

+----+----------+

| id | name |

+----+----------+

| 1 | lisi |

| 2 | zhangsan |

| 3 | tom |

+----+----------+

Ok完整的都恢复过来了

mysqlbinlog 选项示例

常见的选项有以下几个:

--start-datetime

从二进制日志中读取指定时间戳或者本地计算机时间之后的日志事件。

--stop-datetime

从二进制日志中读取指定时间戳或者本地计算机时间之前的日志事件。

--start-position

从二进制日志中读取指定position 事件位置作为开始。

--stop-position

从二进制日志中读取指定position 事件位置作为事件截至。

2、mysqldump介绍

mysqldump是mysql用于备份和数据转移的一个工具。它主要产生一系列的SQL语句,可以封装到文件,该文件包含有所有重建你的数据库所需要的 SQL命令如CREATE DATABASE,CREATE TABLE,INSERT等等。可以用来实现轻量级的快速迁移或恢复数据库。

mysqldump 是将数据表导成 SQL 脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法。

mysqldump一般在数据量很小的时候(几个G)可以用于备份。当数据量比较大的情况下,就不建议用mysqldump工具进行备份了。

数据库的导出

导出对象说明:

mysqldump可以针对单个表、多个表、单个数据库、多个数据库、所有数据库进行导出的操作

# mysqldump [options] db_name [tbl_name ...] //导出指定数据库或单个表

# mysqldump [options] --databases db_name ... //导出多个数据库

#mysqldump [options] --all-databases //导出所有

导出数据库test

# mysqldump -uroot -p --flush-logs test > /opt/test.sql //--flush-logs这个选项就会完整备份的时候重新开启一个新binlog

数据库的导入

# mysql -uroot -p test < /opt/test.sql

在前面我们介绍了mysql的binlog和mysqldump工具,下面我们来学习如何实现mysqldump全库备份+binlog的数据恢复

环境准备与备份还原:

检查开启binlog

先创建一些原始数据

mysql> reset master;

mysql> create database test_db;

mysql> use test_db;

mysql> create table tb1(id int primary key auto_increment,name varchar(20));

mysql> insert into tb1(name) values(‘tom1‘);

mysql> insert into tb1(name) values(‘tom2‘);

mysql> commit;

mysql> select * from tb1;

+----+------+

| id | name |

+----+------+

| 1 | tom1 |

| 2 | tom2 |

+----+------+

方案:mysqldump全库备份+binlog还原

1、mysqldump备份方案:

每周一凌晨1点全库备份

2、备份步骤

(1) 创建备份目录

# mkdir /opt/mysqlbackup

# mkdir /opt/mysqlbackup/daily

(2)全库备份

这里我们模拟周一的完整备份数据库任务

#mysqldump -uroot -p --flush-logs test_db > /opt/mysqlbackup/test_db_2016_09_12.sql

[[email protected] data]# ls -l /opt/mysqlbackup/

-rw-r--r--. 1 root root 1871 Sep 13 21:06 test_db_2016_09_12.sql

备份mysqldump全库备份之前的binlog日志文(注:生产环境中可能不只一个binlog文件)

# cp /usr/local/mysql/data/mysql-bin.000001 /opt/mysqlbackup/daily/

# mysql -uroot -p -e "purge binary logs to ‘mysql-bin.000002‘"

模拟下操作失误,将数据修改错误了。

mysql> use test_db;

mysql> delete from tb1 where id=1;

mysql> commit;

mysql> insert into tb1(name) values(‘tom3‘);

mysql> commit;

备份自mysqldump之后的binlog日志文件

cp /usr/local/mysql/data/mysql-bin.000002 /opt/mysqlbackup/daily/

上面的模拟的误操作是删除了id=1的记录

(3)现在我们使用mysqldump的全库备份和binlog来恢复数据。

使用mysqldump的备份进行全库恢复

# mysql -uroot -p test_db < /opt/mysqlbackup/test_db_2016_09_12.sql

查询一下数据

[[email protected] ~]# mysql -uroot -p -e "select * from test_db.tb1"

Enter password:

+----+------+

| id | name |

+----+------+

| 1 | tom1 |

| 2 | tom2 |

+----+------+

从显示结果可以看到使用mysqldump备份将数据还原到了备份时的状态,刚才删除的数据(id=2)恢复回来了,但备份后产生的数据却丢失了所以还得利用binlog进一步不原

因为删除是在全库备份后发生的,而mysqldump全库备份时使用--flush-logs选项,所以只需要分析全库备份后的binlog即mysql-bin.000002。

mysql> show binary logs;

+------------------+-----------+

| Log_name | File_size |

+------------------+-----------+

| mysql-bin.000002 | 1853 |

+------------------+-----------+

查看mysql-bin.000002中的事件,可以看到有删除事件

mysql> show binlog events in ‘mysql-bin.000002‘;

| mysql-bin.000002 | 219 | Query | 1 | 294 | BEGIN |

| mysql-bin.000002 | 294 | Table_map | 1 | 346 | table_id: 118 (test_db.tb1) |

| mysql-bin.000002 | 346 | Delete_rows | 1 | 391 | table_id: 118 flags: STMT_END_F |

| mysql-bin.000002 | 391 | Xid | 1 | 422 | COMMIT /* xid=2739 */

使用mysqlbinlog 命令可以查看备份的binlog文件的详细事件。

恢复流程:我们直接用bin-log日志将数据库恢复到删除位置前,然后跳过故障点,再进行恢复删除后的所有操作。

# mysqlbinlog -v /opt/mysqlbackup/daily/mysql-bin.000002

我们先用mysqlbinlog命令找到delete那条语句的位置

# at 219

#160911 17:19:55 server id 1 end_log_pos 294 CRC32 0x84590493 Query thread_id=66 exec_time=0 error_code=0

SET TIMESTAMP=1473585595/*!*/;

SET @@session.pseudo_thread_id=66/*!*/;

SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;

SET @@session.sql_mode=1075838976/*!*/;

SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;

/*!\C utf8 *//*!*/;

SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;

SET @@session.lc_time_names=0/*!*/;

SET @@session.collation_database=DEFAULT/*!*/;

BEGIN

/*!*/;

# at 294

#160911 17:19:55 server id 1 end_log_pos 346 CRC32 0x5cdccf9e Table_map: `test_db`.`tb1` mapped to number 118

# at 346

#160911 17:19:55 server id 1 end_log_pos 391 CRC32 0x320c4935 Delete_rows: table id 118 flags: STMT_END_F

BINLOG ‘

uyHVVxMBAAAANAAAAFoBAAAAAHYAAAAAAAEAB3Rlc3RfZGIAA3RiMQACAw8CPAACns/cXA==

uyHVVyABAAAALQAAAIcBAAAAAHYAAAAAAAEAAgAC//wBAAAABHRvbTE1SQwy

‘/*!*/;

### DELETE FROM `test_db`.`tb1`

### WHERE

### @1=1

### @2=‘tom1‘

# at 391

#160911 17:19:55 server id 1 end_log_pos 422 CRC32 0x5e4a6699 Xid = 2739

COMMIT/*!*/;

通过mysqlbinlog命令所显示的结果可以看到误操作delete的开始postion为219,结束position是422。

从二进制日志中读取指定position=219事件位置作为截至,即把数据恢复到delete删除前

# mysqlbinlog --stop-position=219 /opt/mysqlbackup/daily/mysql-bin.000002 | mysql -u root -p

从二进制日志中读取指定position=422事件位置作为开始,即跳过删除事件,恢复删除事件之后对数据的正常操作

#mysqlbinlog --start-position=422 /opt/mysqlbackup/daily/mysql-bin.000002 | mysql -u root -p

查看恢复结果:

# mysql -uroot -p -e "select * from test_db.tb1"

Enter password:

+----+------+

| id | name |

+----+------+

| 1 | tom1 |

| 2 | tom2 |

| 3 | tom3 |

+----+------+

从上面显示可以看出数据恢复到正常状态

http://hongge.blog.51cto.com/

时间: 2024-11-14 15:12:38

mysqldump备份结合binlog日志恢复的相关文章

MySQL binlog日志恢复数据

我们了解了MySQL 的 binlog 日志的开启方式以及 binlog 日志的一些原理和常用操作,我们知道,binlog 有两大作用,一个是使用 binlog 恢复数据,另一个就是用来做主从复制.本篇笔记就是来记录如何使用 binlog 日志来做数据恢复.当然了,使用 binlog 日志所恢复的数据只能是部分数据,并不能够使用 binlog 日志来做数据库的备份,如果想要做数据库备份,依然要使用我们传统的备份方法,而 binlog 可以作为增量备份. 视频链接:http://www.ronco

mysql数据库的备份和二进制日志恢复

mysql备份和bin-log日志 备份数据: mysqldimp -uroot -p  test -l -F '/tmp/test.sql' -l 读锁 -F即flush logs, 可以重新生成的日志文件,当然包括log-bin日志. 查看bin-log日志用 mysql>show master status; 清空表数据 truncate tables; 根据二进制bin-log日志恢复 查看bin-log日志 mysqlbinlog --no-defaults mysql-bin.000

Mysql之binlog日志说明及利用binlog日志恢复数据操作记录

众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废话不多说,下面是梳理的binlog日志操作解说: 一.初步了解binlogMySQL的二进制日志binlog可以说是MySQL最重要的日志,它记录了所有的DDL和DML语句(除了数据查询语句select),以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的. DDL-

通过binlog日志恢复表记录

使用binlog日志 1 使用binlog日志1.1 问题 利用binlog恢复库表,要求如下: 启用binlog日志 创建db1库tb1表,插入3条记录 删除tb1表中刚插入的3条记录 使用mysqlbinlog恢复删除的3条记录 1.2 步骤 实现此案例需要按照如下步骤进行. 步骤一:启用binlog日志 1)调整/etc/my.cnf配置,并重启服务 [[email protected] ~]# vim /etc/my.cnf [mysqld] .. .. log-bin-index=my

使用全备+binlog日志恢复数据库

1.binlog日志类型 Statement 只记录执行的sql语句,磁盘占用少,但是恢复的时候容易出问题.InodeDB不能使用Statement . Row 记录修改后的具体数据,磁盘占用较多 Mixed 上面两种混合,mysqlsql根据具体情形,选择较好的方案 查看当前的类型: show variables like 'binlog_format' /etc/my.cnf 里面的binlog_format参数 2. 恢复方式 全备+恢复部分binlog日志 3.恢复方法 1. 全备 my

mysql数据库通过bin-log日志恢复数据

binlog日志用于记录所有更新数据,当我们的数据库出现故障时,我们可以利用binlog日志来挽回. 如果mysql数据库出现问题需要重新创建binlog二进制文件. # 关闭当前的binlog日志并创建一个新日志文件,编号加1. flush logs # 查看日志,查出需要恢复的时间点 mysqlbinlog --no-defaults fangx-bin.000001 |more #恢复具体时间导成SQL语句 mysqlbinlog fangx-bin.000001 --database=f

使用binlog日志, XtraBackup备份工具 ,MySQL AB复制

使用binlog日志 1.1 问题 利用binlog恢复库表,要求如下: 启用binlog日志 创建db1库tb1表,插入3条记录 删除tb1表中刚插入的3条记录 使用mysqlbinlog恢复删除的3条记录 1.2 步骤 实现此案例需要按照如下步骤进行. 步骤一:启用binlog日志 1)调整/etc/my.cnf配置,并重启服务 [[email protected] ~]# vim /etc/my.cnf [mysqld] .. .. log-bin-index=mysql-bin     

Mysql binlog日志及binlog恢复数据库操作

初识MySQL 日志binlogMySQL重要log,二进制日志文件,记录所有DDL和DML语句(除select),事件形式记录,包含语句所执行的消耗时间,事务安全型.DDL(数据库定义语言),主要命令有create.alter.drop等.DDL主要定义或改变表table的结构.数据类型.建表时使用.MDL(数据操纵语言),主要命令有select.update.insert.delete. mysqlbinlog常见选项:--start-datetime:从二进制中读取指定时间戳.--stop

binlog日志增量备份

#!/bin/bash loglast=`cat /var/lib/mysql/localhost-bin.index | awk -F "/" '{print $2}'| tail -n 1`       //取出正在使用binlog日志    if [ ! -e /binlogdir ]; then  mkdir /binlogdir fi for i in `cat /var/lib/mysql/localhost-bin.index | awk -F "/"