Xtrabackup实现Mysql数据迁移

一、前言

关于Mysql数据库的数据备份、数据迁移,想必大家首先想到的方式便是使用Mysql提供的“mysqldump” 工具。尽管它很常用,但也有一些缺点:

  • 备份速度较慢:对于大型数据库或包含大量数据的表,mysqldump 可能会比较慢,特别是在导出大量数据时。

  • 备份文件较大mysqldump 生成的备份文件通常是文本格式的 SQL 脚本,这可能会导致备份文件非常大,占用大量磁盘空间。

  • 无法实现增量备份mysqldump 通常进行全量备份,它不能只备份自上次备份以来发生更改的数据。

  • 恢复时间较长:恢复过程中,mysqldump 需要逐条执行 SQL 脚本,这可能会使恢复过程较慢,尤其是对于大规模的数据恢复。

  • 不支持实时备份mysqldump 可能需要在数据库服务器上执行,这可能会对数据库的性能产生影响。它不是一个热备份工具,不能在数据库运行时进行备份而不影响数据库的操作。

  • 不适用于高并发环境:在高并发环境中,mysqldump 可能无法捕获所有的事务,因为它在备份过程中不会锁定数据库,从而可能会导致备份不一致。

  • 不支持备份数据库之间的关系:对于涉及多个数据库的复杂系统,mysqldump 可能无法完全捕获数据库之间的关系和约束。

综上,如果mysqldump不能满足我们的要求,就可以使用一些第三方工具,例如:XtraBackup、MyLoader、DBSync... 不同的工具具有不同的特性和优点,本次内容我们引入XtraBackup进行介绍。

二、XtraBackup

官网🔗


  • 关于 XtraBackup

        Xtrabackup是Percona团队开发的用于MySQL数据库物理热备份的开源备份工具,当前主要存在两个版本:Xtrabackup 2.4.x8.0.x,分别用于备份MySQL 5.xMySQL 8.0.x 版本


XtraBackup优点

1. 支持热备份

  • 描述:Percona XtraBackup 能够在数据库正在运行的情况下进行备份,而不会对数据库性能产生显著影响。这意味着可以在不中断服务的情况下备份数据。

2. 增量备份

  • 描述:支持增量备份,即只备份自上次备份以来发生变化的数据。这种方式可以显著减少备份时间和存储空间需求。

3. 压缩和加密

  • 描述:提供压缩功能来减小备份文件的体积,从而节省存储空间。同时,也支持备份文件的加密,确保备份数据的安全性。

4. 支持多种存储引擎

  • 描述:兼容 MySQL 的 InnoDB、XtraDB 和 MyISAM 存储引擎,能够灵活处理不同类型的数据表。

5. 恢复灵活性

  • 描述:支持将备份恢复到不同的服务器或不同的数据库实例,使得数据迁移和恢复变得更加灵活和方便。

6. 高效的备份速度

  • 描述:通过并行处理等技术,Percona XtraBackup 可以显著提高备份速度,尤其是在处理大型数据库时。

7. 支持复制

  • 描述:能够备份 MySQL 主从复制环境中的数据,并支持从复制环境中恢复数据,有助于维持数据一致性。

8. 易于集成和自动化

  • 描述:可以与各种自动化工具和脚本集成,支持定期备份和自动化备份任务,提高运维效率。

9. 开源和免费

  • 描述:作为开源软件,Percona XtraBackup 是免费的,社区支持和文档丰富,能够满足大多数用户的需求。

10. 恢复到任意时间点

  • 描述:支持将备份恢复到任意时间点(基于事务日志),使得用户可以从最近的备份中恢复到具体的时间点。

11. 支持多种平台

  • 描述:兼容各种操作系统和平台,包括 Linux 和 Windows,使得在不同环境下的使用更加灵活。


Centos安装XtraBackup

1. 安装必要依赖

sudo yum install epel-release
sudo yum install zstd

 2.添加 Percona 仓库及 安装xtrabackup

--添加 Percona 仓库
sudo yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
sudo percona-release setup ps80
--安装2.4版本
sudo yum install percona-xtrabackup-24
--安装8.0版本
sudo yum install percona-xtrabackup-80
--卸载2.4版本
sudo yum remove percona-xtrabackup-24
--卸载8.0版本
sudo yum remove percona-xtrabackup-80

3、查看安装版本

xtrabackup --version

全量备份文件

1、执行数据备份前需在源数据库创建备份用户并授予相应权限

--查看当前用户权限
SHOW GRANTS FOR CURRENT_USER();
--创建备份用户
CREATE USER 'backup_user'@'localhost' IDENTIFIED BY 'your_password';
--授予备份过程必要权限
GRANT BACKUP_ADMIN ON *.* TO 'backup_user'@'localhost';
GRANT PROCESS ON *.* TO 'backup_user'@'localhost';
GRANT RELOAD ON *.* TO 'backup_user'@'localhost';
GRANT RELOAD, LOCK TABLES, SHOW VIEW, PROCESS, SELECT ON *.* TO 'backup_user'@'localhost';
GRANT SELECT ON performance_schema.* TO 'backup_user'@'localhost';
GRANT SELECT ON mysql.* TO 'backup_user'@'localhost';
--查看备份用户权限
SHOW GRANTS FOR 'backup_user'@'localhost';
--刷新权限
FLUSH PRIVILEGES;

2、全量备份数据

--备份数据
xtrabackup --backup --target-dir=/path/to/backup --user=backup_user --password=your_password

3、准备备份文件

xtrabackup --prepare --target-dir=/path/to/backup

4、如果是文件迁入其他MYSQL数据库

 迁移后目标数据库同源数据库一致(包括:用户信息、数据信息、视图、基础配置等)

--文件传输
scp -r /path/to/backup user@remote_host:/path/to/destination

--目标服务器操作: 
1、相同步骤安装percona及xtrabackup
2、清空当前data目录下所有文件
3、关闭mysql服务
4、执行copy或者move脚本(文件比较大或者磁盘空间不足的情况下可使用move)
xtrabackup --copy-back --target-dir=/path/to/destination
xtrabackup --move-back --target-dir=/path/to/destination

--可能需要调整权限
chown -R mysql:mysql /path/to/mysql/data

--重启服务进行数据验证
sudo systemctl start mysqld

5、综上,就完成了整库数据的迁移备份


增量备份文件

1、全量备份是进行增量备份的前提,执行增量备份前需执行过全量备份

2、创建增量备份

xtrabackup --backup --incremental --incremental-basedir=/path/to/previous/backup --target-dir=/path/to/backup/incremental --user=root --password=your_password

--incremental: 指定这是一个增量备份。
--incremental-basedir: 指定之前的全量备份或增量备份目录。

3、验证备份

xtrabackup --prepare --apply-log-only --target-dir=/path/to/backup/incremental

4、合并增量备份(假设有多个增量备份)

如果需要将增量备份合并到全量备份中,你需要先对全量备份执行 --prepare 命令,然后再将增量备份合并到全量备份中。

--对全量备份进行预处理
xtrabackup --prepare --apply-log-only --target-dir=/path/to/backup/full
-- 对每个增量备份进行合并

xtrabackup --prepare --apply-log-only --target-dir=/path/to/backup/full --incremental-dir=/path/to/backup/incremental1

xtrabackup --prepare --apply-log-only --target-dir=/path/to/backup/full --incremental-dir=/path/to/backup/incremental2
-- 准备最终备份(这个命令将应用所有增量日志,使备份成为一个完整的一致性备份。

)
xtrabackup --prepare --target-dir=/path/to/backup/full

5、综上,就完成了增量备份的操作。

注意事项
  • 备份目录:确保备份目录有足够的磁盘空间,并且指定的目录路径正确。
  • 日志文件:检查 MySQL 错误日志,以便在备份和恢复过程中发现任何潜在问题。
  • 权限:确保 xtrabackup 命令运行的用户具有足够的权限进行备份和恢复操作。
  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL数据迁移和备份恢复策略是确保数据安全和可靠性的重要措施。下面是一些常用的策略: 1. 数据迁移策略: - 导出和导入:使用`mysqldump`命令将源数据库导出为SQL文件,然后使用`mysql`命令将SQL文件导入到目标数据库。 - 复制和同步:通过MySQL复制功能,将数据从源数据库复制到目标数据库实现实时或定期的数据同步。 - 第三方工具:使用一些数据库迁移工具(如DMS、Liquibase等),可以更方便地进行数据迁移和同步。 2. 数据备份策略: - 定期全量备份:定期对整个数据库进行全量备份,以保留完整的数据副本。 - 增量备份:基于全量备份,通过记录增量日志或使用MySQL的二进制日志(Binary Log)进行增量备份,以减少备份时间和存储空间。 - 热备份:使用MySQL的在线备份工具(如Percona XtraBackupMySQL Enterprise Backup等),可以在数据库运行时进行备份,减少对业务的影响。 3. 数据恢复策略: - 全量恢复:将全量备份文件还原到目标数据库,恢复所有数据。 - 增量恢复:先恢复全量备份,再将增量备份文件依次应用到目标数据库实现数据的增量恢复。 - 点恢复:基于二进制日志(Binary Log)或增量备份,可以选择在特定时间点进行数据恢复,以满足特定需求。 4. 测试和验证: - 定期进行备份验证:定期恢复备份数据到测试环境,验证备份的完整性和可用性。 - 模拟灾难恢复:模拟灾难事件,测试数据恢复过程,确保备份和恢复策略的可行性和有效性。 无论是数据迁移还是备份恢复,都需要注意以下几点: - 定期执行:根据业务需求和数据变更频率,制定合理的执行计划,确保数据的及时备份和迁移。 - 存储安全:将备份数据存储在安全可靠的位置,以免遭受意外损坏或安全威胁。 - 监控和报警:对迁移和备份过程进行监控,并设置相应的报警机制,及时发现和解决潜在问题。 请注意,具体的迁移和备份恢复策略应根据业务需求、数据量和可用资源进行定制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值