目 录CONTENT

文章目录

MySQL主从同步-Gtid

Administrator
2024-10-10 / 0 评论 / 0 点赞 / 2 阅读 / 50647 字

MySQL主从同步-Gtid

服务器准备

IP

节点

配置

系统版本

191.168.117.143

master

2c2g40g

centos 7.9

192.168.117.142

slave

2c2g40g

centos 7.9

环境准备

下面操作需要在两台机器都操作

关闭防火墙

systemctl stop firewalld && systemctl disable firewalld
setenforce 0 && sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

安装常用软件

yum install -y wget  vim  net-tools  bash-completion 

更新软件

yum update

下载mysql安装源

https://dev.mysql.com/downloads/repo/yum/

image-20230919092155207

根据系统版本点击Download

点击下载rpm包 或者右键复制链接

image-20230919092456556

wget https://dev.mysql.com/get/mysql80-community-release-el7-10.noarch.rpm
rpm -ivh mysql80-community-release-el7-10.noarch.rpm

image-20230919093121744

配置安装源

cd /etc/yum.repos.d/
vim mysql-community.repo

image-20230919093455820

根据需求版本号配置

image-20230919093759357

我这里直接装8.0 所以不需要修改

安装mysql

yum -y install mysql-community-server

image-20230919094404877

Master节点操作

修改my.cnf配置

vim /etc/my.cnf
[mysqld]
log_bin=mysql-bin
server_id=1
binlog_format=ROW
gtid_mode=on
enforce_gtid_consistency=on
参数解释
log_bin=mysql-bin      这个参数启用二进制日志

server_id=1每个 MySQL   这个参数指定了当前 MySQL 服务器的标识符。在 MySQL 复制和集群环境中,每个服务器都应该有一个唯一的标识符,以便进行数据同步和标识不同的服务器。

binlog_format=ROW      这个参数定义了二进制日志的格式, "ROW"。这意味着二进制日志将记录每个更改的行级别细节,包括被修改的数据行的实际内容。这种格式通常用于复制和高级数据恢复操作。

gtid_mode=on           这个参数启用了 GTID 模式

enforce_gtid_consistency=on  这个参数用于强制 GTID 一致性。当启用时,MySQL 将确保在主服务器上提交的事务在从服务器上得到执行,以确保数据同步的一致性。

image-20230919131905461

启动数据库并配置开机自启

systemctl start mysqld && systemctl enable mysqld

获取MySQL初始化密码

grep password  /var/log/mysqld.log

image-20230919094601606

登录数据库

mysql -p'密码'   ##注意带特殊字符的必须要加单引号

image-20230919094745766

修改用户权限及slave复制用户

alter user 'root'@'localhost' identified  with mysql_native_password by 'Jianren@123';
grant all privileges on *.* to 'root'@'localhost';
create user 'slave'@'%' identified with mysql_native_password by 'Jianren@123';
grant replication  slave  on *.* to 'slave'@'%';
flush privileges;
参数解释 
with mysql_native_password  修改用户的身份验证插件,防止slave节点登录同步用户无法连接

image-20230919132513220

Slave从节点操作

配置本地域名解析

vim /etc/hosts
192.168.117.143 mysql-master

image-20230919101555481

ping一下测试是否联通

ping mysql-master

image-20230919101713673

修改my.cnf配置

 vim /etc/my.cnf
server-id=2
gtid_mode=on
enforce_gtid_consistency=on

image-20230919132748487

启动mysql并配置开机自启

systemctl start mysqld && systemctl enable mysqld

修改mysql初始化密码及权限

grep password  /var/log/mysqld.log

image-20230919101925512

登录数据库

mysql -p'密码'   ##注意带特殊字符的必须要加单引号

配置密码及权限

alter user 'root'@'localhost' identified by 'Jianren@123';
grant all  privileges  on *.* to 'root'@'localhost' ;
flush privileges;
exit ;

image-20230919133023766

测试是否可以登录master节点的用户

mysql -uslave -pJianren@123 -h mysql-master
show databases ;
exit;

image-20230919102551422

配置主从复制

登录root用户

mysql -p'Jianren@123'

编辑

edit
CHANGE MASTER TO
MASTER_HOST='mysql-master',
MASTER_USER='slave',
MASTER_PASSWORD='Jianren@123',
MASTER_AUTO_POSITION=1;
参数解释
CHANGE MASTER TO
MASTER_HOST='mysql-master',       主节点IP或域名
MASTER_USER='slave',            主节点创建的同步用户
MASTER_PASSWORD='Jianren@123',   同步用户密码
MASTER_AUTO_POSITION=1;           自动定位到主服务器的当前二进制日志位置。

保存

;

image-20230919133250352

image-20230919133223052

启动主从复制

start slave ;

查看状态

 show slave stauts \G 

两个线程均为 yes 代表成功

image-20230919133650235

测试状态

master节点 mysq中输入

create database test1;
use test1;
create table usertb ( username varchar(10)not null, password varchar(20)not null );
insert into usertb values ('user1','123');
select * from usertb;

image-20230919134005938

slave节点 mysq中输入

show databases ;
use test1;
select * from usertb;

可以看到已经同步过来了

image-20230919134123716

到这里gtid的方式也部署完毕

删除测试库 master节点操作

drop database test1;

0

评论区