mysql异步复制与半同步复制

mycat异步复制:

Mycat是一个基于MySQL协议的开源数据库中间件,它提供了数据库分片、读写分离、异步复制等功能。要在Mycat中实现异步复制,您需要进行以下配置和操作:

  1. 安装Mycat:首先,需要在您的服务器上安装Mycat。您可以从Mycat的官方网站(http://www.mycat.io/)下载安装包,根据官方文档的指引进行安装。

  2. 配置Mycat:安装完成后,需要配置Mycat。主要配置文件通常为`mycat.conf`和`schema.xml`。在这些配置文件中,您可以设置Mycat的端口号、数据源、用户权限等信息。

  3. 配置异步复制:在Mycat的配置文件中,找到`dataNode`节点,该节点表示数据节点,用于定义数据源。在`dataNode`节点中,您可以设置`async`属性为`true`,以实现异步复制。例如:

    xml 复制代码
    <dataNode name="dn1" dataHost="localhost" database="test" user="root" password="password" async="true">
        <dataHost name="localhost" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="1" dbDriver="native" />
    </dataNode>
  4. 启动Mycat:完成配置后,启动Mycat。通常,可以通过运行Mycat的启动脚本来实现。例如,在Linux环境下,可以使用以下命令启动Mycat:

    nohup sh mycat-start.sh &

  5. 测试异步复制:在应用程序中,使用Mycat的连接字符串(包括主机、端口、用户名和密码)连接到Mycat,然后执行一些数据库操作。在Mycat的控制台输出中,您可以看到异步复制的相关信息。

请注意,以上步骤仅作为基本指导,具体的配置和操作可能会因Mycat的版本和您的实际需求而有所不同。在使用Mycat进行异步复制时,请务必遵循Mycat的官方文档和示例进行操作。

MySQL异步复制

在MySQL中设置一主一从半同步复制,请按照以下步骤操作:

  1. 在主节点上创建同步账号:

    CREATE USER 'repl'@'%' IDENTIFIED BY 'MyNewPass4!';

  2. 授予同步账号复制权限:

    GRANT REPLICATION SLAVE ON . TO 'repl'@'%';

  3. 在主节点上配置半同步复制:

在MySQL配置文件(my.cnf)中,添加以下选项:

复制代码
[mysqld]
semi_sync_master = 1 

这将使主节点支持半同步复制。

  1. 在从节点上配置半同步复制:

在MySQL配置文件(my.cnf)中,添加以下选项:

复制代码
[mysqld]
semi_sync_slave = 1 

这将使从节点支持半同步复制。

  1. 重启MySQL服务:

在主节点和从节点上重启MySQL服务,使配置生效。

  1. 在从节点上设置主节点信息:

使用以下命令将从节点指向主节点:

复制代码
CHANGE MASTER TO 
    MASTER_HOST='<hostname>',
    MASTER_USER='repl',
    MASTER_PASSWORD='MyNewPass4!',
    MASTER_LOG_FILE='<logfile>',
    MASTER_LOG_POS=<position>;

请将`<hostname>`替换为主节点的主机名或IP地址,将`<logfile>`和`<position>`替换为主节点的二进制日志文件名和位置。您可以在主节点上使用以下命令查看二进制日志信息:

复制代码
SHOW MASTER STATUS;
  1. 在从节点上启动复制进程:

    START SLAVE;

现在,您已经成功设置了MySQL一主一从的半同步复制。请注意,以上步骤仅作为基本指导,具体的配置和操作可能会因MySQL的版本和您的实际需求而有所不同。在使用MySQL进行半同步复制时,请务必遵循MySQL的官方文档和示例进行操作。

半同步复制:

在master的操作

复制代码
install plugin rpl_semi_sync_master SONAME 'semisync_master.so'; #安装插件
set global rpl_semi_sync_master_enabled = 1; #1:启用,0:禁止
set global rpl_semi_sync_master_timeout = 60000;       # 60秒,时间长些便于实验

在slave的操作

复制代码
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
set global rpl_semi_sync_slave_enabled = 1; #开启半同步
重启replication(stop slave;start slave;)

show plugins;

查看主库参数

复制代码
show global variables like "%sync%"; show global status like "%sync%";

参数说明

Rpl_semi_sync_master_clients # 半同步复制客户端的个数

Rpl_semi_sync_master_net_avg_wait_time #平均等待时间(默认毫秒)

Rpl_semi_sync_master_net_wait_time #总共等待时间

Rpl_semi_sync_master_net_waits #等待次数

Rpl_semi_sync_master_no_times #关闭半同步复制的次数

Rpl_semi_sync_master_no_tx #表示没有成功接收slave提交的次数

Rpl_semi_sync_master_status #表示当前是异步模式还是半同步模式,on为半同步

Rpl_semi_sync_master_timefunc_failures #调用时间函数失败的次数

Rpl_semi_sync_master_tx_avg_wait_time #事物的平均传输时间

Rpl_semi_sync_master_tx_wait_time #事物的总共传输时间

Rpl_semi_sync_master_tx_waits #事物等待次数

Rpl_semi_sync_master_wait_pos_backtraverse # 网上有人理解为"后来的先到了,而先来的还没有到的次数"

Rpl_semi_sync_master_wait_sessions #当前有多少个session因为slave的回复而造成等待

Rpl_semi_sync_master_yes_tx #成功接受到slave事物回复的次数

相关推荐
.Shu.28 分钟前
Mysql InnoDB 底层架构设计、功能、原理、源码系列合集【四、事务引擎核心 - MVCC与锁机制】
数据库·mysql
多工坊34 分钟前
【DataGrip】连接达梦数据库后,能查询数据但是看不到表的几种情况分析,达梦数据库驱动包下载DmJdbcDriver18.jar
java·数据库·jar
何中应1 小时前
如何用Redis作为消息队列
数据库·redis·缓存
liulilittle2 小时前
.NET反射与IL反编译核心技术
开发语言·数据库·c#·.net·反射·反编译·il
老纪的技术唠嗑局2 小时前
向量数据库在 UGC 社区个性化推荐的落地指南
数据库
张鱼小丸子2 小时前
MySQL企业级部署与高可用实战
运维·数据库·mysql·云原生·高可用·mha·组从复制
GalaxyPokemon2 小时前
MYSQL的默认隔离级别都有什么
数据库·mysql
DONG9132 小时前
《三驾马车:MySQL、MongoDB、Redis对比与融合实战》
数据库·redis·sql·mysql·mongodb·database
程序边界3 小时前
从 Oracle 到 KingbaseES:企业信创改造的“抄作业”模板,直接套用!
数据库·oracle
funfan05173 小时前
奇怪的“bug”--数据库的“隐式转换”行为
数据库·bug