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主从复制搭建成功!!!!有什么问题欢迎留言指教。

  • 相关阅读:
    python 执行sql得到字典格式数据
    python爬虫 url链接编码成gbk2312格式
    windows环境下elasticsearch安装教程(单节点)
    python SQLServer 存储图片
    爬虫的本质是和分布式爬虫的关系
    requests form data 请求 爬虫
    mysql 删除 binlog 日志文件
    查看mysql数据表的大小
    xshell 连接报错 Disconnected from remote host
    centos 7.3 安装 mysqldb 报错 EnvironmentError: mysql_config not found ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
  • 原文地址:https://www.cnblogs.com/Serverlessops/p/14883440.html
Copyright © 2011-2022 走看看