MariaDB 半同步复制

MYSQL高可用集群架构——MHA架构 MHA高可用集群 文章目录 一、MHA 简介: 二、部署 MHA: 第一步:三台主从服务器安装 mysql 第二步:修改 mysql 的主配置文件:/etc/my.cnf ,注意三台服务器的 server-id 不能一样 第三步:三台服务器启动 mysql 服务 第四步:配置 Mysql 主从同步(一主两从) 第五步:安装 MHA 第六步:启动 MHA 一、MHA 简介: MHA(Master H... 阅读详情

 简介: 本文主要为大家详解讲解 MariaDB 的半同步复制功能,包括插接安装、卸载,以及配置参数等。

作者:powdba

镜像下载、域名解析、时间同步请点击 阿里巴巴开源镜像站

安装半同步复制插件

在MariaDB 10.3.3和更高版本中,半同步复制功能内置于MariaDB服务器中,不再由插件提供。这意味着这些版本不支持安装插件。
半同步复制插件实际上是两个不同的插件,一个是主插件,一个是从插件。这两个插件的共享库都包含在MariaDB中。尽管默认情况下插件的共享库随MariaDB一起分发,但是默认情况下,MariaDB并未实际安装该插件,而MariaDB 10.3.3之前。有两种方法可用于通过MariaDB安装插件。
第一种方法可用于安装插件,而无需重新启动服务器。您可以通过执行INSTALL SONAME或INSTALL PLUGIN动态安装插件。
例如,如果是master:

INSTALL SONAME 'semisync_master’;

如果是slave:

INSTALL SONAME 'semisync_slave';

第二种方法可以用来告诉服务器在启动时加载插件。可以通过提供--plugin-load或--plugin-load-add选项以这种方式安装插件。可以将其指定为mysqld的命令行参数,也可以在选项文件中的相关服务器选项组中指定。
例如,如果是master:

[mariadb]
...
plugin_load_add = semisync_master

如果是slave:

[mariadb]
...
plugin_load_add = semisync_slave

卸载半同步复制插件

在MariaDB 10.3.3和更高版本中,半同步复制功能内置于MariaDB服务器中,不再由插件提供。这意味着这些版本不支持卸载插件。
可以通过执行UNINSTALL SONAME或UNINSTALL PLUGIN动态卸载插件。
例如,如果是master:

UNINSTALL SONAME 'semisync_master’;

如果是slave:

UNINSTALL SONAME 'semisync_slave';

如果通过在选项文件中相关服务器选项组中提供--plugin-load或--plugin-load-add选项来安装插件,则应删除这些选项以防止下次加载插件服务器重新启动。

半同步复制配置参数

半同步复制参数设置。为避免主库高可用切换之后,需要在半同步复制的主从角色之间来回切换配置,在主库与备主之间设置相同的半同步复制参数即可(即,同时启用主库端和从库端的半同步复制插件),在my.cnf的[mysqld]标签下添加如下参数设置

  • rpl_semi_sync_master=semisync_master.so

    • 指定半同步复制在master上使用的库文件名称,不需要使用路径,该参数为mysqld启动参数,并非system variables,在my.cnf中不需要指定,只需要在安装插件库时使用INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';语句安装过这个库即可。
    • 默认ON,MariaDB 10.3.3移除
  • rpl_semi_sync_slave=semisync_slave.so

    • 指定半同步复制在slave上使用的库文件名称,不需要使用路径,该参数为mysqld启动参数,并非system variables,在my.cnf中不需要指定,只需要在安装插件库时使用INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';语句安装过这个库即可。使用plugin_load参数在mysqld启动时自动加载半同步复制插件,无需人工安装(注意,该参数必须放在所有半同步复制配置参数之前,否则半同步复制相关的参数无法识别)。
    • 默认ON,MariaDB 10.3.3移除
  • rpl_semi_sync_master_enabled=1

    • 半同步复制插件主库端开关参数。
    • 动态变量,默认值为OFF,布尔型值。
  • rpl_semi_sync_master_timeout=10000

    • 当参数rpl_semi_sync_master_enabled 开启时,该参数控制主库使用半同步复制机制把binlog发送到slave之后,等待从库ACK接收确认包的时间,如果在这个超时时间之内收到slave的接收确认包,则继续使用半同步复制机制同步下一个事务的binlog到从库,如果在这个超时时间之内未收到任何slave的接收确认包,则主库自动切换为异步复制。
    • 发生超时时,Rpl_semi_sync_master_status状态变量也将切换为OFF。
    • 全局变量,动态变量,默认为10000,表示10S(10000毫秒),整型值。
  • rpl_semi_sync_master_wait_no_slave=OFF

    • 控制在rpl_semi_sync_master_timeout 超时周期内,如果连接主库的从库数量降到0值,主库是否要继续等待从库的接收确认包。
    • 为ON值时,表示在rpl_semi_sync_master_timeout 超时周期内,如果连接主库的从库数量降到0值,主库仍然继续等待从库的接收确认包。
    • 为OFF值时,表示在rpl_semi_sync_master_timeout 超时周期内,如果连接主库的从库数量降到0值,主库不继续等待从库的接收确认包,直接切换为异步复制。
    • 全局变量,动态变量,默认值为ON,布尔型值。
  • rpl_semi_sync_master_wait_point=AFTER_SYNC

    • 此变量控制半同步复制中主库在发起事务commit操作之后在什么节点等待从库接收binlog的ACK确认。
    • AFTER_SYNC(默认值):主库将每个事务写入二进制日志,并将二进制日志sync到磁盘。在sync binlog之后,主库等待从库该事务的ack确认。在收到任意一个(5.7中可以使用参数rpl_semi_sync_master_wait_for_slave_count来设置必须要接收到多少个从库的ack确认之后才执行后续的动作,默认值为1,与5.7之前的版本相同)从库的确认后,主人将在存储引擎层提交事务,并将事务提交结果返回给客户端。
    • AFTER_COMMIT:主库将每个事务写入二进制日志,并sync二进制日志到磁盘,同时在存储引擎层提交事务。主库在存储引擎层提交事务之后再等待从库该事务的ACK确认。在收到从库ACK确认后,主库返回结果给客户端。
    • 全局变量,动态变量,枚举类型,有效值为:AFTER_SYNC和AFTER_COMMIT,默认值为AFTER_SYNC,10.1.3版本引入。
  • rpl_semi_sync_slave_delay_master

    • 仅在需要确认时写入主库的信息文件。
    • 全局变量,动态变量,默认值为OFF,布尔型值。
  • rpl_semi_sync_slave_enabled=1

    • 半同步复制插件从库端开关参数。
    • 全局变量,动态变量,默认值为OFF,布尔型值。
  • rpl_semi_sync_slave_kill_conn_timeout

    • mysql连接超时,该连接用于终止从io_thread在master上的连接。执行停止slave时,此超时起作用。
    • 全局变量,动态变量,默认值为OFF,整型值。MariaDB 10.3.3引入。
  • rpl_semi_sync_master_trace_level=32

    • 在master控制半同步复制中的debug信息跟踪等级,要能使用该参数的功能,则需要主库安装并启用了半同步复制插件。
    • 有如下4个等级

      • 1:general 等级,如:记录时间函数失效。
      • 16:detail 等级,记录更加详细的信息。
      • 32:net wait等级,记录包含有关网络等待的更多信息。
      • 64:function等级,记录包含有关function进入和退出的更多信息。
    • 全局变量,动态变量,默认值为32,整型。
  • rpl_semi_sync_slave_trace_level=32

    • 参考主库的rpl_semi_sync_master_trace_level参数解释部分。
      半同步复制关键状态变量
  • Rpl_semi_sync_master_clients

    • 当前处于半同步复制状态的从库数量。
  • Rpl_semi_sync_master_net_avg_wait_time

    • 主库等待从库回复ACK确认消息的平均时间(以微秒为单位)。
  • Rpl_semi_sync_master_net_wait_time

    • 主库等待从库回复ACK确认消息的总时间(以微秒为单位)。
  • Rpl_semi_sync_master_net_waits

    • 主库等待从库回复ACK确认消息的总次数。
  • Rpl_semi_sync_master_no_times

    • 主库端检测半同步复制插件被关闭的次数,如果不断增长,则说明主从之间的复制网络可能不稳定。
  • Rpl_semi_sync_master_no_tx

    • 主库端检测半同步复制中从库未成功接收 slave ACK提交的事务数量,如果持续增长或者频繁检测到非零值,说明半同步复制被降级为了异步复制或主从之间的复制网络不稳定。
  • Rpl_semi_sync_master_status

    • 半同步复制当前是否在主库上正常运行。如果正常运行,则该值为ON,否则为OFF。
  • Rpl_semi_sync_master_timefunc_failures

    • 主库调用gettimeofday()等时间函数时发生失败的次数。
  • Rpl_semi_sync_master_tx_avg_wait_time

    • 主库端检测半同步复制事务的平均ACK时间(单位为毫秒),如果该延迟逐渐增加,则说明主从之间的复制网络可能不稳定、从库的负载可能在持续增加导致响应ACK变慢。
  • Rpl_semi_sync_master_tx_wait_time

    • 主库等待事务(所有事务的ACK确认消息)的总时间(单位为微秒)。
  • Rpl_semi_sync_master_tx_waits

    • 主库等待事务(所有事务的ACK确认消息)的总次数。
  • Rpl_semi_sync_master_wait_pos_backtraverse

    • 主库等待的二进制坐标低于之前等待事件的事件总次数。当事务开始等待回复(ACK确认消息)的顺序与其二进制日志事件的写入顺序不同时,就会发生这种情况。
  • Rpl_semi_sync_master_wait_sessions

    • 主库等待从库回复(ACK确认消息)的会话数量。
  • Rpl_semi_sync_master_yes_tx

    • 主库成功接收到 slave 的 ACK的事务提交数量(主库使用半同步复制提交的次数)。
  • Rpl_semi_sync_slave_status

    • 半同步复制当前是否在从库上正常运行。如果插件已启用且从I/O线程正在运行,则此状态变量值为ON,否则为OFF。

本文转自: MariaDB 半同步复制-阿里云开发者社区

kubedns-coredns部署pod出现not ready问题 文章目录遇到的问题1、发现问题2、排查问题3、解决方法 coredns的实例health_check不通过的问题,排查和解决方法 遇到的问题 1、发现问题 pod启动但是未ready 查看是readiness失败 使用对应的URL进行curl,发现真的返回503 2、排查问题 查看错误日志,发现一堆这个错误"waiting on : kubernetes" 网上相关的问题解答 这个跟测试场景不一样,这个案例是开了防火墙,可以确认我这个案例的机器没有开防火墙,但它提醒了一点,coredns是需要访问ap 阅读详情

相关推荐

【黑马点评优化】3-压测秒杀接口,算出性能塌陷区,之后用sentinel实现秒杀接口限流

【黑马点评优化】3-压测秒杀接口,算出性能塌陷区,之后用sentinel实现秒杀接口限流

m0_52031708的博客 3510

Mariadb半同步复制

Mariadb半同步复制

jks212454的博客 781

联想、惠普、戴尔oem证书

联想,惠普,戴尔,oem证书,包含证书导入方法

MariaDB半同步主从配置

解决主据不一致原因,主库数据挂掉,从库数据不一致的问题。解决方法:半同步复制 半同步复制场景中,master会监视所有的slave,确保其中至少一台数据完全同步成功,master才会返回客户端信息,此数据写成功。华为云服务器CentOS8.0主节点:120.46.182.30从节点:120.46.199.32。

Genius_zhu的博客 1042

MySQL 主从复制--半同步复制

MySQL的半同步是通过加载google为MySQL提供的半同步插件和来实现的。其中前者是master上需要安装的插件,后者是slave上需要安装的插件。MySQL的插件位置默认存放在$basedir/lib/plugin目录下。例如,yum安装的mysql-server,插件目录为/usr/lib64/mysql/plugin。因为要加载插件,所以应该保证需要加载插件的MySQL的全局变量已经设置为YES(默认值就是YES),否则无法动态加载插件。| YES |

CoderChronicle的博客 3428

mariadb mysql同步_MySQL/MariaDB数据库半同步复制

MySQL/MariaDB数据库半同步复制作者:尹正杰版权声明:原创作品,谢绝转载!否则将追究法律责任。一.MySQL半同步复制概述1>.MySQL默认的异步复制默认情况下,MySQL的复制功能是异步的,异步复制可以提供最佳的性能,主库把binlog日志发送给从库即结束,并不验证从库是否接收完毕。这意味着当主服务器或从服务器端发生故障时,有可能从服务器没有接收到主服务器发送过来的binlo...

weixin_39829501的博客 272

Mariadb半同步复制,主从复制与双主复制

知识背景 一.mariadb复制相关知识    1.mariadb的来源      mysql数据库目前在数据库市场中所占份额仅仅次于oracle数据库,同时也是开源数据库的龙头老大。由于mysql数据库的开源性和高性能,同时还是免费的(不过被oracle收购后不容乐观),因此,mysql之父又开启了一个mysql的新分支mariadbmariadb相对mysql而言版更新快,新特性实装速度迅...

ff00yo的博客 554

MariaDB的主从复制、主主复制、半同步复制

这篇文章主要详细介绍了mariadb的主从复制、主主复制、半同步复制的概念和方法。 参考http://www.jb51.net/article/97786.htm 主从服务器的时间要同步,数据库版本最好是一致的,以免造成函数处理、日志读取、日志解析等发生异常。 以下三个主从复制的设置是独立的。 注意防火墙和selinux的影响。1、简单主从复制的实现1.1 服务器1操作1)安装mariadb

动次打次 845

MariaDB 10.3 主主半同步复制

MariaDB主主半同步,也就是两个主从同步都开启半同步复制。一. MariaDB01主 MariaDB02从 开启半同步复制1. MariaDB01 主SET GLOBAL rpl_semi_sync_master_enabled = 1;2. MariaDB02 从SET GLOBAL rpl_semi_sync_slave_enabled = 1;stop slave...

weixin_34257076的博客 155

MariaDB 10.3 主从半同步复制

本文介绍MariaDB主从半同步复制,以上一篇《MariaDB 10.3 主从复制》为基础,介绍主从半同步复制配置。1. 简介MariaDB从10.3.3开始已经把半同步插件加入到Server中,因此在配置主从半同步时,不再需要加载插件,本文所用的MariaDB版本为10.3.7。2. 查看半同步复制参数MariaDB01主MariaDB02从3. 启动半同步复制MariaD...

weixin_33694172的博客 295

MariaDB十之PTID及半同步复制

一、MariaDB的GTID MySQL 5.6引入的GTID(Global Transaction IDs)使得其复制功能的配置、监控及管理变得更加易于实现,且更加健壮。 要在MySQL 5.6中使用复制功能,其服务配置段[mysqld]中于少应该定义如下选项: binlog-format:二进制日志的格式,有ro...

weixin_33794672的博客 128

MariaDB半同步复制

1.主从复制原理 MySQL的二进制日志(binglog)会记录所有对数据库进行更改的操作,也就是说只要是会对数据库产生修改的操作都会被记录到二进制日志中去.记录二进制日志的主要目的有两方面:a.恢复;b.复制. 当MySQL的Master节点的数据有更改的时候,Master会主动通知Slave,让Slave主动来Master获取二进制日志,于是Slave开启一个I/O thread,...

weixin_30376083的博客 109

mariadb的主从复制、主主复制、半同步复制配置详解

mariadb的主从复制、主主复制、半同步复制配置详解 转载自:mariadb的主从复制、主主复制、半同步复制配置详解 主从服务器的时间要同步,数据库版本最好是一致的,以免造成函数处理、日志读取、日志解析等发生异常。 以下三个主从复制的设置是独立的。 注意防火墙和selinux的影响。 1、简单主从复制的实现 (1)主服务器的配置 1)安装mariadb-server [root@localhos...

好女绪的博客 3618

MariaDB 10.3.8 半同步复制(semi-synchronous Replication)

--半同步复制: 自MariaDB10.3.3版本开始经过阿里巴巴贡献的代码 replication plugin被合并到server里不需要手动安装插件了。 但是MySQL和Percona和MariaDB 10.3.3早前的版本则需要手动安装插件。 --手动安装: INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; ...

vkingnew 的技术博客 1142

Mariadb 主从复制、双主复制、半同步复制、基于SSL复制

一、Mariabd数据复制原理和功能Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个...

weixin_34023982的博客 159
上一篇: 四步教你玩转 MongoDB BI Connector
下一篇: Kubernetes 日志查询分析实践
a_small_cherry
博客等级 码龄5年 31粉丝 · 27原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值