MYSQL的主从复制及读写分离如此简单

文章详细介绍了MySQL主从复制的原理,包括三个关键线程的作用,以及主从复制的步骤,如配置server-id,开启binlog,设置同步账号,数据备份与恢复等。此外,还阐述了如何完成MySQL的读写分离配置,利用Mycat进行数据过滤和管理用户权限设置。
摘要由CSDN通过智能技术生成

如有错误,敬请谅解!

此文章仅为本人学习笔记,仅供参考,如有冒犯,请联系作者删除!!

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

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

ed1b32f333be48f29ba498712a77545e.jpg

        要实施复制,首先必须打开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

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;

 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

2、还原数据

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

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;

在这里插入图片描述

 5、测试同步

在这里插入图片描述

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

 更改my.cnf

过滤复制

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

 检验

show @@heartbeat

 

如有错误,请联系作者删除

并恳请同行朋友予以斧正,万分感谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春光犹上人间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值