简单谈谈MySQL的半同步复制

MySQL的半同步复制是一种高可用性和数据一致性的数据复制方式,它可以在主节点提交事务后,等待至少一个从节点也提交了该事务才返回成功,保证了数据的可靠性,同时又不会像全同步复制一样影响主库的写入效率。下面是详细的攻略:

步骤一:修改MySQL的配置文件

在MySQL的配置文件(my.cnf)中,需要打开半同步复制选项:

[mysqld]
plugin-load=“semisync_master.so;semisync_slave.so”  # 加载插件
# 设置为 1 表示开启半同步复制,0 表示关闭
# 默认为 OFF 且只能在主库启用
# 关闭半同步复制的方式是修改为 SEMI_SYNC_SLAVE=NO
# 把以下 2 个参数写在主库的配置文件 my.cnf 中
# 从库可以不设置
# 开启半同步复制需满足高版本(5.5.16)和配套网络协议
# 另外,务必要 根据版本下载对应的插件
# 下载地址:https://dev.mysql.com/downloads/mysql/
# 例如:percona-server-5.6.40-84.0.tar.gz/MySQL-server-5.7.26-1.el7.x86_64.rpm
# 这里为了简单只讲半同步,其中 SSL 没有加入

# 主库需要开启半同步复制,从库无需开启
# semisync_master_enabled 设定打开 MySQL 半同步复制能力
# 只有在主机上打开时才能生效。
semisync_master_enabled = 1
# 从库是否要接受半同步复制的同步信息,值为0或1。
semisync_slave_enabled = 1
# 查看半同步插件状态信息
show plugins;

步骤二:重启MySQL实例

重启MySQL服务,让修改的配置文件生效。

步骤三:创建测试表和插入测试数据

先创建一张测试表:

create table test(
    id int primary key,
    name varchar(20)
) engine=InnoDB;

插入测试数据:

insert into test values(1,'test1'),(2,'test2'),(3,'test3');

步骤四:创建从库

创建从库用于数据同步:

# 复制主库的数据前,我们先配置从库的信息,命令如下
# REPLICA_SERVER_ID 是从库的 ID,这个值必须唯一并非 0。

CHANGE MASTER TO
MASTER_HOST='主库ip',
MASTER_PORT=3306,
MASTER_USER='用户名',
MASTER_PASSWORD='密码',
MASTER_LOG_FILE='binlog日志名称',
MASTER_LOG_POS=主库的 binlog 日志点,
MASTER_CONNECT_RETRY=10,
MASTER_HEARTBEAT_PERIOD=1;  # 主库和从库进行连接检查的心跳周期默认值是一秒

步骤五:开启从库同步

在从库上执行以下命令,开启同步,等待同步成功:

START SLAVE;
SHOW SLAVE STATUS \G;

步骤六:在主库中插入数据

在主库中插入新数据:

INSERT INTO test VALUES (4, 'test4');

等待从库同步成功,可以通过执行 SHOW SLAVE STATUS \G;查看复制状态,其中 Seconds_Behind_Master字段应该为0。

示例一

在主库中执行如下SQL语句:

INSERT INTO test VALUES (5, 'test5');

等待从库同步成功后,执行查询语句:

SELECT * FROM test;

结果应该如下:

id name
1 test1
2 test2
3 test3
4 test4
5 test5

示例二

在主库中执行如下SQL语句:

BEGIN;
UPDATE test SET name='new test' WHERE id=1;
INSERT INTO test VALUES (6, 'test6');
COMMIT;

等待从库同步成功后,执行查询语句:

SELECT * FROM test;

结果应该如下:

id name
1 new test
2 test2
3 test3
4 test4
5 test5
6 test6

以上就是MySQL的半同步复制的相关攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:简单谈谈MySQL的半同步复制 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • MySQL 数据库 增删查改、克隆、外键 等操作总结

    MySQL 数据库增删查改、克隆、外键等操作总结 MySQL 是一种关系型数据库管理系统,被广泛应用于 Web 服务的开发中。本文将对 MySQL 数据库的增删查改、克隆、外键等操作进行总结和详细说明。 数据库连接 在进行任何数据库操作前,首先需要进行数据库连接。通常以以下格式连接 MySQL: mysql -u root -p 其中 -u 参数后面是数据库…

    database 2023年5月21日
    00
  • Docker中部署mysql服务的方法及遇到的坑

    下面为你介绍在Docker中部署mysql服务的方法及遇到的坑的完整攻略。 1. Docker中部署mysql服务的方法 1.1 Docker安装 如果你还没有安装Docker,可以参考Docker官网的指引进行安装:Get started with Docker 1.2 获取MySQL的镜像 可以通过Docker Hub获取MySQL的官方镜像,使用以下命…

    database 2023年5月18日
    00
  • 解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]

    当我们使用Laravel的php artisan migrate命令来创建或者更新数据库表时,有时候会遇到SQLSTATE[42000]的报错情况。这种情况可能是由于SQL语句不正确或者数据库连接出现错误导致。针对这种问题,我们可以从以下几个方面来进行排查和解决: 检查SQL语句语法 在使用Laravel的php artisan migrate命令时,我们需…

    database 2023年5月19日
    00
  • centos7 mariadb主从复制配置搭建详解步骤

    CentOS 7 MariaDB主从复制配置搭建详解步骤 简介 MariaDB主从复制是指将主数据库的数据同步复制到从数据库上,通常用于实现数据备份和负载均衡。本文将介绍如何在CentOS 7上配置MariaDB主从复制。 环境准备 主服务器:IP地址为192.168.1.100,MariaDB版本为10.3; 从服务器:IP地址为192.168.1.101…

    database 2023年5月22日
    00
  • 基于Redis的Setnx实现分布式锁

    一、 redis分布式锁原理     并发 到Redis里变成了串行排队,单线程   二、基于Redis的Setnx实现分布式锁    1、pom     <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo…

    Redis 2023年4月13日
    00
  • SQL Server 2005 安装遇到的错误提示和解决方法

    SQL Server 2005 安装遇到的错误提示和解决方法 在安装 SQL Server 2005 的过程中,可能会遇到各种错误提示,下面列出常见的错误提示及其解决方法。 错误提示 1:Operation system supported for edition upgrade only. 这个错误提示通常是由于安装的 SQL Server 2005 版本…

    database 2023年5月18日
    00
  • 关于SQL查询语句关键字方法

    下面我来详细讲解一下关于SQL查询语句关键字方法的完整攻略。 1. SELECT关键字 SELECT是SQL查询语句中最基础、最常用的关键字,它的作用是用来指定要查询的表、字段。SELECT语句的一般格式如下: SELECT column1, column2, … FROM table_name; 其中,column表示我们要查询的字段名,table_n…

    database 2023年5月21日
    00
  • 虚拟机linux安装redis实现过程解析

    下面我将详细讲解“虚拟机linux安装redis实现过程解析”的完整攻略。 准备工作 在安装redis前,需要先安装虚拟机和Linux系统。我们这里以Vmware Workstation Pro虚拟机和Ubuntu 20.04 LTS Linux系统为例。 安装redis 步骤1:安装redis 打开终端,输入以下命令安装redis: sudo apt up…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部