zoukankan      html  css  js  c++  java
  • 利用Xtrabackup工具在线部署MySQL 8.0主从复制

    1.基本信息:
    主库:
    master主机IP:10.16.2.17
    master主机名:mvxl0782
    binlog目录:/data/mysql/logs
    数据文件目录:/data/mysql/data
    版本:8.0.22

    从库:
    master主机IP:10.16.2.18
    master主机名:mvxl0783
    binlog目录:/data/mysql/logs
    数据文件目录:/data/mysql/data
    版本:8.0.22

    2.Xtrabackup工具准备
    下载并解压到/usr/local下

    https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz
    tar -zxvf mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz -C /usr/local/
    mv /usr/local/mysql-8.0.22-linux-glibc2.12-x86_64 /usr/local/mysql
    groupadd mysql && useradd -r -g -s /bin/nologin mysql mysql
    mkdir -p /data/mysql/{logs,data,tmp}
    chown -R mysql:mysql /usr/local/mysql

    chown -R mysql:mysql /data/mysql/

    修改环境变量:
    cat >> /etc/profile <<EOF
    export PATH=$PATH:/usr/local/mysql/bin

    EOF

    source /etc/profile

    3.slave主机上的准备
    slave主机:
    groupadd mysql && useradd -r -g -s /bin/nologin mysql mysql
    mkdir -p /data/mysql/{logs,data,tmp}

    master主机:
    scp -r /usr/local/mysql 10.16.2.18:/usr/local
    scp -p /data/mysql/my.cnf /data/mysql/

    slave主机:
    chown -R mysql:mysql /usr/local/mysql
    chown -R mysql:mysql /data/mysql/

    4.master在线用xtrabackup工具完全备份
    主库先建立备份帐号
    mysql> create user xbackup@'localhost' identified by 'mysql';
    mysql> grant reload,lock tables,replication client,replication slave,super on *.* xbackup@'localhost';

    master主机上执行:
    mkdir -p /data/backup
    chown -R mysql:mysql /data/backup
    innobackupex --user=xbackup --password='mysql' --defaults-file=/data/mysql/my.cnf /data/backup/
    备份在/data/backup/目录下,用日期命名的目录。

    5.将备份集打包传到slave主机上
    cd /data/backup/
    tar -cxvf 2016-05-17_16-23-34.tar 2016-05-17_16-23-34
    gzip 2016-05-17_16-23-34.tar
    scp 2016-05-17_16-23-34.tar.gz root@10.16.2.18:/data/backup
    cd /data/backup
    gzip -d 2016-05-17_16-23-34.tar.gz
    tar -zxvf 2016-05-17_16-23-34.tar

    tar -zxvif 2016-05-17_16-23-34.tar.gz -C /data/backup/
    chown -R mysql:mysql /data/backup

    6.全量恢复
    准备备份集:
    innobackupex --defaults-file=/data/mysql/my.cnf --apply-log /data/backup/2016-05-17_16-23-34
    执行恢复:
    innobackupex --defaults-file=/data/mysql/my.cnf --copy-back /data/backup/2016-05-17_16-23-34

    7.创建复制专用的账号
    master上执行:
    grant replication slave,replication client on *.* to 'repl'@'10.16.2.%' identified by "mysql";

    8.配置slave节点初始化参数文件
    配置slave端选项文件
    vim /data/mysql/my.cnf
    [mysqld]
    server_id=183306

    9.主库测试数据变化
    mysql> create table test.user2 as select * from mysql.user;
    mysql> show master statusG
    *************************** 1. row ***************************
    File: mysql-bin.000069
    Position: 5553
    Binlog_Do_DB:
    Binlog_Ignore_DB:
    Executed_Gtid_Set:
    1 row in set (0.00 sec)

    在上面做完全量备份时的日志信息如下:
    [mysql@mvxl0782 2016-05-17_16-23-34]$ cat xtrabackup_binlog_info
    mysql-bin.000069 1819

    手工刷新log后,日志信息如下:
    mysql> flush logs;
    mysql> show master statusG
    *************************** 1. row ***************************
    File: mysql-bin.000070
    Position: 120
    Binlog_Do_DB:
    Binlog_Ignore_DB:
    Executed_Gtid_Set:
    1 row in set (0.00 sec)

    10.启动slave MySQL服务
    [mysql@mvxl0783 data]$ mysqld --defaults-file=/data/mysql/my.cnf &

    11.配置slave复制环境
    mysql> change master to master_host='10.16.2.17',master_port=3306,master_user='repl',master_password='mysql',master_log_file='mysql-bin.000069',master_log_pos=1819;
    mysql> start slave;

    若在slave上在线clone slave:
    增加--slave-info和--safe-slave-backup
    --slave-info:将master的binary log文件名和偏移位置保存到xtrabackup_slave_info文件中
    --safe-slave-backup会暂停slave的sql线程,直到没有打开的临时表的时候开始备份,等备份结束后sql线程会自动启动,目的是保持一致性的复制状态。
    innobackupex命令支持--slave-info的参数,指定该参数备份,会产生一个xtrabackup_slave_info文件,文件中就有change master to的语句。

    12.验证是否同步
    master库:
    mysql> show tables;
    +--------------------+
    | Tables_in_test   |
    +--------------------+
    | user2        |
    +-------------------+
    mysql> create test.table zengxuewen as select * from mysql.user;

    slave库:
    mysql> use test;
    mysql> show tables;
    +-------------------+
    | Tables_in_test  |
    +-------------------+
    | user2        |
    +-------------------+
    至止,完成Xtrabackup工具在线部署MySQL 8.0主从复制。

  • 相关阅读:
    EntityFramework之领域驱动设计实践(二)
    博客园开始对X++语言语法高亮的支持
    一种来源于Microsoft Dynamics AX的权限管理设计思想
    使用InternalsVisibleToAttribute控制internal成员的访问
    EntityFramework之领域驱动设计实践:总结
    EntityFramework之领域驱动设计实践(九)
    EntityFramework之领域驱动设计实践(三)
    EntityFramework之领域驱动设计实践(七)
    EntityFramework之领域驱动设计实践(五)
    EntityFramework之领域驱动设计实践 (一)
  • 原文地址:https://www.cnblogs.com/OrcinusOrca/p/14765765.html
Copyright © 2011-2022 走看看