MySQL物理备份与恢复工具XtraBackup使用小结

 更新时间:2024年07月21日 09:57:27   作者:雨下的竹子  
本文主要介绍了MySQL物理备份与恢复工具XtraBackup使用小结,借助Percona XtraBackup工具实现MySQL的物理备份与恢复,相当于将整个MySQL进行了复制,再粘贴到其他地方运行,感兴趣的可以了解一下

1.描述

借助Percona XtraBackup工具实现MySQL的物理备份与恢复,相当于将整个MySQL进行了复制,再粘贴到其他地方运行。

2.安装

XtraBackup与MySQL版本对应关系:

XtraBackupMySQL
percona-xtrabackup-245.7
percona-xtrabackup-808
percona-xtrabackup-818.1
percona-xtrabackup-828.2
percona-xtrabackup-838.3
yum -y install percona-xtrabackup-24
yum -y install rsync
yum -y install perl-Digest-MD5
yum -y install qpress

3.使用

3.1 备份源数据库

#读取指定配置文件中的信息,压缩mysql的数据,输出到/mysql目录下,再重定向到test.xbstream文件中(相当于tar包)。
innobackupex --defaults-file=/etc/my.cnf  --user=root --password='123456' --port=3306 --socket=/tmp/mysql.sock --stream=xbstream --compress --parallel=8 --compress-threads=8 /mysql > /databak/test.xbstream

–defaults-file指定mysql配置文件,需要包含datadir等信息

–stream采用流的方式备份,这样可以选择输出到本地或远程

3.2 恢复到目标数据库

如果恢复位置不在同一台服务器,可以通过scp进行文件传输。

3.2.1 恢复目录

#相当于解压tar包,输出到指定目录下
xbstream -x < /databak/test.xbstream -C /databak/test

3.2.2 解压文件

#对前一步输出目录下的所有压缩文件进行解压
innobackupex --decompress --parallel=8 --compress-threads=8 /databak/test

3.2.3 应用日志

#通过redo同步已提交的事务,使数据文件保持一致
innobackupex --apply-log /databak/test

3.2.4 复制数据

复制数据前,先停止目标MySQL,删除他的data目录和日志目录

#将数据文件拷贝到目标MySQL的数据目录下
innobackupex --defaults-file=/etc/my.cnf  --parallel=8 --copy-back /databak/test

3.2.5 启动

#修改mysql相关的文件持有者为mysql用户
chown -R mysql.mysql /data/mysql
#启动mysql
systemctl start mysqld

如果是目标MySQL是从服务器,需要恢复主从关系

#查看备份的数据最后的binlog的偏移量,或者gtid
cat /databak/test/xtrabackup_binlog_info
#格式如下:
#mysql-bin.000001        3229488  87bd47b9-12f6-11ed-ae2c-0050569534a2:1-6,8cdb65cf-12f6-11ed-aab7-005056950a99:1-139

连接到MySQL客户端:

stop slave;
#清理中继日志
reset slave;
#清理binlog
reset master;
#设置已经执行但本地binlog中未记录的gtid集合
set @@global.gtid_purged='87bd47b9-12f6-11ed-ae2c-0050569534a2:1-6,8cdb65cf-12f6-11ed-aab7-005056950a99:1-139';
#重新建立主从关系
change master to master_host='192.168.86.111',master_port=3306,master_user='backuser',master_password='123456', master_auto_position=1 ;
start slave;
show slave status\G

4.使用总结

环境:96核 754G内存 30T磁盘(生产环境的物理机)

4.1 备份

压缩效率:XtraBackup默认采用的zstd压缩算法,理论压缩比为5:1。实际使用中,一个MySQL实例由3.2t压缩为502G;另一个MySQL实例由5.7t压缩为825G,压缩比达到6:1以上

备份速度:一个MySQL实例备份生成502G的压缩文件,耗时大约50分钟,判断每10分钟生成100G的压缩文件。如果5个t的数据,压缩后可能为800G,则耗时约80分钟。

传输文件:通过scp传输文件,速度约为350-450MB/s,500G需要20-25分钟

4.2 恢复

恢复包含多个步骤:

恢复目录:将压缩文件解包到指定目录下,速度较快,约10-20分钟

解压:一个MySQL实例为512G,解压后3.6T,解压耗时约37分钟,约10分钟1T

应用日志:一个MySQL实例耗时约15分钟

复制:一个MySQL实例,3.6T数据复制耗时约40分钟,约10分钟1T

4.3 例子

综上,假设现有5T的数据需要处理,从备份到恢复的整个流程耗时如下:

  • 备份,5T按6:1压缩至800G,耗时80分钟
  • 传输,scp按450M/s,耗时30分钟
  • 恢复,20分钟
  • 解压,10分钟1T,耗时50分钟
  • 应用日志,20分钟
  • 复制,10分钟1T,耗时50分钟

在以上理想情况下,5T数据至少需要4个小时以上,实际可能5-6小时

到此这篇关于MySQL物理备份与恢复工具XtraBackend使用小结的文章就介绍到这了,更多相关MySQL XtraBackend使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL5.0存储过程教程

    MySQL5.0存储过程教程

    Introduction 简介 MySQL 5.0 新特性教程是为需要了解5.0版本新特性的MySQL老用户而写的。简单的来说是介绍了“存储过程、触发器、视图、信息架构视图”,在此感谢译者陈朋奕的努力.
    2008-04-04
  • 从0到1学会MySQL单表查询

    从0到1学会MySQL单表查询

    这篇文章主要给大家介绍了关于如何从0到1学会MySQL单表查询的相关资料,单表查询是指从一张表数据中查询所需的数据,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • MySQL利用AES_ENCRYPT()与AES_DECRYPT()加解密的正确方法示例

    MySQL利用AES_ENCRYPT()与AES_DECRYPT()加解密的正确方法示例

    MySQL中AES_ENCRYPT('密码','钥匙')函数可以对字段值做加密处理,AES_DECRYPT(表的字段名字,'钥匙')函数解密处理,下面这篇文章主要给大家介绍了关于MySQL利用AES_ENCRYPT()与AES_DECRYPT()加解密的正确方法,文中给出了详细的示例代码,需要的朋友可以参考下。
    2017-08-08
  • RC级别下MySQL死锁问题的解决

    RC级别下MySQL死锁问题的解决

    本文主要介绍了RC级别下MySQL死锁问题的解决,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 检查mysql是否成功启动的方法(bat+bash)

    检查mysql是否成功启动的方法(bat+bash)

    这篇文章主要介绍了检查mysql是否成功启动的方法(bat+bash),如果mysql没有启动则开启服务,需要的朋友可以参考下
    2016-06-06
  • mysql视图之创建可更新视图的方法详解

    mysql视图之创建可更新视图的方法详解

    这篇文章主要介绍了mysql视图之创建可更新视图的方法,结合实例形式分析了mysql可更新视图的具体创建、使用方法及相关操作注意事项,需要的朋友可以参考下
    2019-12-12
  • mysql中如何判断当前是字符 mysql判断字段中有无汉字

    mysql中如何判断当前是字符 mysql判断字段中有无汉字

    这篇文章主要介绍了mysql如何判断字段中有无汉字的方法,使用length与char_length两个函数就可以完成
    2014-01-01
  • CentOS下安装mysql时忘记设置root密码致无法登录的解决方法

    CentOS下安装mysql时忘记设置root密码致无法登录的解决方法

    最近在给公司的内网开发用服务器装系统,然后装mysql居然就花了一天,原因是因为本人在CentOS下安装万mysql后,无法通过root进入,因为安装的时候,并没有设置root密码而导致无法登录,通过查找了资料终于解决了,现在想方法分享给大家,有需要的朋友们可以参考借鉴。
    2016-11-11
  • mysql binlog 回滚示例解析

    mysql binlog 回滚示例解析

    严格来说mysqlbinlog 不能算回滚,他只是将过去的数据修改记录 重新执行一遍,但是从结果上来看,他也算把数据恢复到任意时间点了,这篇文章主要介绍了mysql binlog回滚示例解析,需要的朋友可以参考下
    2023-08-08
  • Mysql中强制索引的具体使用

    Mysql中强制索引的具体使用

    Mysql强制索引可以通过强制使用某些列的索引来提高查询的性能,本文就来介绍一下Mysql中强制索引的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08

最新评论