MySQL9.1.0实现GTID模式的项目实践

 更新时间:2025年02月24日 09:27:29   作者:妍妍的宝贝  
本文主要介绍了在MySQL 9.1.0中实现GTID模式的主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

本章节实现MySQL主从复制GTID模式

主机IP地址端口
mysql-master192.168.239.1003306
mysql-slave1192.168.239.1103306
mysql-slave2192.168.239.1203306

1 实验准备工作

1.1 下载并安装官方MySQL的rpm包

[root@master mysql_rpm]#  yum localinstall mysql-community-server-9.1.0-1.el7.x86_64.rpm \
 mysql-community-common-9.1.0-1.el7.x86_64.rpm \
 mysql-community-client-9.1.0-1.el7.x86_64.rpm \
 mysql-community-icu-data-files-9.1.0-1.el7.x86_64.rpm \
 mysql-community-libs-9.1.0-1.el7.x86_64.rpm \
 mysql-community-client-plugins-9.1.0-1.el7.x86_64.rpm

1.2 设置DNS解析

 [root@master ~]# cat >> /etc/hosts <<EOF
 > 192.168.239.100 master
 > 192.168.239.110 slave1
 > 192.168.239.120 slave2
 > EOF
 ​
 [root@slave1 ~]# cat >> /etc/hosts <<EOF
 > 192.168.239.100 master
 > 192.168.239.110 slave1
 > 192.168.239.120 slave2
 > EOF
 ​
 [root@slave2 ~]# cat >> /etc/hosts <<EOF
 > 192.168.239.100 master
 > 192.168.239.110 slave1
 > 192.168.239.120 slave2
 > EOF

1.3 修改密码

MASTER SLAVE1 SLAVE2 均是以下这样设置

 # 改变密码策略
 [root@master ~]# cat >> /etc/my.cnf <<EOF
 validate_password.policy=LOW
 validate_password.length=0
 EOF
 ​
 # 启动MySQL服务
 [root@master ~]# systemctl start mysqld
 [root@master ~]# grep password /var/log/mysqld.log 
 2024-12-14T14:29:20.406601Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: (:lt/hLIW4da
 [root@master ~]# mysql -uroot -p'(:lt/hLIW4da'
 ​
 # 修改数据库密码
 mysql> alter user 'root'@'localhost' identified by '123456';
 mysql> flush privileges;

2 GTID模式实现主从复制

2.1 增加配置文件内容

 [root@master ~]# cat >> /etc/my.cnf <<EOF
 log_bin=mysql-bin
 symbolic-links=0    # 禁用符号链接
 server_id=10 # 设置serverID 为机器的标识符
 ​
 log_bin=mysql-bin # 开启 log_bin 日志
 # 开启GTID的前提
 gtid_mode=ON
 enforce-gtid-consistency=ON
 EOF
 ​
 ​
 [root@slave1 ~]# cat >> /etc/my.cnf <<EOF
 log_bin=mysql-bin
 symbolic-links=0    # 禁用符号链接
 server_id=20 # 设置serverID 为机器的标识符
 ​
 # 开启GTID的前提
 gtid_mode=ON
 enforce-gtid-consistency=ON
 EOF
 ​
 ​
 [root@slave2 ~]# cat >> /etc/my.cnf <<EOF
 log_bin=mysql-bin
 symbolic-links=0    # 禁用符号链接
 server_id=30 # 设置serverID 为机器的标识符
 ​
 # 开启GTID的前提
 gtid_mode=ON
 enforce-gtid-consistency=ON
 EOF
 ​
 # 重启 MySQL 服务重新加载
 [root@master ~]# systemctl restart mysqld
 [root@slave1 ~]# systemctl restart mysqld
 [root@slave2 ~]# systemctl restart mysqld

2.2 创建主从复制账号

MASTER

 mysql> set sql_log_bin=0;    # 关闭二进制SQL日志写入
 Query OK, 0 rows affected (0.00 sec)
 ​
 mysql> show variables like 'sql_log_bin';
 +---------------+-------+
 | Variable_name | Value |
 +---------------+-------+
 | sql_log_bin   | OFF   |
 +---------------+-------+
 ​
 mysql> CREATE USER 'repl'@'%' IDENTIFIED BY '123456';
 ​
 # 赋予所有库所有表 repl 用户 REPLICATION SLAVE 的权限
 mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
 mysql> FLUSH PRIVILEGES;
 mysql> set sql_log_bin=1;

SLAVE1

 mysql> set sql_log_bin=0;
 Query OK, 0 rows affected (0.00 sec)
 ​
 mysql> show variables like 'sql_log_bin';
 +---------------+-------+
 | Variable_name | Value |
 +---------------+-------+
 | sql_log_bin   | OFF   |
 +---------------+-------+
 ​
 mysql> CREATE USER 'repl'@'%' IDENTIFIED BY '123456';
 mysql> FLUSH PRIVILEGES;
 mysql> set sql_log_bin=1;

SLAVE2

 mysql> set sql_log_bin=0;
 Query OK, 0 rows affected (0.00 sec)
 ​
 mysql> show variables like 'sql_log_bin';
 +---------------+-------+
 | Variable_name | Value |
 +---------------+-------+
 | sql_log_bin   | OFF   |
 +---------------+-------+
 ​
 mysql> CREATE USER 'repl'@'%' IDENTIFIED BY '123456';
 mysql> FLUSH PRIVILEGES;
 mysql> set sql_log_bin=1;

2.3 实现GTID的自动定位

SLAVE1 && SLAVE2

 mysql> SET SQL_LOG_BIN=0;   # 关闭语句记录
 ​
 # 指定主服务器的IP端口以及授权过的用户repl,并开启自动定位
 mysql> CHANGE REPLICATION SOURCE TO 
 SOURCE_HOST='192.168.239.100',
 SOURCE_PORT=3306,
 SOURCE_USER='repl',
 SOURCE_PASSWORD='123456',
 GET_SOURCE_PUBLIC_KEY=1,    # 信任证书
 SOURCE_AUTO_POSITION=1;     # 开启自动定位功能
 ​
 mysql> START REPLICA;
 ​
 # 假如说失败需要执行     STOP REPLICA;   停止复制
 # 之后再执行     RESET REPLICA;  删除配置的语句
 ​
 # 查看连接 master 是否正常
 mysql> SHOW REPLICA STATUS\G
 *************************** 1. row ***************************
              Replica_IO_State: Waiting for source to send event
                   Source_Host: 192.168.239.100
                   Source_User: repl
                   Source_Port: 3306
                 Connect_Retry: 60
               Source_Log_File: mysql-bin.000001
           Read_Source_Log_Pos: 158
                Relay_Log_File: slave2-relay-bin.000002
                 Relay_Log_Pos: 375
         Relay_Source_Log_File: mysql-bin.000001
            Replica_IO_Running: Yes      # IO表示链接网络没有问题
           Replica_SQL_Running: Yes      # SQL表示本地同步没有问题,如有问题基本上就是配置文件的问题
 ​
 ​
 mysql> SET SQL_LOG_BIN=0; # 开启语句记录

3 导入数据查看是否成功

3.1 主服务器导入SQL脚本

 [root@master ~]# mysql -uroot -p123456 
 mysql> create database gtid;
 Query OK, 1 row affected (0.00 sec)
 ​
 mysql> use gtid
 Database changed
 mysql> source gtid.sql;
 Query OK, 0 rows affected (0.00 sec)
 ​
 Query OK, 0 rows affected (0.00 sec)
 ​
 ​
 mysql> show tables;
 +----------------------------------------+
 | Tables_in_gtid                         |
 +----------------------------------------+
 | aaa                                    |
 | abi_http_log                           |
 | act_app_appdef                         |
 | act_app_databasechangelog              |
 | act_app_databasechangeloglock          |
 +----------------------------------------+

3.2 两个从服务器查看是否复制同步

[root@ slave1 && slave2]# mysql -uroot -p123456
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| gtid               |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

mysql> use gtid 
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables
+----------------------------------------+
| Tables_in_gtid                         |
+----------------------------------------+
| aaa                                    |
| abi_http_log                           |
| act_app_appdef                         |
| act_app_databasechangelog              |
| act_app_databasechangeloglock          |
+----------------------------------------+

到此这篇关于MySQL9.1.0实现GTID模式的项目实践的文章就介绍到这了,更多相关MySQL9.1.0 GTID模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • MySQL学习之日期函数的用法详解

    MySQL学习之日期函数的用法详解

    本文将学习MySQL的日期函数,在前面章节的练习中,我们就利用过NOW()函数来获取过当前系统时间,用DATEDIFF函数来计算日期相差的天数,接下来我们就系统的学习一下 日期函数
    2022-08-08
  • mysql中cast函数用法小结

    mysql中cast函数用法小结

    在MySQL中,CAST函数用于将一个表达式转换为指定的数据类型,本文主要介绍了mysql中cast函数用法小结,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • mysql varchar类型求和实例操作

    mysql varchar类型求和实例操作

    在本文里我们给大家分享了关于mysql varchar类型求和实例操作以及相关知识点,需要的朋友们学习参考下。
    2019-03-03
  • Mysql中通过生日计算年龄的多种方法

    Mysql中通过生日计算年龄的多种方法

    本文给大家分享mysql通过生日计算年龄的方法,每一种方法都非常不错,需要的朋友参考下吧
    2018-03-03
  • MySQL中的唯一性约束与NULL详解

    MySQL中的唯一性约束与NULL详解

    这里记录的是很久之前的一个 bug 了,主要给大家介绍了关于MySQL中唯一性约束与NULL的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • mysql删除无用用户的方法实现

    mysql删除无用用户的方法实现

    本文主要介绍了mysql删除无用用户的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • 服务器数据库编码格式问题解决方案

    服务器数据库编码格式问题解决方案

    这篇文章主要介绍了服务器数据库编码格式问题解决方案的相关资料,需要的朋友可以参考下
    2016-11-11
  • mysql数据库插入速度和读取速度的调整记录

    mysql数据库插入速度和读取速度的调整记录

    由于项目变态需求;需要在一个比较短时间段急剧增加数据库记录(两三天内,由于0增加至4亿)。在整个过程调优过程非常艰辛
    2012-07-07
  • Window10下mysql 5.7.21 安装配置方法图文教程

    Window10下mysql 5.7.21 安装配置方法图文教程

    这篇文章主要为大家详细介绍了Window10下mysql 5.7.21 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • MySQL之MyISAM存储引擎的非聚簇索引详解

    MySQL之MyISAM存储引擎的非聚簇索引详解

    这篇文章主要为大家详细介绍了MySQL之MyISAM存储引擎的非聚簇索引,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03

最新评论