MySQL8.0轻松搞定GTID主从复制
select table_catalog
,table_schema
,table_name
,engine
from information_schema.tables
where engine='MyISAM';
,table_schema
,table_name
,engine
from information_schema.tables
where engine='MyISAM';
MySQL命令查询所有MyISAM数据库
为什么需要主从复制?
通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低。
为了提升业务系统性能,优化用户体验,可以通过做主从复制来减轻主数据库的负载。
而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失。
一.MySQL8.0安装
1.1、 使用rpm来安装MySQL
1.2、 启动mysql并设置开机自启动
1.3、 关闭防火墙并设置开机不启动
1.4、 登录,无需密码,当前最新版本为8.0.26
1.5、 查看BINLOG状态,最新版本默认已经开启
1.6、 复制安装好MySQL8的虚拟机镜像,作为从库 二.主库配置
2.1、 设置server-id,打开GTIT
三.从库配置
3.1、 删除auto.cnf,重启自动生成server-uuid
3.2、 设置server-id, 主库和从库server-id不要重复
3.3、 登录mysql,配置主从同步
3.4、 启动从库服务
3.5、 查看状态
3.6、 测试
注意
通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低。
为了提升业务系统性能,优化用户体验,可以通过做主从复制来减轻主数据库的负载。
而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失。
主从复制原理
-
主库将更新记录保存于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
1.2、 启动mysql并设置开机自启动
systemctl start mysqld.servicesystemctl enable mysqld.service
1.3、 关闭防火墙并设置开机不启动
systemctl stop firewalld.servicesystemctl disable 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
# 添加
[
mysqld]
server-
id=
1
gtid_mode=
on
enforce-gtid-consistency=
true
# 重启mysql
systemctl restart mysqld.service
2.2、 登录mysql,添加用于同步的数据库账号
mysql> create user 'kunlun'@'%' identified by '123456';mysql> grant replication slave on *.* to 'kunlun'@'%';mysql> flush privileges;
三.从库配置
3.1、 删除auto.cnf,重启自动生成server-uuid
rm -f /var/lib/mysql/auto.cnf # 复制的虚拟机镜像,UUID会重复
3.2、 设置server-id, 主库和从库server-id不要重复
vim /etc/my.cnf# 添加[mysqld] server-id=2 gtid_mode=on enforce-gtid-consistency=true# 重启mysqlsystemctl restart mysqld.service
3.3、 登录mysql,配置主从同步
mysql> change master to master_host='192.168.25.139', #主库IPmaster_port=3306, #默认端口master_user='kunlun', #第二步创建的账户master_password='123456', #密码master_auto_position = 1;
3.4、 启动从库服务
mysql> start slave;
3.5、 查看状态
mysql> show slave status\G*************************** 1. row *************************** Slave_IO_State: Waiting for source to send event Slave_IO_Running: Yes Slave_SQL_Running: Yes
3.6、 测试
在主库创建数据库:
mysql> create database mydb;
在从库查看:
mysql> show databases;
至此,GTID方式的主从复制已经搭建成功。
注意
要实现MySQL的Replication,首先必须打开master端的binlog(mysql-bin.xxxxxx)日志功能,否则无法实现mysql的主从复制。
因为 MySQL的整个主从复制过程实际上就是:slave端从master端获取binlog日志,然后再在自己身上完全顺序的执行该日志中所记录的各种SQL操作。
END
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/70011764/viewspace-2853169/,如需转载,请注明出处,否则将追究法律责任。