乐趣区

关于mysql:MySQL80轻松搞定GTID主从复制

为什么须要主从复制?

艰深来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务零碎性能会升高。

为了晋升业务零碎性能,优化用户体验,能够通过做主从复制来加重主数据库的负载。

而且如果主数据库宕机,可疾速将业务零碎切换到从数据库上,可防止数据失落。

主从复制原理

  • 主库将更新记录保留于 Binlog 文件中,并通过 Binglog Dump 线程发送给从库。
  • 从库的 I / O 线程从主库读取 Binlog 更新的数据,写入到 Relay log 中。
  • 从库的 SQL 线程读取 Relay log 文件的数据写入从库,实现同步。

采纳 GTID (Global Transaction ID) 主从复制形式,保障了每个在主库上提交的事务在集群中有一个惟一的 ID。

这种形式强化了数据库的主从一致性,故障复原以及容错能力。

相比于晚期通过 master_log_file,master_log_pos 同步的主从复制,省去了从库宕机重启后,须要重新配置的问题。

接下来介绍在虚拟机 centos8 版本,实现 GTID 主从复制的三大步骤:

一.MySQL8.0 装置

1.1、应用 rpm 来装置 MySQL

wget https://repo.mysql.com/mysql80-community-release-el8-1.noarch.rpm

1.2、启动 mysql 并设置开机自启动

systemctl start mysqld.service

1.3、敞开防火墙并设置开机不启动

systemctl stop firewalld.service

1.4、登录,无需明码,以后最新版本为 8.0.26

mysql

1.5、查看 BINLOG 状态,最新版本默认曾经开启

mysql> show variables like '%log_bin%';

1.6、复制装置好 MySQL8 的虚拟机镜像,作为从库二.主库配置

2.1、设置 server-id,关上 GTIT

vim /etc/my.cnf

2.2、登录 mysql, 增加用于同步的数据库账号

mysql> create user 'kunlun'@'%' identified by '123456';

三.从库配置

3.1、删除 auto.cnf,重启主动生成 server-uuid

rm -f /var/lib/mysql/auto.cnf

3.2、设置 server-id, 主库和从库 server-id 不要反复

vim /etc/my.cnf

3.3、登录 mysql, 配置主从同步

mysql> change master to

3.4、启动从库服务

mysql> start slave;

3.5、查看状态

mysql> show slave status\G

3.6、测试

在主库创立数据库:

mysql> create database mydb;

在从库查看:

mysql> show databases;

至此,GTID 形式的主从复制曾经搭建胜利。

留神

要实现 MySQL 的 Replication,首先必须关上 master 端的 binlog(mysql-bin.xxxxxx) 日志性能,否则无奈实现 mysql 的主从复制。

因为 MySQL 的整个主从复制过程实际上就是:slave 端从 master 端获取 binlog 日志,而后再在本人身上齐全程序的执行该日志中所记录的各种 SQL 操作。

KunlunDB 我的项目已开源

【GitHub:】
https://github.com/zettadb

【Gitee:】
https://gitee.com/zettadb

END

退出移动版