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

耀灵2年前技术文章912

一、配置半同步


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。



相关文章

clickhouse集群对接hive(三)

clickhouse集群对接hive(三)

前提:集群中已经部署了hive组件和clickhouse集群,clickhouse集群进行对接hive1、设置hdfs文件系统本地缓存<local_cache_for_remote_fs>...

Helm 控制语句

Helm 控制结构(在模板语言中称为 "actions")提供给你和模板作者控制模板迭代流的能力。 Helm 的模板语言提供了以下控制结构:if/else,用来创建条件语句with,用来指定范围ran...

NAS文件被删除问题排查

NAS文件被删除问题排查

一、问题现象客户业务方反馈服务器上挂载的nas文件被删除,业务中许多文件丢失,业务受到严重影响。需要我方协助排查。二、问题背景该nas挂载到两台业务服务器上,后端应用为java应用,存储内容为jpg、...

Redis 持久化机制 AOF

Redis 持久化机制 AOF

前言Redis 有两种持久化机制,分别是 RDB 与 AOF 本篇文章将介绍 AOF 的执行过程与应用。1. AOF 简介AOF (Append only file) 持久化是以独立日志的方式记录每次...

MySQL 函数触发隐式转换应对策略

前言MySQL 中,当 SQL 索引字段使用了函数的话,会出现隐式转换的问题,导致索引失效,从而导致 SQL 执行效率变慢。本篇文章介绍 MySQL 不同版本此类问题的应对策略。1. 环境介绍以下是本...

docker私有仓库搭建及containerd使用私有仓库

docker私有仓库搭建及containerd使用私有仓库

这里我们要搭建的私有仓库非harbor,而是更轻量的docker-registry。使用的工具是containerd私有仓库搭建```Plain Text创建目录mkdir -p /opt/docke...

发表评论    

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