主从复制(基于GTID日志方式)

本文详细介绍了MySQL数据库的一主一从配置过程,包括主节点和从节点的配置步骤,以及如何在主节点故障时进行从节点的切换操作。通过设置GTID和binlog实现高可用性,确保数据一致性。同时,文章提到了在实际生产环境中需要注意的细节,如防火墙和SELINUX的关闭,以及密码和IP的管理。
摘要由CSDN通过智能技术生成

前提

本次为一次简单的测试和验证,所以仅用一主一从的架构来演示。首先准备两台装有MySQL数据库的机器(一台作为master,另一台作为slave),而且要保证两台机器的环境必须一致,同时两台机器的时间也要保持一致。

两台机器均关闭防火墙及SELINUX

systemctl stop firewalld
systemctl disable firewalld
setenforce 0                  --临时关闭selinux
vim /etc/sysconfig/selinux    --修改配置文件永久关闭selinux

初始化从服务器数据,保持与主服务器数据的一致

从主库导出数据
mysqldump -p'QianFeng@123' --all-databases --single-transaction --master-data=2  --flush-logs  >all.sql
 
可以使用 scp 命令将数据从主库机器copy 到从库:
scp all.sql root@192.168.31.101:/home
 
从库导入数据
mysql -uroot -p  < all.sql

一、Master主节点

1、修改/etc/my.cnf配置文件

vim /etc/my.cnf              --在[mysqld]下添加如下内容
=========================================================================================
server-id=1                  --定义server id(在实际生产中可写为IP后四位数) 
log-bin = mylog              --开启binlog日志(不定义路径的话默认在/var/lib/mysql/下)
gtid_mode = ON               --开启gtid
enforce_gtid_consistency=1   --强制gtid
=========================================================================================
systemctl restart mysqld     --重启

2、主服务器创建账户

grant replication  slave,reload,super on *.*  to 'slave'@'%' identified by 'Qf@12345!';
mysql> flush privileges;      
=========================================================================================
注意:
在真实生产环境中需采用高级别的密码,同时将'%'换成slave对应的IP

参数:

  • replication slave权限:拥有此权限可以查看从服务器,从主服务器读取二进制日志。
  • super权限:允许用户使用修改全局变量的SET语句以及CHANGE(属于MASTER语句)
  • reload权限:必须拥有reload权限,才可以执行flush[tables | logs | privileges]

二、Slave从节点

1、修改/etc/my.cnf添加如下配置

server-id=2
gtid_mode = ON
enforce_gtid_consistency=1

为保证从服务器数据安全性建议配置
从服务器连接主服务器的信息和中继日志存放在master_info和relay_log中
master-info-repository=TABLE        
relay-log-info-repository=TABLE    
==============================================================
重启mysqld服务
systemctl restart mysqld

2、slave端登录数据库连接master

mysql> \e
change master to
master_host='master1',      主ip 地址  最好用域名
master_user='授权用户',      主服务上面创建的用户
master_password='授权密码', 
master_auto_position=1;
-> ;
Query OK, 0 rows affected, 2 warnings (0.02 sec)

```

3、启动slave从节点

mysql> start slave;                启动slave角色
mysql> show slave status\G         查看状态,验证sql和IO是不是yes

IO线程和SQL线程均为Yes表示主从同步完成。
在这里插入图片描述

三、扩展:

主机故障或者宕机

面试题:mysql主从,master宕机,如何进行切换?

1、在salve执行

mysql> stop slave;     停止同步
mysql> reset master;   清楚主节点信息

2、查看是否只读模式:show variables like ‘read_only’;
在这里插入图片描述
注:只读模式需要修改my.cnf文件,注释read-only=1并重启mysql服务

3、查看从节点状态

show slave status \G

4、在程序中将原来主库IP地址改为现在的从库IP地址,测试应用连接是否正常

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值