主主复制,半同步复制

MYSQL主主复制:互为主从

容易产生的问题:数据不一致

主机 IP
Master1 192.168.37.7
Master2 192.168.37.17

Master1设置

[[email protected] ~]#vim /etc/my.cnf
[mysqld]
log_bin
server_id=7
auto_increment_offset=1
auto_increment_increment=2

创建复制帐号

MariaDB [(none)]> grant replication slave on *.* to [email protected]‘192.168.37.%‘ identified by ‘centos‘;

Master2设置

[[email protected] ~]#vim /etc/my.cnf
[mysqld]
log_bin
server_id=17
auto_increment_offset=2
auto_increment_increment=2

同步信息master2同步master1

MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST=‘192.168.37.7‘,
    -> MASTER_USER=‘repluser‘,
    -> MASTER_PASSWORD=‘centos‘,
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE=‘mariadb-bin.000001‘,
    -> MASTER_LOG_POS=245;
Query OK, 0 rows affected (0.03 sec)
MariaDB [(none)]> START SLAVE;
Query OK, 0 rows affected (0.01 sec)

Master1同步Master2

MariaDB [(none)]> CHANGE MASTER TO
    -> MASTER_HOST=‘192.168.37.17‘,
    -> MASTER_USER=‘repluser‘,
    -> MASTER_PASSWORD=‘centos‘,
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE=‘mariadb-bin.000001‘,
    -> MASTER_LOG_POS=245;
Query OK, 0 rows affected (0.03 sec)
MariaDB [(none)]> START SLAVE;
Query OK, 0 rows affected (0.01 sec)

主主复制完成

半同步复制

半同步是当若干从服务器中有一台与主服务器同步成功,就认为同步成功。返回结果给客户机
半同步需要安装独立的插件来实现
查看已安装插件show plugins;
semisync_master.so 主服务器插件
semisync_slave.so 从服务器插件
条件:设置为主从复制

Master

MariaDB [(none)]> INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so‘;  #安装插件
Query OK, 0 rows affected (0.01 sec)

开启master半同步复制

[[email protected] ~]#vim /etc/my.cnf
rpl_semi_sync_master_enabled                 #添加服务器选项
[[email protected] ~]#systemctl restart mariadb   #重启服务生效

slave

MariaDB [hellodb]> INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so‘;   #安装插件
Query OK, 0 rows affected (0.02 sec)

###- 开启slave半同步复制

[[email protected] ~]#vim /etc/my.cnf
rpl_semi_sync_slave_enabled                  #添加服务器选项
[[email protected] ~]#systemctl restart mariadb   #重启服务生效

半同步设置完成

MariaDB [(none)]> show global status like ‘%semi%‘;  #查看复制信息
+--------------------------------------------+-------+
| 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.44 sec)

MariaDB [(none)]> show global variables like ‘%semi%‘;
+------------------------------------+-------+
| Variable_name                      | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled       | ON    |  #已开启半同步
| rpl_semi_sync_master_timeout       | 10000 |  #超时时长10000ms
| rpl_semi_sync_master_trace_level   | 32    |
| rpl_semi_sync_master_wait_no_slave | ON    |
+------------------------------------+-------+
4 rows in set (0.00 sec)

MariaDB [(none)]> 
MariaDB [(none)]> show global status like ‘%semi%‘;
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| Rpl_semi_sync_slave_status | ON    |
+----------------------------+-------+
1 row in set (0.02 sec)

MariaDB [(none)]> show global 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)

原文地址:https://blog.51cto.com/13749470/2392470

时间: 2024-07-29 17:11:54

主主复制,半同步复制的相关文章

MariaDB数据库主从复制、双主复制、半同步复制、基于SSL的安全复制实现及其功能特性介绍

一.复制概述 MariaDB/MySQL内建的复制功能是构建大型,高性能应用程序的基础.将MySQL的数据分布到多个系统上去,这种分布的机制,是通过将MySQL的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位

Mysql实现数据库主从复制、主主复制、半同步复制

--------------Mysql实现数据库主从复制架构---------------- 一.环境准备: centos系统服务器2台.一台用户做Mysql主服务器,一台用于做Mysql从服务器,配置好yum源.防火墙关闭.各节点时钟服务同步.各节点之间可以通过主机名互相通信 192.168.41.145   master 192.168.41.137  slave 二.准备步骤: 1.iptables -F && setenforce 清空防火墙策略,关闭selinux 2.①vim

MariaDB主从半同步复制详解

半同步复制(Semisynchronous replication) 介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端.相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间.所以,半同步复制最好在低延时的网络中使用. 潜在的问题 客户端事务在存储引擎层提交后,在得到从库确认的过程中,主库宕机了,此时,可能的情况有两种: 1.事务还没发

MariaDB(MySQL):半同步复制+ssl+复制过滤

一.半同步复制   1.mysql的复制 通过记录主服务器的二进制日志,并在从服务器上进行重放(replay)完成复制,默认都是异步进行的. 2.半同步复制 半同步复制是google贡献给MySQL的一个补丁,在MySQL 5.5之后就支持了,MariaDB都是支持的. MySQL的插件,一般在MySQL安装目录下; 半同步复制插件默认没有启用,需要自己安装,/usr/local/mysql/lib/plugin可以看到semisync_master.so和semisync_slave.so和其

mysql5.623 GTID主从复制+半同步复制安装与配置

一.GTID简介 什么是GTID GTID(Global Transaction ID)是对于一个已提交事务的编号,并且是一个全局唯一的编号.GTID实际上是由UUID+TID组成的.其中UUID是一个MySQL实例的唯一标识.TID代表了该实例上已经提交的事务数量,并且随着事务提交单调递增.下面是一个GTID的具体形式 3E11FA47-71CA-11E1-9E33-C80AA9429562:23 更详细的介绍可以参见:官方文档 GTID的作用 那么GTID功能的目的是什么呢?具体归纳主要有以

MaridDB主从复制,双主模型,半同步的配置

一.主从复制 MariaDB是将客户端上传的数据从主节点复制一份到从节点,从而可以提高读性能,而这种方式并不能提升写性能,因为每一份数据都会在从节点上写一份 缺点:为了增加读写性能,数据库都是将数据 先存入内存中,随后同步到数据文件中,也就是磁盘上,两者同步是异步同步,也就是说,从节点上的数据是落后于主节点的 复制过程: 客户端写入数据---->主服务器的事务日志内存---->事物日志文件---->同步到数据文件---->通过二进制文件---从服务器的IO线程---->中继日

详解mysql复制机制--异步复制,半同步复制和并行复制

详解MySQL复制机制--异步复制,半同步复制和并行复制 **# 异步复制 异步复制是MySQL自带的最原始的复制方式,主库和备库成功建立复制关系后,在备库上会有一个IO线程去主库拉取binlog,并将binlogx到本地,就是下图中Relaylog,然后备库会开启另外一个SQL线程取回放Relay log,通过这种方式达到Master-Slave数据同步的目的. 通常情况下,slave是只读的,可以承担一部分读流量,而且可以根据实际需要,添加一个或者多个slave,这样在一定程度上可以缓解主库

MySQL数据库半同步复制

半同步复制,是有一个从节点或者一部分从节点与主节点之间是同步复制的,其他的从节点仍是异步复制 半同步复制是谷歌公司贡献给MySQL的一个插件,默认在MySQL中没有此插件,所以要实现主从的版同步复制需要安装此插件 rpm -ql mariadb-server| grep semi #找到需要安装的插件,以so结尾 SHOW PLUGINS; #查看当前支持的插件,此处也能看到myisam和innodb也是插件类型 下面开始介绍如何配置主从版同步复制: 1.创建传统的主从复制功能的mysql,请参

深入MySQL复制(三):半同步复制

1.半同步复制 半同步复制官方手册:https://dev.mysql.com/doc/refman/5.7/en/replication-semisync.html 默认情况下,MySQL的复制是异步的,master将新生成的binlog发送给各slave后,无需等待slave的ack回复(slave将接收到的binlog写进relay log后才会回复ack),直接就认为这次DDL/DML成功了. 半同步复制(semi-synchronous replication)是指master在将新生

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

MySQL 复制 =============================================================================== 概述: =============================================================================== MySQL Replication:   1.主从复制的目的和架构 ★Master/Slave(主/从) Master: write/read Slave