mysql主从、mysql半同步、GTID复制从零搭建

本文档详细介绍了在CentOS/Rocky Linux 8环境下,如何配置MySQL主从同步,包括修改配置文件、设置GTID模式、半同步复制以及创建用户授权。并展示了在主从节点间进行数据同步的测试过程,确保数据一致性。
摘要由CSDN通过智能技术生成

在这里插入图片描述

主机环境

系统支持centos8,rocky8
[root@mysql-master ~]# cat /etc/os-release
NAME="Rocky Linux"
VERSION="8.6 (Green Obsidian)"
关闭防火墙,selinux,开启时间同步

一、mysql主从搭建

(1)安装数据库,修改配置文件

修改主机名
hostnamectl set-hostname mysql-master
hostnamectl set-hostname mysql-slave
[root@mysql-master ~]# hostname -I
10.0.0.100
[root@mysql-slave ~]# hostname -I
10.0.0.101
[root@mysql-master ~]# yum -y install mysql-server
[root@mysql-slave ~]# yum -y install mysql-server
-------------------------master-------------------------
修改配置文件
[root@mysql-master ~]# vim /etc/my.cnf
[mysqld]
server-id=100
log-bin=/data/mysql/mysql-bin
general_log
#半同步
plugin-load-add="semisync_master.so"
loose-rpl_semi_sync_master_enabled=ON
loose-rpl_semi_sync_master_timeout=3000
#gtid模式
gtid_mode=ON
enforce_gtid_consistency #保证GTID安全的参数
-------------------------slave-------------------------
修改配置文件
[root@mysql-master ~]# vim /etc/my.cnf
[mysqld]
server-id=101
log-bin=/data/mysql/mysql-bin
general_log
#半同步
loose-plugin-load-add="semisync_slave.so"
loose-rpl_semi_sync_slave_enabled=ON
#gtid模式
gtid_mode=on
enforce_gtid_consistency #保证GTID安全的参数

(2)两台主机执行

新增二进制日志路径文件夹
mkdir -p /data/mysql/
chown -R mysql:mysql /data
开机启动数据库
systemctl enable mysqld
systemctl start mysqld

(3)master执行

mysql> show master logs;
+------------------+-----------+-----------+
| Log_name         | File_size | Encrypted |
+------------------+-----------+-----------+
| mysql-bin.000001 |       179 | No        |
| mysql-bin.000002 |       156 | No        |
+------------------+-----------+-----------+
2 rows in set (0.00 sec)

查看插件
mysql> SHOW PLUGINS;
查看变量
mysql> SHOW GLOBAL VARIABLES LIKE '%semi%'

创建用户
mysql> create user repluser@'10.0.0.%' identified by '123456';
mysql> grant replication slave on *.* to repluser@'10.0.0.%';

(4)slave执行

加入master
mysql> CHANGE MASTER TO
  MASTER_HOST='10.0.0.100',
  MASTER_USER='repluser',
  MASTER_PASSWORD='123456',
  MASTER_PORT=3306,
  MASTER_CONNECT_RETRY=10;
  
启用
mysql> start slave;

查看状态
mysql> show slave status\G;

二、master创建数据,查看数据是否同步

创建数据库
mysql> create database testdb;
mysql> use testdb;
创建表
mysql> create table student(id int unsigned auto_increment primary key,name varchar(20) not null,age tinyint unsigned,gender enum('M','F')default 'M');

查看表结构
mysql> desc student;
插入数据
mysql> insert student(name,age) values('xiaoming',18);

查询表数据
mysql> select * from student;
+----+----------+------+--------+
| id | name     | age  | gender |
+----+----------+------+--------+
|  1 | xiaoming |   18 | M      |
+----+----------+------+--------+
1 row in set (0.00 sec)

到slave服务器上查询,可以发现数据和master是一模一样的

三、测试半同步

先敲好代码,再停止slave的mysql服务,然后立即在master上插入表
[root@mysql-slave ~]# systemctl stop mysqld

master停留几秒,检测slave是否在线,检测slave掉线了,才插入数据
mysql> insert student(name,age) values('test2',18);

启动slave后,自动加入master
[root@mysql-slave ~]# systemctl start mysqld
查看数据,发现master和slave上的数据都是一样的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值