通过xtrabackup不停机重做mysql主从

MySQL备份与恢复操作指南
一、环境准备

  • 操作系统:CentOS 7
  • 数据库版本:Percona Server for MySQL 8.0
    二、备份工具安装
  1. 导入Percona仓库:
    yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
    
  2. 安装Percona XtraBackup工具:
    yum -y install percona-xtrabackup-80
    

三、数据备份流程

  1. 执行全量备份:
    注意要给用户backup权限
    grant BACKUP_ADMIN on *.* to ‘root’@‘%’;
    flush privileges;
    
    xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/tmp/data_full   --user=root --password=***** --socket=/var/lib/mysql/mysql.sock
    
    
    • --defaults-file:指定配置文件路径,用于读取数据库连接信息。
    • --apply-log:确保备份包含自上次备份以来的所有事务日志。
    • --apply-log-only:仅应用事务日志,不进行实际的数据复制,加快备份速度。
    • --copy-back:将备份文件复制回原始数据目录。
    • --parallel=10:使用10个线程进行数据复制,提高备份效率。
    • --target-dir:指定备份文件存储路径。
    • --datadir:指定MySQL数据存储路径。
  2. 传输备份文件至目标服务器:
    scp -r /tmp/data_full 192.168.1.1:/tmp
    
  3. 在从库服务器上进行一致性检查:
    xtrabackup --prepare --target-dir=/tmp/data_full
    
    • --prepare:准备备份文件,使其能够用于恢复操作。
  4. 数据库恢复步骤:
    • 确认目标数据库目录为空:
      ls -la /data/TDP/mysql/data/
      
      确保目录内无其他文件或子目录。
    • 确认数据库服务已停止:
      systemctl status mysqld
      
      如果服务正在运行,使用以下命令停止:
      systemctl stop mysqld
      
    • 执行恢复操作:
      xtrabackup --prepare --target-dir=/tmp/data_full
      xtrabackup --copy-back --target-dir=/tmp/data_full --datadir=/data/TDP/mysql/data/
      
    • 修复权限:
      chown -R mysql.mysql /data/TDP/mysql/data/
      
    • 启动数据库服务:
      systemctl start mysqld
      
    • 处理常见报错:
      • 如果遇到“日志不存在”的错误,可以通过以下命令手动创建日志文件,并赋予mysql用户权限:
        touch /var/log/mysqld.log
        chown mysql.mysql /var/log/mysqld.log
        
      • 如果遇到“pid文件错误”,需要根据报错信息将mysqld.service的配置文件中的PidFile指令修改为正确的pid文件名称。
        四、注意事项
  • 在执行备份和恢复操作之前,请确保已经备份了所有重要的配置文件。
  • 在恢复过程中,数据库服务可能会暂时不可用,请在业务低峰期进行。
  • 恢复完成后,建议进行数据库完整性检查,确保数据一致性。
posted @ 2024-04-10 15:34  培天王  阅读(200)  评论(0)    收藏  举报