MySQL5.7实现GTID功能的实验流程及结果
admin
2023-04-15 22:41:28
0

下文给大家带来MySQL5.7实现GTID功能的实验流程及结果,希望能够给大家在实际运用中带来一定的帮助,

MYSQL涉及的东西比较多,理论也不多,网上有很多书籍,今天我们就用在行业内累计的经验做一个解答。

192.168.205.37: as master server 
192.168.205.47: as slave server 
OS: centos 7 1810 with mini install 
mysql-5.7.26-el7-x86_64.tar.gz

GTID(global transaction ID)全局事务标识符,mysql5.6版本开始支持,GTID复制不像传统的复制方式(异步延复制、半同步复制)需要找到binlog和pos点,只需要知道master的IP、端口、账号、密码即可,开启GDIT后,执行change master to master_auto_position=1即可,它会自动寻找同步。我们使用mysql5.7开启两个server,一个为主另一个为从,测试GDIT功能。

  1. 解压缩文件
    [root@centos7 mysql]#tar xvf mysql-5.7.26-el7-x86_64.tar.gz -C /usr/local/  
  2. 创建软链接
    [root@centos7 local]#ln -s mysql-5.7.26-el7-x86_64/ mysql
  3. 添加mysql帐号
    [root@centos7 local]#useradd -r -s /bin/false mysql
  4. 准备环境变量
    [root@centos7 mysql]#echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
    [root@centos7 mysql]#echo $PATH  
  5. 准备数据目录(可以不建,初始化数据库时会自动创建)
    [root@centos7 mysql]#mkdir /data/mysql
    [root@centos7 mysql]#chown mysql:mysql /data/mysql
  6. 安装相关包(跟据需要安装,初始化时会提示)
    [root@centos7 mysql]#yum install libaio
  7. 初步化数据库
    [root@centos7 mysql]#mysqld --initialize --user=mysql --datadir=/data/mysql
    2019-08-12T00:43:03.799485Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
    2019-08-12T00:43:04.007086Z 0 [Warning] InnoDB: New log files created, LSN=45790
    2019-08-12T00:43:04.043130Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
    2019-08-12T00:43:04.100702Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 24ddb90b-bc9a-11e9-856e-000c2956e1ea.
    2019-08-12T00:43:04.101693Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
    2019-08-12T00:43:04.102159Z 1 [Note] A temporary password is generated for root@localhost: Ia-ClrMga7L/
  8. 修改数据库配置文件
    [root@centos7 mysql]#cp -b /etc/my.cnf{,.bak}
    [root@centos7 mysql]#rpm -qf /etc/my.cnf
    mariadb-libs-5.5.60-1.el7_5.x86_64
    [root@centos7 mysql]#vi /etc/my.cnf
    [mysqld]
    datadir=/data/mysql
    socket=/data/mysql/mysql.sock                                                                                                      
    log-error=/data/mysql/mysql.log
    pid-file=/data/mysql/mysql.pid
    [client]
    socket=/data/mysql/mysql.sock
  9. 准备启动脚本
    [root@centos7 mysql]#cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
    [root@centos7 mysql]#chkconfig --list
    [root@centos7 mysql]#chkconfig --add mysqld
    [root@centos7 mysql]#chkconfig --list      
    [root@centos7 mysql]#service mysqld start
    Starting MySQL.Logging to '/data/mysql/mysql.log'.
     SUCCESS! 
  10. 修改密码
    [root@centos7 mysql]#mysql -p"Ia-ClrMga7L/"
    [root@centos7 mysql]#mysqladmin -uroot -p"Ia-ClrMga7L/" password centos
    [root@centos7 mysql]#mysql -pcentos
  11. 数据库的用户帐号存放的表发生了变化,没有password,用authentication_string代替
    mysql> desc user;
    mysql>  select user,host,authentication_string from user;
    +---------------+-----------+-------------------------------------------+
    | user          | host      | authentication_string                     |
    +---------------+-----------+-------------------------------------------+
    | root          | localhost | *128977E278358FF80A246B5046F51043A2B1FCED |
    | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    | mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    +---------------+-----------+-------------------------------------------+
    3 rows in set (0.00 sec)
  12. 编辑配置文件设置主云服务器,开启GTID功能
    [root@centos7 ~]#vi /etc/my.cnf        
    [mysqld]
    server-id=37
    log-bin                                                                                                                            
    gtid_mode=ON
    enforce_gtid_consistency
    datadir=/data/mysql
    socket=/data/mysql/mysql.sock
    log-error=/data/mysql/mysql.log
    pid-file=/data/mysql/mysql.pid
    [client]
    socket=/data/mysql/mysql.sock
    [root@centos7 ~]#service mysqld restart
    Shutting down MySQL. SUCCESS! 
    Starting MySQL. SUCCESS! 
  13. 创建复制帐号
    mysql> grant replication slave on *.* to repluser@'192.168.205.%' identified by 'centos';
    Query OK, 0 rows affected, 1 warning (0.00 sec)
  14. 在从服务器上设置配置文件
    [root@centos7 ~]#vi /etc/my.cnf         
    [mysqld]
    server-id=47
    gtid_mode=ON
    enforce_gtid_consistency
    datadir=/data/mysql
    socket=/data/mysql/mysql.sock
    log-error=/data/mysql/mysql.log
    pid-file=/data/mysql/mysql.pid                                                                                                     
    [client]
    socket=/data/mysql/mysql.sock
    [root@centos7 ~]#service  mysqld restart
    Shutting down MySQL.. SUCCESS! 
    Starting MySQL. SUCCESS! 
  15. 在从服务器上登录,并修改change master to, 不需要指位置和文件名
    [root@centos7 ~]#mysql -pcentos
    mysql> CHANGE MASTER TO
        ->   MASTER_HOST='192.168.205.37',
        ->   MASTER_USER='repluser',
        ->   MASTER_PASSWORD='centos',
        ->   MASTER_PORT=3306,
        ->   MASTER_AUTO_POSITION=1;
    Query OK, 0 rows affected, 2 warnings (0.01 sec)
  16. 查看复制状态
    mysql> start slave;
    Query OK, 0 rows affected (0.01 sec)
    mysql> show slave status\G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.205.37
                      Master_User: repluser
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: centos7-bin.000005
              Read_Master_Log_Pos: 453
                   Relay_Log_File: centos7-relay-bin.000002
                    Relay_Log_Pos: 670
            Relay_Master_Log_File: centos7-bin.000005
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
  17. 测试数据库的复制
    mysql> create database db1;
    Query OK, 1 row affected (0.01 sec)
  18. 在从服务器上查看复制状态,复制成功
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | db1                |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    5 rows in set (0.00 sec
  19. 看了以上关于MySQL5.7实现GTID功能的实验流程及结果,如果大家还有什么地方需要了解的可以在行业资讯里查找自己感兴趣的或者找我们的专业技术工程师解答的,技术工程师在行业内拥有十几年的经验了。 

相关内容

热门资讯

徐巧芯剖析赖清德:最怕自己丢掉... 海峡导报综合报道 大罢免投票一周年纪念活动26日举行,台北市长蒋万安出席并怒轰,民进党一年过后仍没有...
中国红十字会总会紧急向广东调拨... 记者从中国红十字会总会了解到,针对台风“红霞”给广东造成的灾情,中国红十字会总会启动四级应急响应,紧...
这些少年,正被“毒蛋”围猎 李梦抽了几口电子烟,吐出了白色的烟雾,有一股浓烈的水果香味。随后,她看着自己握电子烟的手,跟身边人说...
蒋万安号召“倒阁”,卢秀燕认为... 海峡导报综合报道 台北市长蒋万安27日抛出震撼议题,表示多名民代向他提议推动“倒阁”,要求台行政机构...
特朗普将在白宫会见两位重要客人 俄乌战争仍未结束,美伊冲突又有升级风险。在此背景下,美国总统特朗普将在白宫接见乌克兰和以色列领导人。...
新租客打扫卧室柜子上掉落4万元... 近日,莲前西路某小区内,张倩签下一套房子的租赁合同。当天上午,她带着12岁的大女儿周馨怡和11岁的小...
六部门通告:禁止涉军队退役报废... 关于禁止涉军队退役报废装备销售活动的通告近年来,部分经营者在线上线下公开销售涉及我军退役报废装备(指...
九寨沟景区发生泥石流,部分道路... 7月26日,九寨沟风景名胜区管理局发布泥石流灾害通报:2026年7月26日15时50分,九寨沟景区局...
空调26度不凉是什么原因 从空调内部元器件来说,不凉的原因有可能是温度传感器出现故障了,也有可能是空调压缩机或者铜管出现问题,...
鲸鸿动能携手香港国际机场、鸿蒙...   2026 年 7 月 25 日,十余位鸿蒙车主组成的车队从珠海出发,经港珠澳大桥通关抵达香港国际...