MySQL增量备份与恢复

MySQL增量备份与恢复

技能目标

  • 理解MySQL增量备份的概念
  • 理解MySQL增量备份与恢复的方法

1:增量备份的概念

完全备份每次把所有文件全部备份一边占用空间较大,增量备份就解决了这一问题它可以在你完全备份后如果做了修改或者需要备份的文件不大就用增量备份去解决这一问题
2:增量备份的特点
(1)二进制文件保存了所有更新或者可能更新数据库操作
(2)二进制文件在启动MySQL服务后开始记录
(3)只需要执行刷新就能创建新日志

增量备份实战演练

下面是生产环境中的案例,对它进行增量备份操作

1.需求描述

某公司用户信息数据库为client,用户资源表为user_info

需求如下

(1):请为该公司每周进行完全备份

(2):每天为该公司进行增量备份

(3):新增加用户信息如下

id name zifei
1 wang-1 10
2 wang-2 20
实现增量备份
#1:先把下列原有的表进行完全备份在备份前先刷新一次
[[email protected] data] mysqladmin -u root -p flush-logs
mysql> select * from user_info;
+------+---------+-------+
| id   | name    | zifei |
+------+---------+-------+
|    1 | zhang-1 |    10 |
|    2 | zhang-2 |    20 |
|    3 | zhang-3 |     5 |
+------+---------+-------+
3 rows in set (0.00 sec)
[[email protected] data] mysqldump -u root -p client user_info > /usr/local/mysql/data/client-user_info.sql
Enter password
[[email protected] data] ls
client-user_info.sql

#2:添加wang-1信息后进行增量备份
mysql> insert into user_info (id,name,zifei) values (4,‘wang-1‘,10);
Query OK, 1 row affected (0.00 sec)
[[email protected] data] mysqladmin -uroot -p flush-logs
Enter password:       #上面的命令刷新保存在mysql-bin.000001里面
[[email protected] data]# ls # mysql-bin.000002是 mysql-bin.000001保存之后会生成一个空的日志等待下一次增量备份
mysql-bin.000001
mysql-bin.000002
#3:添加wang-2的信息后进行增量备份
mysql> insert into user_info (id,name,zifei) values (5,‘wang-2‘,20);
Query OK, 1 row affected (0.00 sec)
[[email protected] data] mysqladmin -uroot -p flush-logs
Enter password:
[[email protected] data]# ls
mysql-bin.000002
mysql-bin.000003
每一次增量备份后它都会生成一个空的二进制文件,以便下一次的增量备份,恢复的时候是逆推恢复就是说你恢复mysql-bin.000002其实是恢复的你上一次所做的操作

MySQL增量恢复

1:加入你把原表中wang-1,wang-2删除需要恢复此增量文件需做如下操作
#下表中wang-1,wang-2已被删除
mysql> select * from user_info;
+------+---------+-------+
| id   | name    | zifei |
+------+---------+-------+
|    1 | zhang-1 |    10 |
|    2 | zhang-2 |    20 |
|    3 | zhang-3 |     5 |
+------+---------+-------+
5 rows in set (0.00 sec)

#恢复wang-1
[[email protected] data] mysqlbinlog --no-defaults mysql-bin.000002 | mysql -u root -p
#先恢复mysql-bin.000002我们看一下
mysql> select * from user_info;
+------+---------+-------+
| id   | name    | zifei |
+------+---------+-------+
|    1 | zhang-1 |    10 |
|    2 | zhang-2 |    20 |
|    3 | zhang-3 |     5 |
|    5 | wang-2  |    20 |
+------+---------+-------+
4 rows in set (0.00 sec)
#恢复的是我最后一次操作备份wang-2的数据

#恢复mysql-bin.000001看一下
[[email protected] data]# mysqlbinlog --no-defaults mysql-bin.000001 | mysql -u root -p
mysql> select * from user_info;
+------+---------+-------+
| id   | name    | zifei |
+------+---------+-------+
|    1 | zhang-1 |    10 |
|    2 | zhang-2 |    20 |
|    3 | zhang-3 |     5 |
|    4 | wang-2  |    10 |
|    5 | wang-2  |    20 |
+------+---------+-------+
4 rows in set (0.00 sec)

查看二进制文件如果你直接用下面的语句操作他会看不到你操作的语句会自动给你加密

[[email protected] data] mysqlbinlog --no-defaults mysql-bin.000001
BINLOG ‘ #下面加密的哪一行就是你在数据库进行操作
PCE7WxMBAAAAOgAAAEkIAAAAANsAAAAAAAEABmNsaWVudAAJdXNlcl9pbmZvAAMDDwMCHgAH7bXH
3w==
PCE7WyABAAAAMwAAAHwIAAAAANsAAAAAAAEAAgAD//gFAAAABndhbmctMhQAAABJK6gI
‘/*!*/;
# at 2172

#想要解密这个加密文件用下列语句
[[email protected] data] mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000001
### DELETE FROM `client`.`user_info`
### WHERE #下面就是之前看不到的加密的部分
###   @1=5
###   @2=‘wang-2‘
###   @3=20

原文地址:http://blog.51cto.com/13645280/2135621

时间: 2024-10-13 10:19:08

MySQL增量备份与恢复的相关文章

MySQL增量备份与恢复实例【转】

小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份.增量备份的原理就是使用了mysql的binlog日志.本次操作的MySQL版本为5.5.40 for Linux (x86_64). 增量备份要确保打开了二进制日志,参考mysql的日志系统: mysql> show variables like '%log_bin%'; 首先对pak数据库做一个完整备份: $ mysqldump -h localhost -u

mysql增量备份与恢复实战

备份: mysqldump -uroot -p** -A -B -F --master-data=2 --single-transaction  --events > /root/all.sql 恢复: mysql -uroot -pVaren2100* < /root/all.sql 利用binlog日志进行增量恢复 利用位置恢复: mysqlbinlog --start-position="154" --stop-position="789694"

Mysql增量备份与恢复实例

小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份.增量备份的原理就是使用了mysql的binlog日志.本次操作的MySQL版本为5.5.40 for Linux (x86_64). 增量备份要确保打开了二进制日志,参考mysql的日志系统: mysql> show variables like '%log_bin%'; 首先对pak数据库做一个完整备份: $ mysqldump -h localhost -u

MySQL增量备份与恢复--实验

1.创建全备 innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --socket=/home/mysql/3306/data/mysql.sock --no-timestamp /home/mysql/backup 已有数据 2.增加数据 insert into leo values (7,"wanger"); insert into leo values (8,"xiaofang&quo

MySQL完全备份、增量备份与恢复

在生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果.所以数据库需要备份.这里以新版mysql5.7为例. 一.数据库备份分类: 从物理与逻辑的角度,备份可分为物理备份和逻辑备份. (1)物理备份:对数据库操作系统的物理文件(如数据文件.日志文件等)的备份.又可以分为冷备份和热备份. 冷备份:关闭数据库时进行的备份操作 热备份:在数据库运行状态中进行备份操作,这种备份方法依赖于数据库的日志文件. (2)逻辑备份:对数据库逻辑组件(如表等数据库对象)的备份. 从数据库的备份策

MySQL全量、增量备份与恢复

数据备份的重要性 1.在生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果2.造成数据丢失的原因程序错误人为错误计算机失败磁盘失败灾难(如地震等)和偷窃 数据库备份的分类 一.从物理与逻辑的角度,备份可分为: 1.物理备份:对数据库操作系统的物理文件(如数据文件.日志文件等)的备份 物理备份又可以分为脱机备份(冷备份)和联机备份(热备份): -冷备份:是在关闭数据库的时候进行的 -热备份:数据库处于运行状态,这种备份方法依赖于数据库的日志文件 2.逻辑备份:对数据库逻辑组件

MySQL——全量、增量备份与恢复(理论+实操)

数据备份的重要性 1.在生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果 2.造成数据丢失的原因 程序错误 人为错误 计算机失败 磁盘失败 灾难和偷窃 数据库备份的分类 从物理与逻辑的角度,备份可分为: 1.物理备份:对数据库操作系统的物理文件(如数据文件.日志文件等)的备份 物理备份又可以分为脱机备份(冷备份)和联机备份(热备份): 冷备份:是在关闭数据库的时候进行的热备份:数据库处于运行状态,这种备份方法依赖于数据库的日志文件 2.逻辑备份:对数据库逻辑组件(如表等数

MySQL全量、增量备份与恢复 (理论+实践篇)

数据备份的中要性 在生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果 造成数据丢失的原因 程序错误 人为错误 计算机失败 磁盘失败 灾难(如起火.地震)和偷窃 数据库备份的分类 从物理与逻辑的角度,备份可分为 物理备份:对数据库操作系统的物理文件(如数据文件.日志文件等)的备份 物理备份又可以分为脱机备份(冷备份)和联机备份(热备份) 冷备份:是关闭数据库的时候进行的 热备份:数据库处于运行状态,这种备份方法依赖于数据库的日志文件 逻辑备份:对数据库逻辑组件(如表等数据库

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

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