我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL增量备份与恢复的示例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL增量备份与恢复的示例

小编给大家分享一下MySQL增量备份与恢复的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

文章目录

  • 一、MySQL 增量备份


    • 1.1 为什么使用增量备份

    • 1.2 增量备份的特点

    • 1.增量备份的概念


    • 2.增量备份示例

  • 二、MySQL 增量恢复


    • 4.1 基于时间点的恢复

    • 4.1 基于位置的操作

    • 1.增量恢复的场景

    • 2.丢失完全备份之后更改的数据的恢复步骤

    • 3.完全备份之后丢失所有数据的恢复步骤

    • 4. 基于时间点与位置的恢复


    • 5. 指定企业备份策略的思路


一、MySQL 增量备份

增量备份可以在完全备份的基础上,减少备份文件的大小,从而加快备份和恢复的速度

1.增量备份的概念

1.1 为什么使用增量备份

  • 前面章节讲到了完全备份有两种方式,一种是使用 tar 打包数据文件,另一种是
    使用 mysqldump 进行完全备份

  • 完全备份存在的问题很容易看到,每次都是把所有的数据内容进行备份,备份数据中有大量的重复数据,并且完全备份的时间与恢复的时间很长

  • 解决完全备份存在的问题就是使用增量备份的方式,增量备份就是备份自上一次备份之后增加或改变的文件或者内容

1.2 增量备份的特点

  • 增量备份的优点是没有重复数据,备份量不大,时间短

  • 缺点也很明显,需要上次完全备份及完全备份之后所有的增量备份才能恢复,而且对所有增量备份进行逐个反推恢复,操作较为繁锁

  • MySQL 没有提供直接的增量备份方法,但是可以通过 MySQL 的二进制日志(binary
    logs)间接实现增量备份

二进制日志对备份的意义如下:

  1. 二进制日志保存了所有更新或者可能更新数据库的操作

  2. 二进制日志在启动 MySQL 服务器后开始记录,并在文件达到 max_binlog_size 所设置的大小或者接收到 flush logs 命令后重新创建新的日志文件

  3. 只需要定时执行 flush logs 方法重新创建新的日志,生成二进制文件序列,并及时把这些日志保存到安全的地方就完成了一个时间段的增量备份

2.增量备份示例

  1. 开启二进制日志功能

vim /etc/my.cnf...[mysqld]log-bin=mysql-binbinlog_format = MIXED#指定二进制日志(binlog)的记录格式为 MIXEDsystemctl restart mysqld.service#重启服务cd /usr/local/mysql/datals -l /usr/local/mysql/data/mysql-bin.*#查看二进制文件#二进制日志(binlog)有3种不同的记录格式:STATEMENT(基于SQL语句)、ROW(基于行)、MIXED(混合模式)#默认格式是 STATEMENT

MySQL增量备份与恢复的示例
MySQL增量备份与恢复的示例

  1. 每周选择服务器负载较轻的时间段,或者用户访问较少的时间段进行备份

mysqldump -uroot -p123123 SCHOOL CLASS01 > /opt/SCHOOL_CLASS01_$(date +%F).sql#对表进行完全备份mysqldump -uroot -p123123 --all-databases SCHOOL > /opt/SCHOOL_$(date +%F).sql#对库进行完全备份crontab -e#也可以使用计划性任务来执行30 3 * * 3 mysqldump -uroot -p123123 SCHOOL CLASS01 > /opt/SCHOOL_CLASS01_$(date +%F).sql30 3 * * 3 mysqldump -uroot -p123123 --all-databases SCHOOL > /opt/SCHOOL_$(date +%F).sql每周三的凌晨 3:00 对数据库和表进行完全备份

MySQL增量备份与恢复的示例
MySQL增量备份与恢复的示例

  1. 可每天进行增量备份操作,生成新的二进制日志文件,这样在插入新的数据后,新的二进制文件对应的就是数据库的变化的内容

ls /usr/local/mysql/datamysqladmin -uroot -p123123 flush-logs

MySQL增量备份与恢复的示例

  1. 插入新的数据,以模拟数据的增加或变更

use SCHOOL;insert into CLASS01 values(3,'wangsan','woman','games');insert into CLASS01 values(4,'wangsi','man','runing');select * from CLASS01;

MySQL增量备份与恢复的示例

  1. 生成新的二进制文件并查看其内容

cd /usr/local/mysql/data/lsmysqladmin -uroot -p123123 flush-logs

MySQL增量备份与恢复的示例

cp mysql-bin.000002 /opt/#将记录变更的二进制文件02复制至/opt目录下cd /opt/lsmysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002#使用64位编码机制去解码,按行读取详细内容

MySQL增量备份与恢复的示例
MySQL增量备份与恢复的示例


二、MySQL 增量恢复

  • 增量恢复比完全恢复操作更为繁琐

  • 每个增量备份都是单独的个体,数据不重复,需要控制得更加精确

1.增量恢复的场景

  • 当数据发送错误时,应根据实际情况选择使用完全备份恢复,还是增量备份

  • 增量备份的场景是:

    • 人为的 SQL 语句破坏了数据库

    • 在进行下一次全备之前发送系统故障导致数据库数据丢失

    • 在主从架构中,主库数据发送了故障

  • 根据数据丢失的情况可以分为两类:

    • 只丢失了完全备份之后更改的数据

    • 完全备份之后丢失所有的数据

2.丢失完全备份之后更改的数据的恢复步骤

  • 当完全备份之后更改的数据丢失,需要把完全备份之后的所有增量备份文件逐个恢复

  • 步骤如下:

mysql -uroot -p123123use SCHOOL;delete from CLASS1 where id=3;delete from CLASS1 where id=4;#删除插入的两条数据,模拟完全备份后数据丢失的故障select * from CLASS01;#检查quitmysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -uroot -p123123#使用二进制文件进行恢复操作mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"#检查表内容是否恢复

MySQL增量备份与恢复的示例
MySQL增量备份与恢复的示例

3.完全备份之后丢失所有数据的恢复步骤

  • 当完全备份和增量备份之后,所有的数据丢失,需要把完全备份和所有增量备份文件逐个恢复

  • 步骤如下:

mysql -uroot -p123123use SCHOOL;drop table CLASS01;#直接删除整个表,假设完全备份后所有数据都丢失了quitmysql -uroot -p123123 SCHOOL < /opt/SCHOOL_CLASS01_2021-02-06.sqlmysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"#进行完全备份后查看一下mysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -uroot -p123123#增量备份mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"

MySQL增量备份与恢复的示例
MySQL增量备份与恢复的示例

4. 基于时间点与位置的恢复

  • 利用二进制日志可实现基于时间点与位置的恢复,例如由于误操作删除了一张表,这时完全恢复是没有用的

  • 因为日志里还有误操作的语句,我们需要的是恢复到误操作之前的状态,然后跳过误操作的语句,再恢复后面操作的语句

4.1 基于时间点的恢复

  • 基于时间点的恢复,就是将某个起始时间的二进制文件导入数据库中,从而跳过某个发生错误的时间点实现数据的恢复

  • 使用 mysqlbinlog 加上 --stop-datetime 选项,表示在哪个时间点结束,后面误操作的语句不执行

  • –start-datetime 选项表示执行后面的语句

  • 结合使用它们就可以跳过误操作的语句,完成恢复工作

  • 需要注意的是,二进制文件中保存的日期格式需要调整为用“-”分割

#恢复用户“wangsan”的数据,而不恢复“wangsi”mysql -uroot -p123123 -e "truncate table SCHOOL.CLASS01;"mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"mysqlbinlog --no-defaults --stop-datetime='2021-02-06 15:58:39' /opt/mysql-bin.000002 |mysql -uroot -p123123mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"

MySQL增量备份与恢复的示例

#恢复“wangsi”的数据mysqlbinlog --no-defaults --start-datetime='2021-02-06 15:58:39' /opt/mysql-bin.000002 |mysql -uroot -p

MySQL增量备份与恢复的示例

4.1 基于位置的操作

  • 基于位置的恢复,就是使用基于时间点的恢复

  • 可能会出现在一个时间点里既同时存在正确的操作又存在错误的操作,基于位置是一种更为精确的恢复方式

mysqlbinlog --no-defaults --stop-position='609' /opt/mysql-bin.000002 | mysql -uroot -p#使用64位编码机制去解码并按行读取二进制文件02(增量备份)的详细内容......略

MySQL增量备份与恢复的示例

#仅恢复“1810”之前的数据,即不恢复“wangsi”的数据mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"mysql -uroot -p123123 -e "truncate table SCHOOL.CLASS01;"mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"mysqlbinlog --no-defaults --stop-position='1810' /opt/mysql-bin.000002 | mysql -uroot -pmysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"

MySQL增量备份与恢复的示例

#仅恢复“wangsi”的数据,跳过“wangsan”的数据恢复,即仅有第四条记录mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"mysqlbinlog --no-defaults --start-position='1810' /opt/mysql-bin.000002 | mysql -uroot -p123123mysql -uroot -p123123 -e "select * from SCHOOL.CLASS01;"

MySQL增量备份与恢复的示例

5. 指定企业备份策略的思路

  • 指定企业备份策略要根据企业数据库的实际读写的频繁性与数据的重要性进行

  • 数据更新频繁,则应该进行较为频繁的备份

  • 数据较为重要,则在有适当更新时进行备份

  • 在数据库压力小的时段进行全备,如一周一次,然后每天增备

  • 根据公司的规模,中小公司可一天一次全备,大公司可每周一次全备,每天进行一次增备,并且尽量为企业实现主从复制架构

以上是“MySQL增量备份与恢复的示例”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL增量备份与恢复的示例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL数据库全量、增量备份与恢复

造成数据丢失的原因 程序错误 人为商店 计算机失败 磁盘失败 灾难(如火山、地震)和偷窃 数据库备份的分类 从物理与逻辑的角度,备份可分为: 物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份 物理备份又可以分为脱机备份(冷
MySQL数据库全量、增量备份与恢复
2015-05-05

mysql中xtrabackup全量备份/增量备份及恢复

目录一、测试前准备mysql数据库创建数据库创建备份目录 二、开始测试1、全量备份数据库2、全量备份恢复(先准备,再恢复)三、增量备份 1、先全量备份 2、全量备份之后增加些数据3、第一次增量备份(1)查看全量备份的to_lsn(2)第一次
mysql中xtrabackup全量备份/增量备份及恢复
2024-09-15

MySQL中备份与恢复的示例分析

小编给大家分享一下MySQL中备份与恢复的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、备份策略赘述1、备份的类型类型1:热备份:读写不受影响(MyI
2023-06-20

编程热搜

目录