`
AllenHU0320
  • 浏览: 83527 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL复制特性半同步机制

 
阅读更多

半同步机制:

MySQL复制环境中的同步,默认采用异步的方式。从MySQL5.5开始提供半同步复制机制(Semisynchronous Replication)Master在返回操作成功(或失败)信息给发起请求的客户端前,还是要将事务发送给Slave及诶单,Master节点只需要确认至少一个Slave接收到了事务,即可向发起请求的客户端返回操作成功的信息,Master节点不需要等待Slave节点成功执行完这个事务。每个成功提交的事务,都代表这份数据至少存在两个节点上。

查看当前系统中安装的所有插件:

1、配置半同步复制环境

Master > show plugins;

MySQL软件有个插件目录,专门存放各种自带但没有安装,或者来自第三方的插件,为系统变量plugin_dir所指定的位置。

Master > show variables like 'plugin_dir';

+---------------+------------------------------+

| Variable_name | Value                        |

+---------------+------------------------------+

| plugin_dir    | /usr/local/mysql/lib/plugin/ |

+---------------+------------------------------+

1 row in set (0.00 sec)

[mysql@mysql1 ~]$ ll /usr/local/mysql/lib/plugin/semi*

-rwxr-xr-x. 1 mysql mysql 413321 Jul  9 22:37 /usr/local/mysql/lib/plugin/semisync_master.so

-rwxr-xr-x. 1 mysql mysql 248087 Jul  9 22:37 /usr/local/mysql/lib/plugin/semisync_slave.so

加载指定的插件,在Master节点执行命令,加载semisynchronous插件

Master > install plugin rpl_semi_sync_master SONAME 'semisync_master.so';

Query OK, 0 rows affected (0.12 sec)

加载指定的插件,在Slave节点执行命令,加载semisynchronous插件

RelaySlave > install plugin rpl_semi_sync_slave SONAME 'semisync_slave.so';

Query OK, 0 rows affected (0.09 sec)

设置rpl_semi_sync_*参数的配置,以启用半同步复制功能。进行配置时必须是双向的。建议将参数写到初始化参数文件中。

Master节点执行:

Master > set global rpl_semi_sync_master_enabled=1;用于控制是否在Master节点启用半同步复制,默认为1即启用状态

Query OK, 0 rows affected (0.00 sec)

Master > set global rpl_semi_sync_master_timeout=3000;超出指定时间Slave节点仍无响应,那么当前复制环境临时被转换为异步复制。默认为1000010秒,这里设置为3

Query OK, 0 rows affected (0.00 sec)

Slave节点执行:

RelaySlave > set global rpl_semi_sync_slave_enabled=1;用来控制Slave节点是否启用半同步复制机制

Query OK, 0 rows affected (0.00 sec)

配置好系统变量后,必须重启Slave节点的IO_THREAD线程

Slave节点执行:

RelaySlave > stop slave io_thread;

Query OK, 0 rows affected (0.01 sec)

RelaySlave > start slave io_thread;

Query OK, 0 rows affected (0.00 sec)

<!--[if !supportLists]-->2、  <!--[endif]-->监控半同步复制环境

Slave节点,与半同步复制相关的状态变量只有一项:

Rpl_semi_sync_slave_status:标识当前Slave是否启用了半同步模式

RelaySlave > show status like 'rpl_semi_sync%';

+----------------------------+-------+

| Variable_name              | Value |

+----------------------------+-------+

| Rpl_semi_sync_slave_status | ON    |

+----------------------------+-------+

1 row in set (0.00 sec)

Master节点,与半同步复制相关的状态变量有以下几项:

Rpl_semi_sync_master_clients:当前处于半同步模式的Slave节点数量

Rpl_semi_sync_master_status:当前Master节点是否启用了半同步模式

Rpl_semi_sync_master_no_tx:未成功发送到Slave节点的事务数量

Rpl_semi_sync_master_yse_tx:成功发送到Slave节点的事务数量

Master > show status like 'rpl_semi_sync%';

+--------------------------------------------+-------+

| Variable_name                              | Value |

+--------------------------------------------+-------+

| Rpl_semi_sync_master_clients               | 1     |

| Rpl_semi_sync_master_net_avg_wait_time     | 0     |

| Rpl_semi_sync_master_net_wait_time         | 0     |

| Rpl_semi_sync_master_net_waits             | 0     |

| Rpl_semi_sync_master_no_times              | 0     |

| Rpl_semi_sync_master_no_tx                 | 0     |

| Rpl_semi_sync_master_status                | ON    |

| Rpl_semi_sync_master_timefunc_failures     | 0     |

| Rpl_semi_sync_master_tx_avg_wait_time      | 0     |

| Rpl_semi_sync_master_tx_wait_time          | 0     |

| Rpl_semi_sync_master_tx_waits              | 0     |

| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |

| Rpl_semi_sync_master_wait_sessions         | 0     |

| Rpl_semi_sync_master_yes_tx                | 0     |

+--------------------------------------------+-------+

14 rows in set (0.00 sec)

进行插入数据测试

Master > show status like 'rpl_semi_sync%';

+--------------------------------------------+-------+

| Variable_name                              | Value |

+--------------------------------------------+-------+

| Rpl_semi_sync_master_clients               | 1     |

| Rpl_semi_sync_master_net_avg_wait_time     | 1776  |

| Rpl_semi_sync_master_net_wait_time         | 1776  |

| Rpl_semi_sync_master_net_waits             | 1     |

| Rpl_semi_sync_master_no_times              | 0     |

| Rpl_semi_sync_master_no_tx                 | 0     |

| Rpl_semi_sync_master_status                | ON    |

| Rpl_semi_sync_master_timefunc_failures     | 0     |

| Rpl_semi_sync_master_tx_avg_wait_time      | 0     |

| Rpl_semi_sync_master_tx_wait_time          | 0     |

| Rpl_semi_sync_master_tx_waits              | 0     |

| Rpl_semi_sync_master_wait_pos_backtraverse | 0     |

| Rpl_semi_sync_master_wait_sessions         | 0     |

| Rpl_semi_sync_master_yes_tx                | 1     |

+--------------------------------------------+-------+

 

14 rows in set (0.00 sec)

 

分享到:
评论

相关推荐

    MySQL工程师必备面试题【事务与锁机制、备份与恢复、性能优化、高可用方案、索引优化、ACID特性、主从/半同步复制】

    其他说明:除了以上的30道题目之外,MySQL的面试题目还可以包括一些高级的知识点,如分区分表、优化、主从复制、高可用等方面的内容。在面试时,应根据具体职位的要求和应聘者的经验水平来选择合适的面试题目。同时...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    02-mysql半主从同步-技术分享--余宏刚.rar 03-xtrabackup安装及操作文档-技术分享--王玉晓.rar 04-mysql主从通过mysql-proxy程序实现读写分离.doc 老男孩linux测试读写分离php网站源代码.zip 第十二部 MySQL高...

    MySQL管理之道 性能调优、高可用与监控.part2.rar

    5.7 mysql5.6同步复制新特性详解 213 第6章 备份与恢复 223 6.1 冷备份 224 6.2 逻辑备份 224 6.2.1 mysqldump增加了一个重要参数 225 6.2.2 取代mysqldump的新工具mydumper 226 6.2.3 逻辑备份全量、增量...

    搭建mysql-cluster集群.docx

    MySQL Cluster的数据更新使用同步复制机制,步骤如下: 1. Master执行提交语句时,事务被发送到slave,slave开始准备事务的提交。 2. 每个slave都要准备事务,然后向master发送OK(或ABORT)消息,表明事务已经准备...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    语言特性 继承 封装 多态 JVM 多线程与并发 GC机制 GC收集器类型 串行 CMS 并行 G1 算法 复制 标记清理 标记整理 分区 新生代 eden survivor 老年代(old区) 永久代(perm区) 版本变化 ...

    JAVA 范例大全 光盘 资源

    实例197 MySQL数据库的分页形式 633 实例198 连接ODBC数据库的Apple程序 640 第20章 JSP/Servlet技术 644 实例199 JSP与Servlet之间的跳转 644 实例200 简单的JSP多人聊天室 653 实例201 Servlet生成的动态图片...

    asp.net知识库

    通过作业,定时同步两个数据库 SQLSERVER高级注入技巧 利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的内容是否合法 asp.net报表解决方法 SQLDMO类的使用 SQL过程自动C#封装,支持从表到...

    javaSE代码实例

    5.5.1 数组复制 69 5.5.2 数组排序 71 5.5.3 搜索指定元素 72 5.5.4 比较数组中的元素 73 5.6 关于args[] 73 5.7 小结 74 第二篇 基础篇 第6章 对象和类——Java世界的细胞 77 6.1 面向对象概述 ...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    spring security 参考手册中文版

    3. Spring Security 4.2的新特性 27 3.1 Web改进 27 3.2配置改进 28 3.3杂项 28 4.样品和指南(从这里开始) 28 5. Java配置 29 5.1 Hello Web安全Java配置 29 5.1.1 AbstractSecurityWebApplicationInitializer 31 ...

Global site tag (gtag.js) - Google Analytics