zoukankan      html  css  js  c++  java
  • 使用percona-xtrabackup工具解决mysql的主从同步问题

    公司的项目上出现了主从同步异常问题,数据库比较大,所以采用了重做主从同步的方法。

    Xtrabackup是由percona开发的一个开源软件,它是innodb热备工具ibbackup(收费的商业软件)的一个开源替代品。Xtrabackup由个部分组成:xtrabackup和innobackupex,其中xtrabackup工具用于备份innodb和 xtraDB引擎的表;而innobackupex工具用于备份myisam和innodb引擎的表。

    1. 确认操作系统版本  

    cat /etc/redhat-release
    # 公司使用的是centos,以centos7 为例
    

    2 确认mysql版本

    mysqld --help
    mysqld  Ver 5.7.33 for Linux on x86_64 (MySQL Community Server (GPL))
    Copyright (c) 2000, 2021, Oracle and/or its affiliates.

    3. 下载对应版本的 

    https://www.percona.com/doc/percona-xtrabackup/2.4/index.html

    https://www.percona.com/doc/percona-xtrabackup/2.4/installation.html#installing-percona-xtrabackup-from-a-binary-tarball  

    因为我的虚拟机环境里是5.7的数据库 ,就下载安装了Percona XtraBackup 2.4 ,

    在  https://www.percona.com/services/policies/percona-software-support-lifecycle 页面中可以查看xtrabackup对不同版本mysql的支持情况

    percona xtrabackup 2.4 支持  mysql 5.7以下版本 ; percona xtrabackup 8.0 支持 mysql 8.0以上版本

    # 下载
    wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm # 安装 yum localinstall -y percona-xtrabackup-80-8.0.5-1.el7.x86_64.rpm

    4. 全量备份

    $ /usr/bin/innobackupex --defaults-file=${my.cnf}  --socket=/tmp/mysql.sock --user=${user} --password=${password} /mnt/databak
    
    # 注意: 备份数据使用的空间要大于主库目录的大小
    # ${my.cnf}为配置文件地址 # ${user}和${password}变量为数据库账号和密码 # /mnt/databak 为备份存储目录。 # /tmp/mysql.sock 为mysql 的socket连接文件,可写可不写

    #命令执行后会在 /mnt/databak/目录下生成对应的备份文件目录: /mnt/databak/2021-12-12_12-12-12

    5. 预处理: 进行事务检查(也可以拷贝到从库后再进行检查)

    $ innobackupex --defaults-file=${my.cnf} --user=${user} --password=${password} --socket=/tmp/mysql.sock --apply-log --use-memory=1G /mnt/databak/2021-12-12_12-12-12

    # 指定 --use-memory 可以加快命令执行速度

    6. scp备份目录到从库

    scp -r /mnt/databak/2021-12-12_12-12-12  192.168.2.2://mnt/databak/
    

    7. 关闭清理从库

    systemctl stop mysqld
    
    rm -rf  /path/mysql/datadir/*
    rm -rf  /path/mysql/binlogs/*
    rm -rf  /path/mysqlylogs/*
    
    # 具体路径可在mysql配置文件中看到
    

    8. 恢复数据

    innobackupex ---defaults-file=${my.cnf}  --socket=/tmp/mysql.sock --user=${user} --password=${password} --copy-back /mnt/databak/2021-12-12_12-12-12
    

    9. 设置权限并启动从库

    chown -R mysql:mysql  /path/mysql  
    systemctl start mysqld

    10. 恢复数据

    # 查看主库中master位置
    cat /mnt/databak/2021-12-12_12-12-12/xtrabackup_binlog_info
    fb-bin.001212   122222222
    
    
    # 如果是新建主从,需在主库建立用户
    mysql> grant replication slave,reload,super on *.* to repluser@192.168.3.13 identified by 'replpass';
    mysql> FLUSH PRIVILEGES;
    
    
    # 登录从库,执行同步
    mysql> change master to master_host=${host}, master_user=${user}, master_password=${password}, master_log_file='fb-bin.001212',master_log_pos=122222222;
    
    mysql> start slave;
    
    # 查看从库状态
    mysql>  show slave statusG;
    
    #  查看 Slave_IO_Running: Yes  和  Slave_SQL_Running: Yes 是否正常
    # 观察 Master_Log_File:  和 Relay_Master_Log_File 
    
  • 相关阅读:
    366. Find Leaves of Binary Tree
    369. Plus One Linked List
    370. Range Addition
    411. Minimum Unique Word Abbreviation
    379. Design Phone Directory
    Permutation
    leetcode216-Combination Sum III
    百度star编程赛-练习1
    腾讯暑期实习生面试题
    素数筛选
  • 原文地址:https://www.cnblogs.com/resn/p/14675895.html
Copyright © 2011-2022 走看看