首页 > 其他分享 >传统复制在线变更为GTID复制

传统复制在线变更为GTID复制

时间:2023-09-05 15:23:03浏览次数:33  
标签:在线 -- 复制 Master GTID mysql sec gtid

mysql版本8.0.25,一主一从
原来复制环境GTID是为开启的

mysql> show variables like '%gtid%';
+----------------------------------+-----------+
| Variable_name                    | Value     |
+----------------------------------+-----------+
| binlog_gtid_simple_recovery      | ON        |
| enforce_gtid_consistency         | OFF       |
| gtid_executed                    |           |
| gtid_executed_compression_period | 0         |
| gtid_mode                        | OFF       |
| gtid_next                        | AUTOMATIC |
| gtid_owned                       |           |
| gtid_purged                      |           |
| session_track_gtids              | OFF       |
+----------------------------------+-----------+

在主库用sysbench进行压测

sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=10.x.x.201 --mysql-port=3306 --mysql-user=root --mysql-password='123456' --mysql-db=db_test --tables=10 --table_size=100000 --mysql_storage_engine=Innodb prepare
sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=10.x.x.201 --mysql-port=3306 --mysql-user=root --mysql-password='123456' --mysql-db=db_test --tables=10 --table_size=100000 --mysql_storage_engine=Innodb --threads=8 --time=30000 --report-interval=10 --rand-type=uniform run

1.在所有数据库上执行SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN;

mysql> SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN;
Query OK, 0 rows affected (0.08 sec)

等一会时间看看error日志是否有警告信息,如果没有警告信息继续下面步骤

2.在所有数据库实例上执行 SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;

mysql> SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like '%enforce_gtid%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| enforce_gtid_consistency | ON    |
+--------------------------+-------+
1 row in set (0.01 sec)

3.在所有数据库实例上执行SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;

mysql> SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
Query OK, 0 rows affected (0.01 sec)
mysql> 
mysql> show variables like '%gtid_mode%';
+---------------+----------------+
| Variable_name | Value          |
+---------------+----------------+
| gtid_mode     | OFF_PERMISSIVE |
+---------------+----------------+
1 row in set (0.01 sec)

设置为OFF_PERMISSIVE表示写新事物的gtid是匿名的,查看如下gtid未增加

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000007 | 20962982 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

4.在所有数据库实例上执行SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;

mysql> SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
Query OK, 0 rows affected (0.02 sec)
mysql> show variables like '%gtid_mode%';
+---------------+---------------+
| Variable_name | Value         |
+---------------+---------------+
| gtid_mode     | ON_PERMISSIVE |
+---------------+---------------+
1 row in set (0.00 sec)

设置为ON_PERMISSIVE表示写新事物是gtid,查看如下gtid增加

mysql> show master status;
+------------------+----------+--------------+------------------+---------------------------------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set                           |
+------------------+----------+--------------+------------------+---------------------------------------------+
| mysql-bin.000008 |  6968071 |              |                  | 33ab1a2d-cf38-11eb-9661-56c8a95977d1:1-5294 |
+------------------+----------+--------------+------------------+---------------------------------------------+
1 row in set (0.00 sec)

5.在每个数据库上ONGOING_ANONYMOUS_TRANSACTION_COUNT状态变量为0,状态变量变为0后再执行下一步
SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';

mysql> 
mysql> SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';
+-------------------------------------+-------+
| Variable_name                       | Value |
+-------------------------------------+-------+
| Ongoing_anonymous_transaction_count | 0     |
+-------------------------------------+-------+
1 row in set (0.01 sec)

6.等待所有匿名事务都复制完毕,在所有数据库实例上执行SET @@GLOBAL.GTID_MODE = ON;

mysql> SET @@GLOBAL.GTID_MODE = ON;
Query OK, 0 rows affected (0.04 sec)

mysql> show variables like '%gtid_mode%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| gtid_mode     | ON    |
+---------------+-------+
1 row in set (0.01 sec)

7.在所有mysql配置文件添加配置项

gtid_mode = on

enforce_gtid_consistency = on

8.现在复制拓扑所有事务都具有GTID,需要在每个从库上启用GTID的自动定位
stop slave;
CHANGE MASTER TO MASTER_AUTO_POSITION = 1;
START SLAVE;

mysql> stop slave ;
Query OK, 0 rows affected, 1 warning (0.02 sec)

mysql> CHANGE MASTER TO MASTER_AUTO_POSITION = 1;
Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> START SLAVE;
Query OK, 0 rows affected, 1 warning (0.01 sec)

from MySQL 8.0.22 可以使用
mysql> STOP REPLICA;
Query OK, 0 rows affected (0.01 sec)

mysql> CHANGE REPLICATION SOURCE TO SOURCE_AUTO_POSITION = 1 ;
Query OK, 0 rows affected (0.02 sec)

mysql> START REPLICA;
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: 10.1.1.201
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000009
          Read_Master_Log_Pos: 196
               Relay_Log_File: ck1-relay-bin.000002
                Relay_Log_Pos: 371
        Relay_Master_Log_File: mysql-bin.000009
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 196
              Relay_Log_Space: 578
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 2013306
                  Master_UUID: 33ab1a2d-cf38-11eb-9661-56c8a95977d1
             Master_Info_File: mysql.slave_master_info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 33ab1a2d-cf38-11eb-9661-56c8a95977d1:1-421256
                Auto_Position: 1
         Replicate_Rewrite_DB: 
                 Channel_Name: 
           Master_TLS_Version: 
       Master_public_key_path: 
        Get_master_public_key: 0
            Network_Namespace: 
1 row in set, 1 warning (0.01 sec)

从结果中可以看到Auto_Position:1

标签:在线,--,复制,Master,GTID,mysql,sec,gtid
From: https://www.cnblogs.com/dbstack/p/17679723.html

相关文章

  • 基于SSM的猫头鹰在线影院订票网站
    系统使用技术:Springboot+Mybatis前端技术:BootStrap+Thymeleaf+Editor.md开发工具:idea数据库:mysql5.7项目介绍:该系统基于Spring+SpringMVC+Mybatis+Layui,采用Mysql数据库,使用Maven管理项目,界面新,功能点满足毕设/课设需要,设计完整。功能详情:前台:*登录、注册、注销*基本信......
  • 基于SSM的猫头鹰在线视频网站
    系统使用技术:spring+springmvc+mybatis前端技术:layui、webuploader、css、js等开发工具:idea数据库:mysql5.7项目介绍:系统主要分为两个角色:管理员、用户,主要功能如下:前台登陆注册注销关键词搜索分类筛选查看电影详情在线播放下载视频视频选集收藏、取消收藏电影收藏中心历史记录修......
  • 基于springboot的在线心理测评系统
    项目介绍:本系统采用springboot框架,数据层采用mybatis,数据库使用mysql,功能包含前台和后台,比如心理文章查看、留言、测评、公告等,后台维护所有信息,具体功能实现可以建议看下方的演示视频,系统适合于基础一般的同学使用。项目技术:后端:springboot、mybatis前端:layui、js、css、ajax,thym......
  • 圣天诺Sentinel加密狗复制:保障数据安全的重要工具
    在当今这个数字化时代,数据已经成为企业最重要的资产之一。然而,随着网络gj的不断升级和数据泄露事件的频发,保障数据安全已经成为所有企业必须面对的挑战。为了应对这一挑战,越来越多的企业开始采用圣天诺Sentinel加密狗,它是保障数据安全的重要工具。圣天诺Sentinel加密狗是一种基于......
  • 在线找 K8s 学习搭子,急!
    如果说传统云计算时期的操作系统是Linux,那云原生时代的操作系统就是K8s,其重要性不言而喻。学好K8s,能够帮助开发者更好地掌握云时代的重要趋势。然而,很多开发者一想到K8s较高的上手门槛和学习成本,往往望而生畏,一直缺少机会和动力真正上手。如果你也一直想解决这个问题,从而快......
  • 【腾讯云 Cloud Studio 实战训练营】使用在线编程的方式用Nuxt3开发一个后台管理系统(
    前言大家好,我是刘明,开源技术爱好者,十年创业老兵。CSDN近期联合腾讯云、Coding、CloudStudio组织了【腾讯云CloudStudio实战训练营活动】,苦于前些日子一直在备考注册会计师,没有很好的体验CloudStudio的云IDE产品。现在考试结束了,体验了一把云IDE,不禁感慨云端开发原来可以这么......
  • 设备正常在线内网正常播放但公网无法播放国标GB28181视频平台LiteCVR异常处理
    近期我们整理并汇总了一些往期使用者在使用LiteCVR视频汇聚平台时候出现的技术问题反馈,并将逐步分享出根据使用者的反馈和问题描述的技术问题的解决办法和优化步骤来供大家参考。 根据使用者的反馈,我们了解到已接入到LiteCVR平台的设备在内网正常播放视频,但在公网无法播放,并且一直......
  • 基于Android的组成原理在线课堂APP的设计与开发-计算机毕业设计源码+LW文档
    一、选题的目的和意义目的:基于Android的组成原理在线课堂APP是为了使教学管理工作系统化、规范化、自动化,从而达到提高课堂管理效率的目的。能够解决目前考勤管理效率、无法准确的统计出学生课程成绩等信息,而且系统开发价格便宜、后期维护成本极低。便于教师利用本系统更好的交流......
  • VIM一次复制多次粘贴
    目录tab设置为4个空格去掉~文件复制粘贴剪切命令一次复制,多次粘贴复制到系统剪贴板复制到指定剪贴板如何选择一个单词打开文件重新载入文件 用多个标签页打开多个文件在新标签页以只读方式打开文件在当前标签页打开文件删除空行在linux查看编辑二进制文件将vim......
  • RTSP协议视频智能安防监控平台EasyNVR的录像播放及下载接口支持返回在线m3u8格式视频
    随着视频智能安防监控系统的普及,安防监控平台在各行各业的项目中得到了广泛应用。未来,AI智能将成为安防监控的主导方向。为了满足行业需求,TSINGSEE青犀视频不断提升现有产品的适应能力,进一步推动智能安防监控系统的发展。目前,EasyNVR作为TSINGSEE青犀视频开发的稳定可靠的智能安防......