mysql高可用半同步配置(二)

耀灵2年前技术文章1145

一、配置半同步


1.1、部署半同步:

#首先判断MySQL服务器是否支持动态增加插件

mysql> select @@have_dynamic_loading

#确认支持动态增加插件后,检查MySQL的安装目录下是否存在插件semisync_master.sosemisync_slave.so

mysql> show variables like 'plugin_dir'; #查看插件存入地址

master端:

#安装半同步复制插件

mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';

#打开半同步复制功能

mysql> set global rpl_semi_sync_master_enabled=ON;


#检查半同步复制相关参数设置

mysql> show variables like  '%semi%';
+-------------------------------------------+------------+
| Variable_name                             | Value      |
+-------------------------------------------+------------+
| rpl_semi_sync_master_enabled              | ON         |
| rpl_semi_sync_master_timeout              | 10000      |
| rpl_semi_sync_master_trace_level          | 32         |
| rpl_semi_sync_master_wait_for_slave_count | 1          |
| rpl_semi_sync_master_wait_no_slave        | ON         |
| rpl_semi_sync_master_wait_point           | AFTER_SYNC |
| rpl_semi_sync_slave_enabled               | ON         |
| rpl_semi_sync_slave_trace_level           | 32         |
+-------------------------------------------+------------+
8 rows in set (0.00 sec)

mysql>

slave端:

#安装半同步复制插件

mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';


#打开slave端的半同步复制功能

mysql> set global rpl_semi_sync_slave_enabled=on;
Query OK, 0 rows affected (0.00 sec)

#检查半同步复制相关参数

mysql> show variables like '%semi%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled     | ON    |
| rpl_semi_sync_slave_trace_level | 32    |
+---------------------------------+-------+
2 rows in set (0.01 sec)

mysql>


#开启slave复制线程并检查复制状态

mysql> start slave;
mysql> show slave status\G

二、半同步相关参数

rpl_semi_sync_master_enabled:
# 控制master端是否打开半同步插件,默认OFF  
 
rpl_semi_sync_master_timeout: 
#控制半同步复制退化为异步复制的时间限制。若该时间限制下master还未接收到slave的ack,半同步复制退化为异步复制。默认10000(10s),该参数一般会设置比较大,保证数据无损。 
 
rpl_semi_sync_master_trace_level:
#master半同步复制调试跟踪等级,默认为32。
1 = general level (for example, time function failures)
16 = detail level (more verbose information)
32 = net wait level (more information about network waits)
64 = function level (information about function entry and exit
 
rpl_semi_sync_master_wait_for_slave_count
#master提交事务并返回客户端commit时,需要获取slave的ack的个数,默认为1。该参数同样依赖rpl_semi_sync_master_wait_no_slave的设置  
 
rpl_semi_sync_master_wait_no_slave:
#控制当slave个数小于rpl_semi_sync_master_wait_for_slave_count参数设置时,复制模式的行为,默认为ON。
ON:当MySQL发现slave个数小于rpl_semi_sync_master_wait_for_slave_count时,MySQL复制模式不做任何变更,只要数据同步时,master接收到大于等于rpl_semi_sync_master_wait_for_slave_count个数的ack,MySQL就继续保持半同步复制模式; 若master等待ack超过rpl_semi_sync_master_timeout时间限制后仍然未接收到大于等于rpl_semi_sync_master_wait_for_slave_count个数的ack,MySQL就将半同步复制退化为异步复制。
    OFF:当MySQL发现slave个数小于rpl_semi_sync_master_wait_for_slave_count时,主动将半同步复制退化为异步复制
 
rpl_semi_sync_master_wait_point:
#控制半同步复制下,master提交事务并返回客户端commit的时机,MySQL5.7版本下默认为after_sync。



相关文章

Prometheus+Consul服务自动发现监控

Prometheus+Consul服务自动发现监控

为什么使用consulprometheus作为新一代的监控利器,有很多优点,部署起来也十分方便。部署prometheus后自然会需要使用prometheus去监控物理机或者虚拟机的资源,这里就需要使用...

Doris资源管理

资源管理为了节省Doris集群内的计算、存储资源,Doris需要引入一些其他外部资源来完成相关的工作,如Spark/GPU用于查询,HDFS/S3用于外部存储,Spark/MapReduce用于ETL...

cattle-cluster-agent产生的僵尸进程处理

cattle-cluster-agent产生的僵尸进程处理

现象zabbix告警服务器存在僵尸进程排查步骤1、登陆服务器使用top命令,确认下僵尸进程数量。2、使用ps -aux | grep Z命令,过滤出僵尸进程PID。3、根据查到的PID,借助ps命令,...

Linux SSSD同步大量AD用户缓慢

Linux SSSD同步大量AD用户缓慢

1、背景在使用AD + sssd (ad作为ldap)同步用户,其中AD中存在10000+ 用户,同步时,用户信息获取缓慢,导致cdh的namenode 的rpc 队列打高,服务不正常。id 用户达到...

Scheduler调度器

一、论 Pod 调度在 kubernetes 中,无论是 Deployment、Statefulset 等多种控制器,它最终都是创建 Pod,在 Pod 创建是需要被调度到 Kubernetes 集群...

Linux解锁线程基本概念和线程控制,步入多线程学习的大门(2)

Linux解锁线程基本概念和线程控制,步入多线程学习的大门(2)

2.4.线程等待:为什么需要线程等待?已经退出的线程,其空间没有被释放,仍然在进程的地址空间内。不然也会造成内存泄露问题!创建新的线程不会复用刚才退出线程的地址空间。主线程退出 == 进程退出 ==...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。