首页 > 问答 > 关键词  > MySQL最新资讯  > 正文

MySQL传统点位复制在线转为GTID模式复制

2020-07-13 13:58 · 稿源:数据库干货铺
文章目录

黑客 代码 安全漏洞 程序员

1. GTID优缺点

MySQL传统点位复制在5. 7 版本前是主要的主从复制模式,而随着MySQL5. 6 版本引入GTID,并且MySQL5. 7 进行各方面的优化以后,在mySQL5.7(尤其是MySQL5.7.6)版本后GTID模式的主从复制方式成为一个新的选择方式。要使用GTID模式,首先也需知其优缺点,其主要的优缺点如下:

1.1 优点

a) 更简单的实现failover,无需找log_file和log_Pos。

b) 更简单的搭建主从复制。

c) 复制集群有一个统一的方式识别复制位置,给集群管理带来了便利。

d) 正常情况下,GTID是连续没有空洞的,因此主从库出现数据冲突时,可以用添加空事物的方式进行跳过

1.2限制

a) 在一个事务里面混合使用引擎如Innodb(支持事务)、MyISAM(不支持事务), 造成多个GTIDs和同一个事务相关联出错

b) CREATE TABLE…..SELECT 不能使用,该语句产生的两个event在某一情况 会使用同一个GTID(同一个GTID在slave只能被使用一次),使用时会报如下错误:

错误代码:1786StatementviolatesGTIDconsistency:CREATETABLE...SELECT.

需改为 create table like tb; insert into tb ... select 方式处理

c) CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE 不能在事务内使用 (启用了--enforce-gtid-consistency参数)

2. 传统点位复制在线转为GTID模式复制

2.1 在线调整的条件

a) 要求MySQL 5.7. 6 及以后版本。

b) 所有组中节点的gtid_mode 为off状态。

2.2 在线调整

2.2.1 查看当前状态

/**传统复制下enforce_gtid_consistencygtid_mode均为OFF**/mysql>showglobalvariableslike'enforce_gtid_consistency';+--------------------------+-------+|Variable_name|Value|+--------------------------+-------+|enforce_gtid_consistency|OFF|+--------------------------+-------+1rowinset(0.00sec)
mysql>showglobalvariableslike'gtid_mode';+---------------+-------+|Variable_name|Value|+---------------+-------+|gtid_mode|OFF|+---------------+-------+1rowinset(0.00sec)

2.2.2 修改enforce_gtid_consistency

所有节点均先将其修改为 WARN,同时注意查看日志是否出现警告信息,生产环境想调整为GTID模式时,需提前一段时间调整此参数,观察一段时间,确定无警告后再调整。

/**所有节点均调整,主从无先后顺序**/mysql>setglobalenforce_gtid_consistency=warn;
QueryOK,0rowsaffected(0.00sec)

开启后观察数据库日志,只有在无警告的情况下才可以进行后续的操作。

2019-10-13T06:00:19.723310Z10588[Note]ChangedENFORCE_GTID_CONSISTENCYfromOFFtoWARN.

2.2.3 修改enforce_gtid_consistency = on

将各节点enforce_gtid_consistency 设置为 on,不分顺序,但需要全部执行完毕后再进行下一步

mysql>setglobalenforce_gtid_consistency=on;
QueryOK,0rowsaffected(0.00sec)

2.2.4 修改gtid_mode = off_permissive

将各节点gtid_mode设置为 off_permissive,不分顺序,但需要全部执行完毕后再进行下一步

mysql>setglobalgtid_mode=off_permissive;
QueryOK,0rowsaffected(0.00sec)

2.2.5 修改gtid_mode=on_permissive

建议先修改从库的gtid_mode为on_permissive,之后再修改主库的。此步骤执行完毕后生成的日志是带GTID的

mysql>setglobalgtid_mode=on_permissive;
QueryOK,0rowsaffected(0.01sec)

2.2.6 查看状态

/**确定传统方式复制完毕,此时各节点Ongoing_anonymous_transaction_count状态为0**/mysql>showstatuslike'ongoing_anonymous_transaction_count';+-------------------------------------+-------+|Variable_name|Value|+-------------------------------------+-------+|Ongoing_anonymous_transaction_count|0|+-------------------------------------+-------+1rowinset(0.00sec)
/**切换日志**/mysql>flushlogs;QueryOK,0rowsaffected(0.16sec)

需要所有的节点ongoing_anonymous_transaction_count均为0.

2.2.7 启用gtid_mode

前面的步骤确认正常后,各节点开启GTID_MODE

mysql>setglobalgtid_mode=on;
QueryOK,0rowsaffected(0.01sec)

2.3 将传统复制转为GTID模式

停止原有复制,切换为gtid模式后,设置为自动查找位置复制。

ql>stopslave;
QueryOK,0rowsaffected(0.00sec)
mysql>changemastertomaster_auto_position=1;
QueryOK,0rowsaffected(0.01sec)
mysql>startslave;
QueryOK,0rowsaffected(0.01sec)

修改后复制即变为gtid模式。

mysql>SHOWGLOBALVARIABLESLIKE'%gtid%';+----------------------------------+--------------------------------------------------------------------------------------------+|Variable_name|Value|+----------------------------------+--------------------------------------------------------------------------------------------+|binlog_gtid_simple_recovery|ON||enforce_gtid_consistency|ON||gtid_executed|e29d3917-9dbb-11e9-8b64-e4434b6e2c80:1-93632,
e595a4ee-9dbb-11e9-a0f5-e4434b6e3094:1-30042||gtid_executed_compression_period|1000||gtid_mode|ON||gtid_owned|||gtid_purged|e29d3917-9dbb-11e9-8b64-e4434b6e2c80:1-4803,
e595a4ee-9dbb-11e9-a0f5-e4434b6e3094:1-30042||session_track_gtids|OFF|+----------------------------------+--------------------------------------------------------------------------------------------+8rowsinset(0.01sec)

3. 修改配置文件

在配置文件中添加GTID相关参数,涉及到gtid的参数如下:

server-id:每个MySQL实例的ID值,不能相同。必选项
gtid_mode=ON:MySQL是开启GTID模式.
enforce-gtid-consistency=on:开启GTID复制是,保证GTID的一致性.log-bin:MySQL必须开启binlog.
binlog_format=row:MySQLbinlog的事实标准,其他格式会导致数据丢失.log-slave-updates=on:级联复制,当slave接受到master的更新且执行完毕之后,执行的binlog是否写入slave的binlog记录中.

本文转载自微信公众号【数据库干货铺】。

  • 相关推荐
  • 大家在看
  • Tidal宣布新的免费选项 将HiFi计划的费用降至10美元

    Tidal周三宣布了其平台的重大变化,增加了新的价格层级以及艺术家的支付选项。该公司现在有一个免费选项。用户将能够免费尝试这项服务,缺点是音频质量限制在160kbps AAC和广告中断。之前的10美元Premium计划已经更名为HiFi,现在提供CD质量的无损*1411kbps的FLAC,而不是320kbps的AAC。该计划的其余部分仍与以前一样。以前20美元的HiFi计划已被重新命名为HiFi Plus。这个计划现在增加了对高清* MQA、杜比全景声和索尼360音频编码?

  • MOTI魔笛超级新品MEGA PRO,“双重模式”颠覆口感想象

    今年,国内电子烟头部品牌MOTI魔笛再次刷新换弹式雾化器用户体验,通过技术创新重磅推出具有“口肺吸双重模式”和“口味专属加热方案”的新品MOTI · MEGA PRO。MOTI · MEGA PRO的诞生印证了MOTI魔笛在电子雾化烟设计研发上的卓越水平。MOTI · MEGA PRO是一款可同时满足口吸及肺吸双重体验的产品,解决不同用户不同场景的产品体验需求。其中,“劲”模式对应大烟雾的“肺吸”体验。芯片识别自动匹配高功率加热曲线,同时气道自动

  • 对标Collective Health模式,国内团险的数字化转型之路隐现

    有一种企业福利,平常感知不到,甚至可以说是隐形的,但是在关键时刻能给员工提供巨大的帮助,也是检验一家企业福利是不是真的好、是不是真正关爱员工的重要标准,它就是“团险”。

  • Realme GT Master Explorer Edition获得基于Android 12的Realme UI 3.0公测版

    Realme上个月发布了基于Android12的Realme UI3.0,虽然距离公司开始推出稳定版本还有一段时间,但Realme GT Master Explorer Edition在中国的用户可以通过注册其早期访问测试计划体验Realme UI3.0Realme尚未为这些应用程序设定截止日期,但该公司表示,目前只有700个可用插槽,因此,如果你迫不及待地想查看Android12和Realme UI3.0,你可能需要快点但是,在继续之前,请记住测试版并不像最终版本那样稳定,并且经常包含可能妨碍用

  • 30天完成数据库替换 顶住10倍大促流量压力,TiDB+易车是如何做到的?

    导语:一年一度的双十一又双叒叕来了,给技术人最好的礼物就是大促技术指南! 而经过这些年的发展,大促早已不仅仅局限于电商行业,现在各行各业其实都会采用类似方式做运营活动,汽车界有818,电商有618 、11.11 等等,各种各样的大促场景,对包括数据库在内的基础软件提出了很多新挑战,同时也积累了诸多最佳实践。在双十一到来前,PingCAP 与汽车之家、易车网、京东、中通等用户展开一系列深入探讨,希望为大家揭秘逐年飙升的销

  • 新的Android Office Insider Build为文档画布增加了黑暗模式和鹰眼视图

    微软已经为Android用户发布了一个新的Office Insider Preview Build。Office Insider Preview版本 Build16.0.14701.20036为文档画布增加了黑暗模式。此外,Office移动应用现在提供了一个名为鹰眼视图的新功能,允许一次性查看所有活动文档,并在它们之间移动内容。新的Office构建不包括其他变化,也没有增加错误修复和性能改进。你可以阅读下面完整的官方更新日志以了解更多细节:Office Insider Build 16.0.14701.20036中的新内容

  • Nvidia正准备发布GeForce RTX 3070 Ti移动GPU 新GA104芯片现身数据库

    消息称 NVIDIA 正为笔记本市场开发两款新的移动 GPU,其中一款就是最近传闻中的 GeForce RTX 3070 Ti。近日网友在 PCI Device ID 数据库中发现了一个新的 GA104 芯片。根据网友 Faintsnow 爆料评论,科技媒体 VideoCardz 在 PCI Device ID 数据库上发现了一个特别的 ID-- ID 24A0,指的是 NVIDIA 尚未发布的移动 GPU--NVIDIA GN20-E6。据了解,GN20-E6 是 NVIDIA GeForce RTX 3070 Ti 笔记本 GPU 的名称。目前,英伟达笔记本 GPU ?

  • 游戏本大杀器:RTX 3080 Ti/3070 Ti移动显卡曝光

    在显卡市场仍旧出于供不应求、各种加价的局面下,NVIDIA的产品迭代步伐似乎并未受到影响。前两天我们报道了,消息称RTX 2060 12GB计划12月7日商家开卖,RTX 3070 Ti 15GB和RTX 3080 12GB则定于12月17日发布,明年1月11日发售。当然,这是桌面市场。对于NVIDIA另一大摇钱树笔记本市场来说,RTX 3080 Ti、RTX 3070 Ti移动版也浮出水面。RTX 3080 Ti笔记本显卡代号GN20-E8,采用全新的GA103核心,内建最多7680个CUDA,匹配16GB GDDR6?

  • TikTok正在测试一个为创作者开发的新小费功能

    TikTok正在试验一种新工具,它将允许TikTok用户直接在他们的资料上给一些创作者提供小费。根据TikTok创作者Jera Bean本周分享的小费功能视频,他在应用中注意到该功能并申请了批准。新功能将会把任何提供给创作者的小费直接归个人所有,这意味着TikTok不会从中抽成。申请屏幕的截图显示,为了获得该功能的资格,账户必须在平台上拥有良好的信誉,且至少有10万名粉丝、符合年龄要求并同意TikTok的提示条款。如果创作者符合这些标准?

  • TikTok公布平台有害挑战的内部调查报告

    TikTok因在其应用上举办危险的病毒性“挑战”而名声不佳,并且在最糟糕的情况下,这些挑战还会导致严重的伤害或死亡事件发生--比如今年促使意大利监管机构对该社交网络采取行动以清除未成年用户的昏迷挑战(blackout challenge)。最近,该应用因鼓励学生打老师和破坏学校财产的挑战而成为头条新闻。随着进一步监管的潜在威胁逼近,TikTok今日分享了其对病毒性挑战和恶作剧的内部研究结果--以及它是如何采取行动的。到目前为止,TikT

这篇文章对你有价值吗?

  • 热门标签

热文

  • 3 天
  • 7天