zoukankan      html  css  js  c++  java
  • MySQL8.0.x 配置gtid主动同步

    MySQL8.0.x 配置gtid主动同步

    环境配置

    IP 数据库版本 角色
    10.0.1.11 8.0.20 master
    10.0.1.12 8.0.20 slave
    10.0.1.13 8.0.20 slave

    Master主配置文件

    master配置文件:

    [root@localhost ~]#  grep -v '^#' /etc/my.cnf
    
    [mysqld]
    
    log_timestamps=SYSTEM
    datadir=/data/mysql_data
    socket=/data/mysql_data/mysql.sock
    
    
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    
    gtid-mode=on                        # gtid开关
    enforce-gtid-consistency=true       # 强制GTID一致
    log-slave-updates=1                 # 从库强制更新binlog日志
    
    log_bin = mysql-bin
    binlog_format = mixed
    expire_logs_days = 15
    server-id = 51     # server-id 三台不同 ,db2为52,db3为53
    default_authentication_plugin=mysql_native_password   #修改密码加密方式
    
    [mysql]
    socket=/data/mysql_data/mysql.sock
    
    [root@master ]# systemctl restart mysql
    
    [root@master ]# mysql -uroot -p'dgdB20I5!@#'
    mysql> create user 'repl'@'10.0.1.%' identified by 'dgdB20I5!@#'; 建立同步的账号
    
    mysql>grant replication slave on *.* to 'repl'@'10.0.1.%';
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.01 sec)
    

    测试一下建立的账号是否可以在slave上登录(可以登录)

    [root@localhost ~]# mysql -urepl -h 10.0.1.11 -p'dgdB20I5!@#'
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 20
    Server version: 8.0.25 MySQL Community Server - GPL
    
    Copyright (c) 2000, 2021, Oracle and/or its affiliates.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    mysql> show variables like "%gtid%";
    +----------------------------------+----------------------------------------+
    | Variable_name                    | Value                                  |
    +----------------------------------+----------------------------------------+
    | binlog_gtid_simple_recovery      | ON                                     |
    | enforce_gtid_consistency         | ON                                     |
    | gtid_executed                    | 203eafcb-c9f9-11eb-b5c4-000c2961a60a:1 |
    | gtid_executed_compression_period | 0                                      |
    | gtid_mode                        | ON                                     |
    | gtid_next                        | AUTOMATIC                              |
    | gtid_owned                       |                                        |
    | gtid_purged                      |                                        |
    | session_track_gtids              | OFF                                    |
    +----------------------------------+----------------------------------------+
    9 rows in set (0.01 sec)
    
    

    查看服务器的UUID:

    mysql> show global variables like '%uuid%';
    +---------------+--------------------------------------+
    | Variable_name | Value                                |
    +---------------+--------------------------------------+
    | server_uuid   | 203eafcb-c9f9-11eb-b5c4-000c2961a60a |
    +---------------+--------------------------------------+
    1 row in set (0.01 sec)
    
    

    查看主服务器的状态:

    mysql> show master status;
    +------------------+----------+--------------+------------------+----------------------------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                 |
    +------------------+----------+--------------+------------------+----------------------------------------+
    | mysql-bin.000001 |      347 |              |                  | 203eafcb-c9f9-11eb-b5c4-000c2961a60a:1 |
    +------------------+----------+--------------+------------------+----------------------------------------+
    1 row in set (0.00 sec)
    

    slave1主配置文件:

    [root@localhost ~]#  grep -v '^#' /etc/my.cnf
    
    [mysqld]
    
    datadir=/data/mysql_data
    socket=/data/mysql_data/mysql.sock
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    log_timestamps=SYSTEM
    
    
    gtid-mode=on                        # gtid开关
    enforce-gtid-consistency=true       # 强制GTID一致
    log-slave-updates=1                 # 从库强制更新binlog日志
    
    log_bin = mysql-bin
    binlog_format = mixed
    expire_logs_days = 15
    server-id = 52     # server-id 三台不同 ,db2为52,db3为53
    default_authentication_plugin=mysql_native_password   #修改密码加密方式
    [mysql]
    socket=/data/mysql_data/mysql.sock
    
    
    [root@node1 ]# systemctl restart mysqld
    

    在slave1连接Master数据库

    [root@node1 ]# mysql -uroot -p'dgdB20I5!@#'
    mysql> change master to master_host='10.0.1.11',master_user='repl',master_password='dgdB20I5!@#';   #指定主库IP,使用的用户,密码
    mysql> start slave;
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    查看slave状态:
    mysql> show slave status G;
    *************************** 1. row ***************************
            Slave_IO_State: Waiting for master to send event
             Master_Host: 10.0.1.6
             Master_User: repl
             Master_Port: 3306
            Connect_Retry: 60
           Master_Log_File: binlog.000003
         Read_Master_Log_Pos: 878
            Relay_Log_File: node1-relay-bin.000003
            Relay_Log_Pos: 1086
        Relay_Master_Log_File: binlog.000003
           Slave_IO_Running: Yes
          Slave_SQL_Running: Yes
    

    I/O线程和SQL线程

    a、从库I/O线程将主库上的日志复制到自己的中继日志( Relay Log )中。
    b、从库SQL线程从Relay log里面读取内容,从Exec_Master_Log_Pos位置开始执行读取到的更新事件,将更新内容写入到slave的db

    测试gtid主从复制

    在master上建立数据库slave上自动创建了。

    img

    在master上查看,可以看到slave的状态(主库的sever_id、从库的server_id、slave_UUID)

    mysql> show slave hosts;
    +-----------+------+------+-----------+--------------------------------------+
    | Server_id | Host | Port | Master_id | Slave_UUID                           |
    +-----------+------+------+-----------+--------------------------------------+
    |        53 |      | 3306 |        51 | 20528668-c9f9-11eb-92b2-0050562fc441 |
    |        52 |      | 3306 |        51 | 2053f3da-c9f9-11eb-9637-0050562c319e |
    +-----------+------+------+-----------+--------------------------------------+
    2 rows in set, 1 warning (0.00 sec)
    
    
    

    slave2主配置文件:

    [root@localhost ~]# grep -vE "^#" /etc/my.cnf
    
    [mysqld]
    log_timestamps=SYSTEM
    
    datadir=/data/mysql_data
    socket=/data/mysql_data/mysql.sock
    
    log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    
    
    gtid-mode=on                        # gtid开关
    enforce-gtid-consistency=true       # 强制GTID一致
    log-slave-updates=1                 # 从库强制更新binlog日志
    
    log_bin = mysql-bin
    binlog_format = mixed
    expire_logs_days = 15
    server-id = 53     # server-id 三台不同 ,db2为52,db3为53
    default_authentication_plugin=mysql_native_password   #修改密码加密方式
    [mysql]
    socket=/data/mysql_data/mysql.sock
    
    

    在slave2连接Master数据库

    命令同slave1连接数据库一样

    至此gtid主从复制搭建成功!!!!有什么问题欢迎留言指教。

  • 相关阅读:
    2016年第9本:系统之美
    2016年第8本:不可思议的心理控制实验
    2016年第7本:非暴力沟通
    用SDWebImage渐变加载图片
    iOS相册、相机、通讯录权限获取
    屏蔽iOS10模拟器海量的垃圾debug信息
    Swift
    Swift
    PlaceholderImageView
    Swift
  • 原文地址:https://www.cnblogs.com/Serverlessops/p/14883440.html
Copyright © 2011-2022 走看看