MariaDB十之PTID及半同步复制

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

一、MariaDB的GTID          

   MySQL 5.6引入的GTID(Global Transaction IDs)使得其复制功能的配置、监控及管理变得更加易于实现,且更加健壮。

   要在MySQL 5.6中使用复制功能,其服务配置段[mysqld]中于少应该定义如下选项:

   binlog-format:二进制日志的格式,有row、statement和mixed几种类型;

   需要注意的是:当设置隔离级别为READ-COMMITED必须设置二进制日志格式为ROW,现在MySQL官方认为STATEMENT这个已经不再适合继续使用;但mixed类型在默认的事务隔离级别下,可能会导致主从数据不一致;

   log-slave-updates、gtid-mode、enforce-gtid-consistency、report-port和report-host:用于启动GTID及满足附属的其它需求;

master-info-repository和relay-log-info-repository:启用此两项,可用于实现在崩溃时保证二进制及从服务器安全的功能;

   sync-master-info:启用之可确保无信息丢失;

   slave-paralles-workers:设定从服务器的SQL线程数;0表示关闭多线程复制功能;

   binlog-checksum、master-verify-checksum和slave-sql-verify-checksum:启用复制有关的所有校验功能;

   binlog-rows-query-log-events:启用之可用于在二进制日志记录事件相关的信息,可降低故障排除的复杂度;

   log-bin:启用二进制日志,这是保证复制功能的基本前提;

   server-id:同一个复制拓扑中的所有服务器的id号必须惟一;

   report-host:

   The host name or IP address of the slave to be reported to the master during slave registration. This value appears in the output of SHOW SLAVE HOSTS on the master server.

   report-port:

   The TCP/IP port number for connecting to the slave, to be reported to the master during slave registration.

   master-info-repository:

   The setting of this variable determines whether the slave logs master status and connection information to a FILE (master.info), or to a TABLE (mysql.slave_master_info)

   relay-log-info-repository:

   This option causes the server to log its relay log info to a file or a table.

   log_slave_updates:

   Whether updates received by a slave server from a master server should be logged to the slave's own binary log. Binary logging must be enabled on the slave for this variable to have any effect.

    enforce_gtid_consistency:

1、简单主从模式配置步骤

   1、配置主从节点的服务配置文件

   1.1、配置master节点:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[mysqld]
binlog-format=ROW
log-bin=master-bin
log-slave-updates= true
gtid-mode=on
enforce-gtid-consistency= true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info= 1
slave-parallel-workers= 2
binlog-checksum=CRC32
master-verify-checksum= 1
slave-sql-verify-checksum= 1
binlog-rows-query-log_events= 1
server-id= 1
report-port= 3306
port= 3306
datadir=/mydata/data
socket=/tmp/mysql.sock
report-host=master.wangfeng7399.com

   1.2、配置slave节点:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[mysqld]
binlog-format=ROW
log-slave-updates= true
gtid-mode=on
enforce-gtid-consistency= true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info= 1
slave-parallel-workers= 2
binlog-checksum=CRC32
master-verify-checksum= 1
slave-sql-verify-checksum= 1
binlog-rows-query-log_events= 1
server-id= 11
report-port= 3306
port= 3306
log-bin=mysql-bin.log
datadir=/mydata/data
socket=/tmp/mysql.sock
report-host=slave.wangfeng7399.com

   2、创建复制用户

1
MariaDB[none]> GRANT REPLICATION SLAVE ON *.* TO repluser@ 192.168 . 1.201  IDENTIFIED BY  'replpass' ;

   说明:192.168.1.201是从节点服务器;如果想一次性授权更多的节点,可以自行根据需要修改;

   3、为备节点提供初始数据集

   锁定主表,备份主节点上的数据,将其还原至从节点;如果没有启用GTID,在备份时需要在master上使用show master status命令查看二进制日志文件名称及事件位置,以便后面启动slave节点时使用。

   4、启动从节点的复制线程

   如果启用了GTID功能,则使用如下命令:  

1
MariaDB[none]> CHANGE MASTER TO MASTER_HOST= 'master.waangfeng7399.com' , MASTER_USER= 'repluser' , MASTER_PASSWORD= 'replpass' , MASTER_AUTO_POSITION= 1 ;

   没启用GTID,需要使用如下命令:  

1
slave> CHANGE MASTER TO MASTER_HOST= '192.168.1.201' ,MASTER_USER= 'repluser' ,MASTER_PASSWORD= 'replpass' ,MASTER_LOG_FILE= 'master-bin.000005' ,MASTER_LOG_POS= 453 ;

二、半同步复制

   1、分别在主从节点上安装相关的插件

       master> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

       slave> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

   2、启用半同步复制

       在master上的配置文件中,添加 rpl_semi_sync_master_enabled=ON

       在至少一个slave节点的配置文件中添加 rpl_semi_sync_slave_enabled=ON

       而后重新启动mysql服务即可生效。或者,也可以mysql服务上动态启动其相关功能:

       master> SET GLOBAL rpl_semi_sync_master_enabled = ON;

       slave> SET GLOBAL rpl_semi_sync_slave_enabled = ON;

       slave> STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;

   3、确认半同步功能已经启用

       master> CREATE DATABASE magedudb;

       master> SHOW STATUS LIKE 'Rpl_semi_sync_master_yes_tx';

       slave> SHOW DATABASES; 


本文转自wangfeng7399 51CTO博客,原文链接:http://blog.51cto.com/wangfeng7399/1395041,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 SQL Java
数据库TiDB-01.数据库架构概述
TiDB兼容MySQL 5.7协议,支持水平扩容或者缩容的金融级高可用的云原生分布式数据库。
794 2
数据库TiDB-01.数据库架构概述
|
前端开发 JavaScript
HTML+CSS+JAVASCRIPT实现——情人节表白情书
本文主要介绍如何使用HTML三件套来实现制作一封情人节表白情书,富含情谊与爱,打动女生的心灵
1181 2
HTML+CSS+JAVASCRIPT实现——情人节表白情书
|
10月前
|
人工智能 安全 程序员
一文彻底搞清楚HarmonyOS元服务
本文介绍Harmony OS的元服务,这是一种轻量级应用程序形态,具备秒开直达、纯净清爽、服务相伴、即用即走等特性,支持多设备运行,提升服务获取效率。元服务开发流程包括创建项目、UI开发、真机调试、打包测试及上架发布。欢迎关注,一起成长!
2732 0
|
8月前
|
存储 监控 算法
员工行为监控软件中的 Go 语言哈希表算法:理论、实现与分析
当代企业管理体系中,员工行为监控软件已逐步成为维护企业信息安全、提升工作效能的关键工具。这类软件能够实时记录员工操作行为,为企业管理者提供数据驱动的决策依据。其核心支撑技术在于数据结构与算法的精妙运用。本文聚焦于 Go 语言中的哈希表算法,深入探究其在员工行为监控软件中的应用逻辑与实现机制。
197 14
|
存储 网络协议 Linux
Linux/centos上如何配置管理NFS服务器?
Linux/centos上如何配置管理NFS服务器?
919 0
|
Oracle 关系型数据库 MySQL
Flink CDC产品常见问题之从EARLIEST_OFFSET启动就报错如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
自动驾驶 Ubuntu Docker
【Apollo】阿波罗自动驾驶系统:驶向未来的智能出行(含源码安装)
【Apollo】阿波罗自动驾驶系统:驶向未来的智能出行(含源码安装)
|
Ubuntu Linux
仓库 “https://mirrors.aliyun.com/docker-ce/linux/ubuntu una Release” 没有 Release 文件
仓库 “https://mirrors.aliyun.com/docker-ce/linux/ubuntu una Release” 没有 Release 文件
3379 0
|
缓存 NoSQL Redis
Redis 6.0多线程模型比单线程优化在哪里了
Redis 6.0多线程模型比单线程优化在哪里了
512 0
|
存储 关系型数据库 MySQL
Mysql数据库无法保存表情包和复杂汉字
Mysql数据库无法保存表情包和复杂汉字
490 0