环境准备

主数据库:CentOS7    MySQL8.0    192.168.10.6    keepalived

从数据库:CentOS7    MySQL8.0    192.168.10.7    keepalived

GTID主从复制的配置思路:

第1步:同步服务器。  只有在不使用GTID的情况下复制服务器时才需要执行此步骤。对于新服务器,请继续执行步骤3. 通过发出以下命令,将服务器设置为每个服务器上的read_only系统变量为 只读 ON:

mysql> SET @@global.read_only = ON;

第2步:停止两台服务器。 如下所示, 使用mysqladmin停止每个服务器,其中username是具有足够权限关闭服务器的MySQL用户的用户名:

shell> mysqladmin -uusername -p shutdown

第3步:启用启用了GTID的两台服务器。

主数据库配置:

vim /etc/my.cnf

server-id=10

gtid-mode=on

enforce-gtid-consistency=true

master-info-repository=TABLE

relay-log-info-repository=TABLE

sync-master-info=1

slave-parallel-workers=2

binlog-checksum =CRC32

master-verify-checksum=1

slave-sql-verify-checksum=1

binlog-rows-query-log-events=1

slave_parallel_type=logical_clock

log-bin=mysql-bin.log

binlog_format=row

relay-log=relay-log.log

skip_slave_start=1

#report-port=3306

#report-host=192.168.10.9

注:有了skip_slave_start,除非使用START SLAVE命令,否则从服务器不会开始复制。

注:设置log_slave_updates,让从服务器更新记录日志,有助于在必要时把从切换成主。

注:在 MySQL 5.6 版本时,基于 GTID 的复制中 log-slave-updates 选项是必须的。但是其增大了从服务器的IO负载, 而在 MySQL 5.7 中该选项已经不是必须项。

重启服务

systemctl restart mysqld

2、在主数据库里创建一个同步账号并授权slave权限

1)每个从数据库会使用一个MySQL账号来连接主数据库,所以我们要在主数据库里创建一个账号,并且该账号要授予 REPLICATION SLAVE 权限,你可以为每个从数据库分别创建账号,当然也可以用同一个!

2)你可以用原来的账号不一定要新创账号,但你应该注意,这个账号和密码会被明文存放在master.info文件中,因此建议单独创一个只拥有相关权限的账号,以减少对其它账号的危害!

3)创建新账号使用“CREATE USER”,给账号授权使用“GRANT”命令,如果你仅仅为了主从复制创建账号,只需要授予REPLICATION SLAVE权限。

4)下面来创建一个账号,账号名:test,密码:Test@123,只允许192.168.1.的IP段登录,如下:

mysql> create user 'test'@'192.168.10.%' identified by 'Test@123';

mysql> grant replication slave on *.* to 'test'@'192.168.10.%';

mysql> flush privileges;

5)如果开启防火墙,可能要配置下端口,如下:

firewall-cmd --zone=public --add-port=3306/tcp --permanent

firewall-cmd --reload

从数据库配置:

vim /etc/my.cnf

server-id=20

gtid-mode=on

enforce-gtid-consistency=true

master-info-repository=TABLE

relay-log-info-repository=TABLE

sync-master-info=1

slave-parallel-workers=2

binlog-checksum =CRC32

master-verify-checksum=1

slave-sql-verify-checksum=1

binlog-rows-query-log-events=1

relay-log=relay-log.log

log-bin=mysql-bin.log

binlog_format=row

skip_slave_start=1

#report-port=3306

#report-host=192.168.10.9

重启服务

systemctl restart mysqld

第4步:配置从站使用基于GTID的自动定位。  告诉从属使用基于GTID事务的主数据作为复制数据源,并使用基于GTID的自动定位而不是基于文件的定位。

mysql> CHANGE MASTER TO

MASTER_HOST = 'host',

MASTER_PORT = port,

MASTER_USER = 'user',

MASTER_PASSWORD = 'password',

MASTER_AUTO_POSITION = 1;

第5步:采取新的备份。启用GTID之前创建的现有备份现在不能再用于这些服务器,因为您已启用GTID。在这一点上做一个新的备份,这样你就不会没有可用的备份。

第6步:启动从站并禁用只读模式。  像这样启动slave:

mysql> START SLAVE;

查看从服务器状态

mysql> show slave status\G;

只有在步骤1中将服务器配置为只读时,才需要执行以下步骤。要允许服务器再次开始接受更新,请发出以下语句:

mysql> SET @@global.read_only = OFF;

重要参数说明:

Retrieved_Gtid_Set: d1fabc3d-4ac8-11e8-9d05-000c292bff01:12-20

Executed_Gtid_Set: d1fabc3d-4ac8-11e8-9d05-000c292bff01:1-20

Retrieved_Gtid_Set:表示接收到的事物

Executed_Gtid_Set:表示已经执行完的事物

当主库修改后,从库同步报错的问题?

MySQL从库在应用日志的时候报出了错误。从库启用过了并行复制。

Last_SQL_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction 'd1fabc3d-4ac8-11e8-9d05-000c292bff01:12' at master log mysql-bin.000007, end_log_pos 1084. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any.

修复方式和常规的略有一些差别

stop slave;

set @@session.gtid_next='d1fabc3d-4ac8-11e8-9d05-000c292bff01:12';

begin;

commit;

set @@session.gtid_next='automatic';

start slave;

转载于:https://blog.51cto.com/7072753/2319744

mysql主从(GTID复制模式)相关推荐

  1. Mysql基于GTID复制模式-运维小结 (完整篇)

    先来看mysql5.6主从同步操作时遇到的一个报错: mysql> change master to master_host='192.168.10.59',master_user='repli ...

  2. mysql gtid 搭建主从_MySQL5.7 - 基于GTID复制模式搭建主从复制

    MySQL5.7 - 基于GTID复制模式搭建主从复制 发布时间:2020-04-17 10:09:20 来源:51CTO 阅读:226 作者:insist_way 环境: MySQL5.7.24版本 ...

  3. MySQL的GTID复制与传统复制的相互切换

    MySQL的GTID复制与传统复制的相互转换 1. GTID复制转换成传统复制 1.1 环境准备 1.2 停止slave 1.3 查看当前主从状态 1.4 change master 1.5 启动主从 ...

  4. MariaDB 10 Slave Crash-Safe需转为GTID复制模式

    之前写了一篇<MySQL5.6 crash-safe replication> ,但在Mariadb10.0.X和10.1.X上不支持relay_log_info_repository = ...

  5. mysql 基于gtid复制_深入MySQL复制(二):基于GTID复制

    相比传统的MySQL复制,gtid复制无论是配置还是维护都要轻松的多.本文对gtid复制稍作介绍. 1.gtid基本概念 传统的基于binlog position复制的方式有个严重的缺点:如果slav ...

  6. pgpool 主从流复制模式下的安装使用

    pgpool 主从流复制模式下的安装使用 pgpool-II 是一个位于 PostgreSQL 服务器和 PostgreSQL 数据库客户端之间的中间件,它提供以下功能:  连接池 pgpool-I ...

  7. MySQL主从——GTID主从

    1 GTID概念介绍 GTID即全局事务ID (global transaction identifier), 其保证为每一个在主上提交的事务在复制集群中可以生成一个唯一的ID.GTID最初由goog ...

  8. mysql主从GTID不一致问题gtid_executed,gtid_purged ,Retrieved_Gtid_Set,Executed_Gtid_Set(I)

    https://www.jb51.net/article/242473.htm centos7下mysql双主+keepalived - benjamin杨 - 博客园 请设置从库为只读read_on ...

  9. mysql innodbdatahomedir_mysql gtid复制

    ====================配置如下====================[client] port= 3306socket=/tmp/my3306.sock [mysql] no-au ...

最新文章

  1. 滑动返回类库SwipeBackLayout的使用问题,解决返回黑屏,和看到桌面
  2. qt double 相减不为0_Qt音视频开发25-ffmpeg音量设置
  3. 【Transformer】Do Vision Transformers See Like Convolutional Neural Networks?
  4. 阿里6年,我的技术蜕变之路!
  5. Centos 安装 JDK8
  6. linux下,保存退出vim编辑器(转)
  7. 计算机算法设计与分析 最大子数组问题
  8. JSP中文件上传的关键步骤
  9. JSK-243 三角形的路径权【动态规划】
  10. python单词的含义-Python这个单词是什么含义??????????????
  11. 动态分配内存的初始化
  12. 2.PHP7内核剖析 --- SAPI
  13. win7 安装 vmware出错: failed to create the requested registry key key installer error 1021 的解决办法。...
  14. Python技术练习------自动化处理费用表
  15. 将a=[aaa,bbb,ccc]转化为aaa,bbb,ccc和将a=[111,222,333]转化为111,222,333的字符串作为输出的方法
  16. 弘玑Cyclone联合北京大学共建中国首个超级自动化校企联合实验室
  17. 基于北斗导航定位系统的设计与实现(论文+程序设计源码+数据库文件)
  18. iPhone人物拍照调色
  19. 张洪斌 html css,网页设计与制作教学课件作者HTML+CSS+JavaScript张洪斌教学资源淮安市高校教学资源共建共享平台课件.doc...
  20. 百度地图网站获取指定地点经纬度坐标方法

热门文章

  1. Bzoj 2064 分裂 题解
  2. 杭电2063--过山车(二分匹配)
  3. Android第三十八期 - 评价标签FlowLayout
  4. configure,pkg-config和PKG_CONFIG_PATH
  5. oracle 10g安装
  6. 请确保此代码文件中定义的类与“inherits”属性匹配,并且该类扩展的基类(例如Page 或UserControl)是正确的。...
  7. AJPFX关于Set接口学习笔记及总结
  8. oracle10g总结
  9. 【图解】最流行的7个JavaScript 框架各自的优点
  10. Hadoop 单节点 伪分布 安装手记