gtid主从复制MySQL_MySQL基于GTID主从复制安装过程

大家好,我是anyux。本文介绍MySQL基于GTID主从复制安装过程。

c6c728fbea0a946479dc11ff213a3661.png

GTID核心参数

介绍

GTID(Global Transaction ID)是对于一个已提交事务的唯一编号,并且是一个全局(主从复制)唯一的编号

它的官方定义如下:

GTID= source id:transaction_id

什么是server_uuid,server-id的区别

核心特性:全局唯一,具备幂等性

GTID核心参数

重要参数:

启用gtid类型,否则就是普通的复制架构

gtid-mode=on

强制GTID的致性

enforce-gtid-consistency=true

slave更新是否记录日志,读取relaylog最后一个事务的GTID

log-slave-updates=1

GTID主从复制配置过程

清理环境

pkill mysqld\rm -rf /data/mysql/data/*\rm -rf /data/binlog/*

准备多个目录

\rm -rf /data/33*mkdir -p /data/330{7,8,9}/data

0cb3672d94f44c197763c0e5edda5635.png

准备配置文件

主库server_id=6

cat >/etc/my.cnf<

从库server_id=7

cat >/data/3307/my.cnf<

从库server_id=8

cat >/data/3308/my.cnf<

使用单元管理

cat > /etc/systemd/system/mysqld.service<

提示,向/etc/systemd/system/目录下添加新的单元文件后,需要重新加载,执行下面命令

systemctl daemon-reload

systemd管理多实例

cd /etc/systemd/systemcp mysqld.service mysqld3307.serivcecp mysqld.service mysqld3308.serivcecp mysqld.service mysqld3309.serivcesed -i 's#/etc/my.cnf#/data/3307/my.cnf#g' mysqld3307.servicesed -i 's#/etc/my.cnf#/data/3308/my.cnf#g' mysqld3308.servicesed -i 's#/etc/my.cnf#/data/3309/my.cnf#g' mysqld3309.service

授权

chown -R mysql.mysql /data/*

初始化多实例数据

初始化主库server_id=6

mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql/data

初始化从库server_id=7

mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/3307/data

初始化从库server_id=8

mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/3308/data

aedada93912a063d96372ccd44fa1758.png

启动数据库

启动主库server_id=6

systemctl restart mysqld

启动从库server_id=7

systemctl restart mysqld3307

启动从库server_id=8

systemctl restart mysqld3308

多实例验证

mysql -e "select @@server_id;grant all on *.* to root@'localhost' identified by 'root' with grant option;flush privileges;"mysql -S /data/3307/mysql.sock -e "select @@server_id;grant all on *.* to root@'localhost' identified by 'root' with grant option;flush privileges;"mysql -S /data/3308/mysql.sock -e "select @@server_id;grant all on *.* to root@'localhost' identified by 'root' with grant option;flush privileges;"

构建主从

主库server_id=6下创建用户

mysql -uroot -proot -e "grant replication slave on *.* to repl@'%' identified by 'repl'";

检查主库状态,根据主库状态来查找binlog日志和pos号

mysql -uroot -proot -e "show master binary";

从库server_id=7下开启slave,查看从库状态信息

mysql -uroot -proot -S /data/3307/mysql.sock -e "change master tomaster_host='192.168.255.113',master_user='repl',master_password='repl',master_auto_position=1;start slave;show slave status\G"

从库server_id=8下开slave,查看从库状态信息

mysql -uroot -proot -S /data/3308/mysql.sock -e "change master tomaster_host='192.168.255.113',master_user='repl',master_password='repl',master_auto_position=1;start slave;show slave status\G"

验证主从状态

检查主库sever-id=6

mysql -uroot -proot -e "show master status";

检查从库sever-id=7

mysql -uroot -proot -S /data/3307/mysql.sock -e "show slave status\G"

检查从库sever-id=8

mysql -uroot -proot -S /data/3308/mysql.sock -e "show slave status\G";

检验主从复制功能

主库插入数据sever-id=6

mysql -uroot -proot -e "create database tmp_gtid charset utf8mb4;use tmp_gtid;create table tmp(id int,name varchar(255));insert into tmp values(1,'zs'),(2,'ls'),(3,'w5')";

从库检查数据sever-id=7

mysql -uroot -proot -S /data/3307/mysql.sock -e "show databases"| grep "tmp_gtid" && mysql -uroot -proot -e "use tmp_gtid; select * from tmp;"

从库检查数据sever-id=8

mysql -uroot -proot -S /data/3308/mysql.sock -e "show databases"| grep "tmp_gtid" && mysql -uroot -proot -e "use tmp_gtid; select * from tmp;"

70a0b58fa2dc53adb47cba29aedd660d.png

GTID复制和普通复制和区别

非GTID

master_log_file='log-bin:000001',master_log_pos='523'

GTID

master_auto_postion=1;

1.在主从复制环境中,主库发生过的事务,在全局都是由唯一GTID记录的,更方便Failover

2.额外功能参数3个

3.change master to 的时候不再需要binlog文件名和position号

master_auto_position=1

4.在复制过程中,从库不再依赖master.info文件,而是直接读取最后一个relaylog的GTID号

5.mysqldump备份时,默认会将备份中包含的事务操作,使用以下方式,告诉从库,备份中已经存在以上事务,不需要运行了,直接从下一个GTID开始请求binlog就行

set @@global.gtid_pured='xxx:1'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值