mysql增量恢复

mysql增量恢复过程

创建一张用于测试的表

mysql> create table user (name char(10),age int(3));
Query OK, 0 rows affected (0.07 sec)

mysql> desc user;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name  | char(10) | YES  |     | NULL    |       |
| age   | int(3)   | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)

往表中插入数据

mysql> select database();
+------------+
| database() |
+------------+
| git        |
+------------+
1 row in set (0.00 sec)

mysql> insert into user(‘lyao‘,‘27‘);
Query OK, 1 row affected (0.00 sec)

mysql> select * from user;
+------+------+
| name | age  |
+------+------+
| lyao |   27 |
+------+------+
1 row in set (0.00 sec)

备份数据库,备份前查看mysql的二进制文件信息

[[email protected] ~]# ll /data/mysql/data/ |grep mysql-bin
-rw-rw---- 1 mysql mysql      302 May 18 11:10 mysql-bin.000001
-rw-rw---- 1 mysql mysql      448 May 18 11:20 mysql-bin.000002
-rw-rw---- 1 mysql mysql      221 May 18 11:21 mysql-bin.000003
-rw-rw---- 1 mysql mysql      150 May 18 11:21 mysql-bin.000004
-rw-rw---- 1 mysql mysql      716 May 18 12:47 mysql-bin.000005
-rw-rw---- 1 mysql mysql       95 May 18 11:21 mysql-bin.index
[[email protected] ~]# mysqldump -uroot -p -h 127.0.0.1 --flush-logs git >git.bak.sql
Enter password: 
[[email protected] ~]# ll /data/mysql/data/ |grep mysql-bin
-rw-rw---- 1 mysql mysql      302 May 18 11:10 mysql-bin.000001
-rw-rw---- 1 mysql mysql      448 May 18 11:20 mysql-bin.000002
-rw-rw---- 1 mysql mysql      221 May 18 11:21 mysql-bin.000003
-rw-rw---- 1 mysql mysql      150 May 18 11:21 mysql-bin.000004
-rw-rw---- 1 mysql mysql      759 May 18 12:52 mysql-bin.000005
-rw-rw---- 1 mysql mysql      107 May 18 12:52 mysql-bin.000006
-rw-rw---- 1 mysql mysql      114 May 18 12:52 mysql-bin.index

测试:往表user中继续insert数据

mysql> insert into user values(‘zhang3‘,‘34‘);
Query OK, 1 row affected (0.01 sec)

mysql> insert into user values(‘li4‘,‘34‘);
Query OK, 1 row affected (0.00 sec)

mysql> select *  from user;
+--------+------+
| name   | age  |
+--------+------+
| lyao   |   27 |
| zhang3 |   34 |
| li4    |   34 |
+--------+------+
3 rows in set (0.00 sec)

更新age列为19

mysql> update user set age=19;
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3  Changed: 3  Warnings: 0

mysql> select * from user;
+--------+------+
| name   | age  |
+--------+------+
| lyao   |   19 |
| zhang3 |   19 |
| li4    |   19 |
+--------+------+
3 rows in set (0.00 sec)

此时看到,age列全部更新了,但是这不是我们想要的。通过备份数据还原

mysql> source  git.bak.sql;

mysql> select * from user;
+------+------+
| name | age  |
+------+------+
| lyao |   27 |
+------+------+
1 row in set (0.00 sec)

#还原到备份前的数据了,但是我们后来还insert进去2条数据的,这个要通过二进制日志恢复了
#上文中显示备份后的log-bin日志是mysql-bin.000006
[[email protected] ~]# mysqlbinlog  -d git /data/mysql/data/mysql-bin.000006 >bin.log
#在bin.log中找到我们刚才插入的语句
[[email protected] ~]# egrep "zhang3|li4" bin.log 
insert into user values(‘zhang3‘,‘34‘)
insert into user values(‘li4‘,‘34‘)

#在mysql中插入这2条语句即可
mysql> select * from user;
+------+------+
| name | age  |
+------+------+
| lyao |   27 |
+------+------+
1 row in set (0.00 sec)

mysql> insert into user values(‘zhang3‘,‘34‘);
Query OK, 1 row affected (0.02 sec)

mysql> insert into user values(‘li4‘,‘34‘);
Query OK, 1 row affected (0.00 sec)

mysql> select * from user;
+--------+------+
| name   | age  |
+--------+------+
| lyao   |   27 |
| zhang3 |   34 |
| li4    |   34 |
+--------+------+
3 rows in set (0.00 sec)
时间: 2024-11-08 17:00:45

mysql增量恢复的相关文章

10、mysql增量恢复实战

10.1.实验数据: mysql> select * from test; +----+------+------+ | id | name | age | +----+------+------+ | 1 | lc | 20 | | 2 | lbd | 21 | +----+------+------+ 5 rows in set (0.00 sec) 10.2.备份库: mysqldump -uroot -p123456 --single-transaction -F --master-da

mysql数据库增量恢复多实例实战演示

mysql主从复制原理要点 1.异步方式同步 2.逻辑同步模式,多种模式,默认是通过sql语句执行 3.主库通过记录binlog实现对从库的同步,binlog记录数据库的更新语句 4.主库1个IO线程,从库由1个IO线程和一个sql线程来完成的 5.从库关键文件master.info,relay-log,relay-info功能 6.如果从库还想级联从库,需要打开bin-log和log-slave-updates参数 [[email protected] ~]# mysql -uroot -po

mysqldunp增量恢复过程及详解

Mysql增量恢复必备条件 1.开启mysql log-bin日志功能 MySQL数据库开启了log-bin 参数记录binlog日志功能下: 小结:增量恢复的条件: 存在一份全备加上全备之后的时刻到出问题时刻的所有增量binlog文件备份. 创建模拟环境 [[email protected] 3306]# grep log-bin /data/3306/my.cnf log-bin = /data/3306/mysql-bin [[email protected] 3306]# mkdir -

Mysql DBA 高级运维学习笔记-Mysql增量备份及数据恢复实战

大家好本文讲了mysql数据库的增量恢复.老男孩老师讲的很好很细,我自己呢整理了老师讲的部分内容,请大家将就看:文章内容比较多.比较乱,请大家认真总结知识,发现问题请及时批评指点~ 1.1 MySQL数据库的备份与恢复 1.1.1备份单个数据库练习多种参数使用 Mysql数据库自带了一个很好用的备份命令,就是mysqldump, 它的基本使用如下: 语法:mysqldump –u用户名 –p密码 数据库名>备份的文件名 范烈1:备份名字为cuizhong的库 a.查看备份前的数据 [[email

MySQL增量备份与恢复

MySQL增量备份与恢复 技能目标 理解MySQL增量备份的概念 理解MySQL增量备份与恢复的方法 1:增量备份的概念 完全备份每次把所有文件全部备份一边占用空间较大,增量备份就解决了这一问题它可以在你完全备份后如果做了修改或者需要备份的文件不大就用增量备份去解决这一问题 2:增量备份的特点 (1)二进制文件保存了所有更新或者可能更新数据库操作 (2)二进制文件在启动MySQL服务后开始记录 (3)只需要执行刷新就能创建新日志 增量备份实战演练 下面是生产环境中的案例,对它进行增量备份操作 1

【转】mysql增量备份恢复实战企业案例

来源地址:http://seanlook.com/2014/12/05/mysql_incremental_backup_example/ 小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份.增量备份的原理就是使用了mysql的binlog日志. 本次操作的MySQL版本为5.5.40 for Linux (x86_64). 增量备份要确保打开了二进制日志,参考mysql的日志系统: 1 mysql> show

MySQL第五天(增量备份和增量恢复)

day05一.数据备份与恢复-增量备份和增量恢复a.binlog日志介绍(二进制文件):使用Mysql数据库服务日志文件类型的一种.记录除查询之外的sql命令.默认没启用 查询的sql包括:select desc show 不是查询的命令:insert update delete create drop grant revoke b.启用binlog日志如何启用日志默认存放位置/var/lib/mysql日志默认名称主机名-bin.00000151-bin.000001 (大于500M自动生成0

Mysql运维管理-初步增量恢复mysql数据库10

初步增量恢复MySQL数据实战 a.配置my.cnf配置文件 先把my.cnf配置文件中的log-bin参数打开重命名为mysqlbin_zbf,这样在mysql数据库中更新一个东西就会在这个日志里更新.这样会导致这个日志很大,没关系系统可以自动分割还可以手动分割. [[email protected] var]# vim /etc/my.cnf -省略-- # Uncomment the following if you want to log updates log-bin=mysqlbin

Mysql DBA 高级运维学习之路-初步增量恢复mysql数据库

1.开启mysql日志(1)配置my.cnf配置文件 先把my.cnf配置文件中的log-bin参数打开,并将log-bin的设为mysqlbin_linzhongniao,这样在mysql数据库中更新数据时就会记录到这个日志文件中.这样有一个缺点会导致日志文件很大,但是并没关系,系统可以自动分割我们还可以手动分割.查看mysql日志文件用mysqlbinlog [[email protected] ~]# grep "log-bin" /data/3306/my.cnflog-bin