美文网首页
Percona XtraBackup 备份还原 MySQL Gr

Percona XtraBackup 备份还原 MySQL Gr

作者: SmalltalkVoice | 来源:发表于2025-01-15 10:53 被阅读0次

使用 Percona XtraBackup 备份 MySQL Group Replication(组复制) 需要确保备份过程与组复制架构兼容,同时保持数据的一致性。以下是使用 XtraBackup 备份 MySQL 组复制的具体步骤

准备工作:

确保组复制状态稳定
在开始备份之前,确认组复制集群的状态是稳定的,没有节点处于恢复或引导状态。
使用以下 SQL 查询检查组复制状态:

SHOW STATUS LIKE 'group_replication%';

备份步骤:

  1. 执行备份
    在选定的节点上运行以下命令开始备份:
xtrabackup --backup --target-dir=/path/to/backup/ --user=backup_user --password=backup_password

参数说明:

--backup:表示执行备份操作。
--target-dir:指定备份文件存储目录。
--user 和 --password:用于备份的 MySQL 用户及密码。

  1. 准备备份文件
    备份完成后,需对备份文件进行预处理,以确保备份数据的一致性。运行以下命令:
xtrabackup --prepare --target-dir=/path/to/backup/

此步骤会将未完成的事务应用到备份数据中,确保其与数据库一致。

  1. 验证备份
    在备份完成后,检查备份目录是否包含完整的数据文件(如 .ibd 文件和 .cnf 文件),并确认无报错。

  2. 备份文件存储
    将备份文件安全存储到远程存储设备、云存储或其他备份目标位置,以确保备份的可靠性。

还原步骤

  1. 选择一个备份文件作为基准
    使用之前通过 XtraBackup 创建的完整备份(从一个节点上获得),作为恢复集群数据的基准。这份备份应包括所有需要的数据库文件,并经过预处理(--prepare 步骤)。
  1. 停止所有节点的 MySQL 服务
    在恢复操作之前,停止集群中所有节点上的 MySQL 服务,以确保没有节点对数据库执行写操作。

在每个节点上运行以下命令:

sudo systemctl stop mysql
  1. 恢复备份到第一个节点
    从备份中恢复数据到第一个节点(通常是主节点或一个预定的节点):

(1) 清空数据目录
清空目标节点的 MySQL 数据目录(通常位于 /var/lib/mysql/),以确保没有遗留的数据:

sudo rm -rf /var/lib/mysql/*

(2) 恢复备份文件
将备份文件复制到目标节点的 MySQL 数据目录:

sudo cp -r /path/to/backup/* /var/lib/mysql/

(3) 修复权限
确保 MySQL 数据目录和文件的权限正确:

sudo chown -R mysql:mysql /var/lib/mysql/

(4) 启动 MySQL 服务
启动 MySQL 服务以使第一个节点恢复运行:

sudo systemctl start mysql

(5) 验证恢复
登录到 MySQL,检查数据是否已经正确恢复:

mysql -u root -p
SHOW DATABASES;
  1. 配置第一个节点为单独运行模式
    为了确保后续节点恢复时的集群数据一致性,暂时配置第一个节点为单独运行模式:

(1) 禁用组复制
登录到第一个节点的 MySQL,执行以下 SQL 命令以禁用组复制:

STOP GROUP_REPLICATION;

(2) 确保节点可以单独启动
编辑第一个节点的 MySQL 配置文件(如 /etc/mysql/my.cnf 或 /etc/my.cnf),确保没有自动启动组复制的配置。注释或移除以下配置项:

group_replication_start_on_boot = ON
  1. 恢复其他节点
    为集群的每个从节点依次执行以下步骤:

(1) 停止 MySQL 服务并清空数据目录

sudo systemctl stop mysql
sudo rm -rf /var/lib/mysql/*

(2) 恢复备份文件
将备份文件复制到目标节点的 MySQL 数据目录:

sudo cp -r /path/to/backup/* /var/lib/mysql/

(3) 修复权限

sudo chown -R mysql:mysql /var/lib/mysql/

(4) 启动 MySQL 服务

sudo systemctl start mysql

(5) 验证数据一致性
登录到 MySQL 检查数据是否正确恢复:

mysql -u root -p
SHOW DATABASES;
  1. 重新配置并启动组复制
    在所有节点完成恢复后,重新启动组复制以恢复集群的完整功能:

(1) 启用第一个节点的组复制
在第一个节点执行以下命令:

SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;

(2) 启用其他节点的组复制
在其他节点执行以下命令,让它们加入集群:

START GROUP_REPLICATION;
  1. 验证集群状态
    在任意一个节点上执行以下命令,检查所有节点的状态是否正常:
SELECT * FROM performance_schema.replication_group_members;

您应该看到所有节点都处于 ONLINE 状态,且 MEMBER_ROLE 为 PRIMARY 或 SECONDARY。

注意事项:

组复制恢复中的一致性

确保备份的节点与整个集群的数据一致。
如果集群使用了 GTID(全局事务 ID),所有节点的 GTID 必须保持一致。
避免自动启动组复制

在恢复过程中,防止节点在数据恢复时自动启动组复制,以避免引发不一致或冲突。
测试备份和恢复流程

在非生产环境中测试备份和恢复过程,确保操作流程无误。
负载分配

恢复后,根据业务需求分配主节点和从节点的角色,确保高可用性。

相关文章

网友评论

      本文标题:Percona XtraBackup 备份还原 MySQL Gr

      本文链接:https://www.haomeiwen.com/subject/sbvwyjtx.html