当前位置: 首页 > article >正文

MySQL基于gtid的主从同步配置

一、主从复制的原理及工作过程

1、主从复制的原理

通过将MySQL的某一台主机(master)的数据复制到其他主机(slaves)上,并重新执行一遍来执行,复制过程中一台服务器充当主服务器,而其他一个或多个其他服务器充当从服务器。

2、主从复制的工作过程

1)MySQL将数据变化记录到二进制日志中;

2)Slave将MySQL的二进制日志拷贝到Slave的中继日志中;

3)Slave将中继日志中的事件在做一次,将数据变化,反应到自身(Slave)的数据库。

二、实验:主从同步配置

1、环境准备

准备三台没有配置过MySQL的主机:

主机名IP地址主从架构
openEuler-1192.168.121.11
openEuler-2192.168.121.12
openEuler-3192.168.121.13

2、安装并配置MySQL

三台主机使用同一个安装MySQL方式:

# 这里以第一台主机为例
[root@openEuler-1 ~]# yum install -y mysql-server

# 启动服务(开机自启动)
[root@openEuler-1 ~]# systemctl enable --now mysqld

主库配置:

# 配置id(这里以ip地址作为编号),并开启gtid
[root@openEuler-1 ~]# vim /etc/my.cnf
[root@openEuler-1 ~]# tail -n3 /etc/my.cnf
server_id=11
gtid_mode=ON
enforce-gtid-consistency=ON


# 重启服务
[root@openEuler-1 ~]# systemctl restart mysqld

# 授权用户
[root@openEuler-1 ~]# mysql
mysql> create user rep@'192.168.121.%' identified with mysql_native_password by '123456';
mysql> grant replication slave on *.* to rep@'192.168.121.%';

从库配置:

# 从库1:
[root@openEuler-2 ~]# vim /etc/my.cnf
[root@openEuler-2 ~]# tail -n3 /etc/my.cnf
server_id=12
gtid_mode=ON
enforce-gtid-consistency=ON
[root@openEuler-2 ~]# systemctl restart mysqld
[root@openEuler-2 ~]# mysql

mysql> change replication source to
    -> source_host='192.168.121.11',
    -> source_user='rep',
    -> source_password='123456',
    -> source_auto_position=1;

mysql> start slave;

mysql> show slave status \G


# 从库2:
[root@openEuler-3 ~]# vim /etc/my.cnf
[root@openEuler-3 ~]# tail -n3 /etc/my.cnf
server_id=13
gtid_mode=ON
enforce-gtid-consistency=ON
[root@openEuler-3 ~]# systemctl restart mysqld
[root@openEuler-3 ~]# mysql

mysql> change replication source to
    -> source_host='192.168.121.11',
    -> source_user='rep',
    -> source_password='123456',
    -> source_auto_position=1;

mysql> start slave;

mysql> show slave status \G;

3、测试

在主库上建库建表插入数据:

mysql> create database db1;
Query OK, 1 row affected (0.02 sec)

mysql> use db1
Database changed

mysql> create table tb1(id int,name varchar(20));
Query OK, 0 rows affected (0.04 sec)

mysql> insert into tb1 values(1,'Jack'),(2,'Bob'),(3,'Zed');
Query OK, 3 rows affected (0.03 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from tb1;
+------+------+
| id   | name |
+------+------+
|    1 | Jack |
|    2 | Bob  |
|    3 | Zed  |
+------+------+
3 rows in set (0.00 sec)

从库上查看:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db1                |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

mysql> select * from db1.tb1;
+------+------+
| id   | name |
+------+------+
|    1 | Jack |
|    2 | Bob  |
|    3 | Zed  |
+------+------+
3 rows in set (0.00 sec)

http://www.kler.cn/a/510933.html

相关文章:

  • svn tag
  • 日志收集Day002
  • 【人工智能】:搭建本地AI服务——Ollama、LobeChat和Go语言的全方位实践指南
  • 开发神器之cursor
  • 学习记录1
  • springboot基于微信小程序的传统美食文化宣传平台小程序
  • Mono里运行C#脚本29—mono_trampolines_init
  • 管理口令安全和资源(一)
  • Java锁 可重入锁(递归锁) 深入源码解析 ReentrantLock synchronized
  • Linux TFTP 使用
  • 第38天:Web开发-JS应用NodeJS原型链污染文件系统Express模块数据库通讯审计
  • C语言之文本加密程序设计
  • Three.js贴图加载与环境遮蔽贴图强度设置(五)
  • 【Java回顾】Day7 Java IO|分类(传输方式,数据操作)|零拷贝和NIO
  • Linux 创建用户
  • 数据结构——链表和单向链表
  • 02内存结构篇(D2_剖析运行数据区)
  • Java——Stream流的peek方法详解
  • 【opencv】第9章 直方图与匹配
  • 基于.Net Core+Vue的文件加密系统
  • MySQL 可视化工具
  • 31、【OS】【Nuttx】OSTest分析(1):stdio测试(一)
  • MySQL程序之:使用类似URI的字符串或键值对连接到服务器
  • ubuntu24.0安装JDK8-281版本
  • 【游戏设计原理】71 - 兴趣曲线
  • AIGC视频生成明星——Emu Video模型