首页 > 数据库 >Linux中MySQL配置主主复制操作

Linux中MySQL配置主主复制操作

时间:2024-09-25 15:19:27浏览次数:10  
标签:slave log Linux 主主 mysql master MySQL 服务器 GTID

一、GTID

GTID(Global Transaction Identifier)是MySQL的一种用于标识分布式环境中事务的全局唯一标识符。它在MySQL的主从复制场景中尤为重要,尤其是在使用MariaDB或MySQL 5.6及更高版本的环境中。

GTID由两部分组成:服务器ID(标识执行该事务的服务器)和事务序号(表示在该服务器上执行的事务顺序)。每个事务都有一个唯一的GTID来标识它,无论是在主数据库上提交还是由从属数据库处理。GTID的格式通常是server_id:transaction_number。

所以在配置MySQL主主复制前,需要确保两台主服务器都启动了GTID模式

二、准备工作

1. 准备两台虚拟机,这里我的配置如下:

服务器
服务器 Ⅰ服务器 Ⅱ
IP192.168.159.120192.168.159.121

2. 软件配置如下:

MySQL5.7

三、服务器Ⅰ配置 

1. 修改配置文件:

进入 my.cnf 文件:

vim /etc/my.cnf

添加以下内容:

log-slave-updates = true
auto_increment_offset = 1
auto_increment_increment = 2    # 奇数ID

server-id = 100
log_bin = mysql-bin    # 打开二进制功能,master主服务器必须打开此项
gtid_mode = ON
enforce_gtid_consistency = true

配置说明:

  • server-id:设置服务器的唯一标识符。
  • log_bin:启用二进制日志记录。
  • gtid_mode:启用 GTID 模式。
  • enforce_gtid_consistency:强制 GTID 一致性。

添加之后保存,然后重启mysql服务:

systemctl restart mysqld

接下来我们需要创建一个有复制权限的用户,这个用户用于两个服务器之间的同步:

set global validate_password_length=4;
set global validate_password_policy=LOW;    # 这里我想改一个简单的密码,所以执行以上两行,若要设置复杂密码则忽略此两行
grant replication slave on *.* to 'repluser'@'192.168.159.%' identified by '123456';
flush privileges;

这些 SQL 命令的作用如下:

  • grant replication slave:授予用户复制权限。
  • flush privileges:刷新权限,立即生效。
2. 查看状态:

完成以上步骤后,我们查看一下主服务器的状态:

show master status;

以下是我的服务器Ⅰ的状态:

这里我们需要记住file为mysql-bin.000002,position为1213

打开另一台服务器Ⅱ 192.168.159.121,登录mysql:

CHANGE MASTER TO master_host = '192.168.159.120', # 服务器IP地址
master_port = 3306,
master_user = 'repluser',        # 创建的用户名
master_password = '123456',      # 密码
master_log_file = 'mysql-bin.000002', # 这里需要看另一台服务器的file
master_log_pos = 1213;                # 这里需要看另一台服务器的position

将之前记住的两个数值输入进去,启动服务:

start slave;

四、服务器Ⅱ配置

!!!服务器Ⅱ的配置和服务器Ⅰ的配置基本一致,有些细节需要修改以下!!!

1. 修改配置文件:

进入 /etc/my.cnf 文件:

vim /etc/my.cnf

添加以下内容:

log-slave-updates = true
auto_increment_offset = 2
auto_increment_increment = 2    # 偶数ID

server-id = 101
log_bin = mysql-bin    # 打开二进制功能,master主服务器必须打开此项
gtid_mode = ON
enforce_gtid_consistency = true

配置说明在服务器Ⅰ中已经说明,这里不重复了

添加之后保存文件,重启mysql服务:

systemctl restart mysqld

和服务器Ⅰ配置一样,接下来需要创建一个有复制权限的用户,这个用户用于两个服务器之间的同步:

set global validate_password_length=4;
set global validate_password_policy=LOW;    # 这里我想改一个简单的密码,所以执行以上两行,若要设置复杂密码则忽略此两行
grant replication slave on *.* to 'repluser'@'192.168.159.%' identified by '123456';
flush privileges;
2. 查看状态:

完成以上步骤后,我们查看一下主服务器的状态:

show master status;

以下是我的服务器Ⅱ的状态:

这里的file为mysql-bin.000001,position为2437

 打开另一台服务器Ⅰ 192.168.159.120,登录mysql:

CHANGE MASTER TO master_host = '192.168.159.121', # 服务器IP地址
master_port = 3306,
master_user = 'repluser',        # 创建的用户名
master_password = '123456',      # 密码
master_log_file = 'mysql-bin.000001', # 这里需要看另一台服务器的file
master_log_pos = 2437;                # 这里需要看另一台服务器的position

将之前记住的两个数值输入进去,启动服务:

start slave;

五、测试是否配置成功

1. 登录数据库,输入以下指令查看:
show slave status;

状态如下(这里我使用的工具为Navicat):

这里需要看到 Slave_IO_Running 和 Slave_SQL_Running 为两个 yes 

分别在两个数据库中添加数据,查看另一个数据库是否一致,一致即完成

标签:slave,log,Linux,主主,mysql,master,MySQL,服务器,GTID
From: https://blog.csdn.net/2302_76618426/article/details/142521781

相关文章

  • 解读MySQL8.0数据字典重构源码
    摘要:本文对社区MySQL5.7到8.0演进过程中数据字典DD的重构(缓存,持久化),AtomicDDL的关键实现进行了分析。本文分享自华为云社区《【华为云MySQL技术专栏】MySQL8数据字典重构源码解读》,作者:GaussDB数据库1.背景介绍在MySQL5.7版本的使用实践过程中,我们很容易遇到DDL崩溃后导致数......
  • 女生学Linux云计算怎么样?
    现如今,生活压力较大,就业找工作也比较难,而为了能够获得满意的工作、稳定的发展,很多小伙伴都想要找一个薪酬高的行业,于是不少人将目光瞄准IT行业。而作为当下热门的技术,Linux云计算成为香饽饽,那么0基础女生转行学Linux云计算难吗?以下是详细的内容介绍。首先,我可以肯定的告诉......
  • Windows 11 彻底卸载MySQL和安装
    Windows11彻底卸载MySQL和安装卸载1.关闭MySQL服务快捷键Win+R打开运行窗口输入services.msc打开服务窗口找到MySQL服务,停止此服务2.卸载MySql软件进入控制面板-程序和功能卸载一切和MySQL相关的软件3.删除MySQL相关文件夹如果安装时有指......
  • linux 切换阿里云镜像源
    目录linux切换阿里云镜像源备份原有文件:创建阿里云CentOS仓库文件:清理缓存并更新软件包列表:测试是否成功:linux切换阿里云镜像源centos7安装好后,发现外网可以ping通,但是yum一直报错,看报错内容为镜像源问题于是切换镜像源备份原有文件:在进行任何更改之前,请确保备份原有的仓......
  • mysql flaot 不准
    (JDBC-MySql)概述JDBC全称JavaDataBaseConnectivity:java数据库连接在JDBC创建之前java程序员每操作一款关系型数据库就需要学习java连接该数据库代码,由于关系型数据库过多(如:oracle、db2、MySQL......),不可能全部学习,所以java程序员就期望SUN公司能研发出一套可以运行所有关系......
  • 【越学学糊涂的Linux系统】Linux指令篇(2)
    一、echo指令:✔️✔️在终端中显示文本内容或向文件中写入文本Ⅰ.基本用法:0x00打印字符串:打印字符串/显示文本内容;可以用双引号作为文本内容⬇️⬇️更推荐用单引号这里我将字符串打印出来了。和printf的功能一样;......
  • linux集群 keepalived+nginx实现高可用集群
    用keepalived配置高可用搭建高可用集群高可用集群,即“HA集群”,也常称作“双机热备”,用于关键业务。常见实现高可用的开源软件有heartbeat和keepalived,其中keepalived还有负载均衡的功能。这两个软件类似,核心原理都是通过心跳线连接两台服务器,正常情况下由一台服务器提供服务,......
  • 【MySQL】基础知识Day1
    博客主页:小蜗系列专栏:MySQL参考教程:菜鸟教程/黑马关注博主,后期持续更新系列文章如果有错误请大家批评指出,我会及时修改感谢大家点赞......
  • mysql 八股文
    八股文mysql篇基础数据3大范式第一范式:要求任何一张表必须有主键,每一个字段原子性不可再分第二范式:建立在第一范式的基础之上,要求所有非主键字段完全依赖主键,不要产生部分依赖。第三范式:建立在第二范式的基础上,要求所有非主键字段直接依赖主键,不要产生传递依赖数据......
  • centos(linux):用命令设置用户的shell以及/bin/false和/sbin/nologin的区别
    一,/bin/false和/sbin/nologin作为shell时的区别1,/bin/false/bin/false是一个什么都不做,立即返回非零退出状态的命令。它通常用于禁止用户登录用户不会收到任何错误或提示信息,登录尝试简单地被拒绝,没有任何解释2,/sbin/nologin/sbin/nologin是一个专门设计来阻止用户登录的程......