如有错误,敬请谅解!

1、理解MySQL主从复制原理。

        MySQL主从复制涉及到三个线程,一个运行在主节点,其余两个运行在从节点,如下图所示:

搭建mysql主从复制三种模式 mysql主从复制流程_搭建mysql主从复制三种模式

        要实施复制,首先必须打开Master 端的binary log(bin-log)功能,否则无法实现。因为整个复制过程实际上就是Slave 从Master 端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。

       复制的基本过程

       在从节点上执行sart slave命令开启主从复制开关,开始进行主从复制。从节点上的I/O 进程连接主节点,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;

        主节点接收到来自从节点的I/O请求后,通过负责复制的I/O进程根据请求信息读取指定日志指定位置之后的日志信息,返回给从节点。返回信息中除了日志所包含的信息之外,还包括本次返回的信息的bin-log file 的以及bin-log position;

        从节点的I/O进程接收到主节点发送过来的日志内容、日志文件及位置点后,将接收到的日志内容更新到本机的relay-log(中继日志)的文件(Mysql-relay-bin.xxx)的最末端,并将读取到的binary log(bin-log)文件名和位置保存到master-info 文件中,以便在下一次读取的时候能够清楚的告诉Master需要从某个bin-log 的哪个位置开始往后的日志内容.

        Slave 的 SQL线程检测到relay-log 中新增加了内容后,会将relay-log的内容解析成在主节点上实际执行过SQL语句,然后在本数据库中按照解析出来的顺序执行,并在relay-log.info中记录当前应用中继日志的文件名和位置点。

2、完成MySQL主从复制。

主库配置

1、设置server-id值并开启binlog参数

vim /etc/my.cnf

搭建mysql主从复制三种模式 mysql主从复制流程_搭建mysql主从复制三种模式_02

2、重启数据库

systemctl restart mysqld

3、创建同步账号

grant replication slave on *.* to 'rep'@'192.168.253.%' identified by '123456';

4、锁表为只读

flush tables with read lock

4、查看主库状态

show master status;

搭建mysql主从复制三种模式 mysql主从复制流程_数据库_03

 5、备份数据库

mysqldump -uroot -p123456 -A -B |gzip > /server/backup/mysql_bak.$(date +%F).sql.gz

6、解锁 

unlock tables;

7、主库备份数据上传到从库

scp /server/backup/mysql_bak.2023-03-28.sql.gz 192.168.253.138:/server/backup/

从库设置

1、配置serverid并关闭binlog参数

datadir=/var/lib/
mysqlsocket=/var/lib/mysql/mysql.sock
server id =2

搭建mysql主从复制三种模式 mysql主从复制流程_运维_04

2、还原数据

zcat /tmp/zy8.sql.gz | mysql -uroot -p123456
mysql -uroot -p123456 -e 'show databases;'

搭建mysql主从复制三种模式 mysql主从复制流程_搭建mysql主从复制三种模式_05

3、设定从主库同步

mysql> change master to
    -> master_host='192.168.253.138',
    -> master_user='rep',
    -> master_password='123456',
    -> master_log_file='mysql-bin.000001',
    -> master_log_pos=615;

4、启动从库同步开关

start slave;

搭建mysql主从复制三种模式 mysql主从复制流程_主从复制_06

 5、测试同步

搭建mysql主从复制三种模式 mysql主从复制流程_数据库_07

搭建mysql主从复制三种模式 mysql主从复制流程_数据库_08

3、完成MySQL读写分离配置

1、安装java环境

yum install jdk-8u144-linux-x64.rpm

2、安装mycat-server

tar xf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /usr/local
echo "export PATH=$PATH:/usr/local/mycat/bin" > /etc/profile.d/mycat.sh
source /etc/profile.d/mycat.sh

3、备份schema.xml

cd /usr/local/mycat/conf
cp schema.xml{,.bak}

4、配置schema.xml

vim schema.xml

搭建mysql主从复制三种模式 mysql主从复制流程_mysql_09

 更改my.cnf

过滤复制

搭建mysql主从复制三种模式 mysql主从复制流程_数据库_10

5、配置管理用户

主库
grant insert,delete,update,select on school.* to mycat@'192.168.253.%' identified by '123456';
从库
grant select on school.* to mycat_r@'192.168.253.%' identified by '123456';

6、启动mycat

mycat start
从库服务器:
mysql -uuser -puser -P8066 -DTESTDB -h192.168.253.138

搭建mysql主从复制三种模式 mysql主从复制流程_主从复制_11

 检验

show @@heartbeat

搭建mysql主从复制三种模式 mysql主从复制流程_搭建mysql主从复制三种模式_12