MYSQL+Thinkphp5读写分离,主从同步实现方法

本文详细介绍MySQL主从复制配置步骤,包括配置主服务器记录Binarylog、从服务器同步及关联多个数据库。通过创建用户并授予复制权限,确保数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

废话就不多说了!直接上手

##-----------------------------------------------------------------------------------------------------------

首先修改mysql配置文件让主服务器master记录数据库操作日志到Binary log,从服务器开启i/o线程将二进制日志记录的操作同步到relay log(存在从服务器的缓存中),另外sql线程将relay log日志记录的操作在从服务器执行。

1.打开主数据库配置文件

vim /etc/my.cnf

2.在主服务器master上配置开启Binary log,在[mysqld]下面添加:

server-id=1
log-bin=master-bin
log-bin-index=master-bin.index

如图:
在这里插入图片描述

3.保存后,重启mysql服务

service mysql restart

4.检查配置效果,执行

mysql> SHOW MASTER STATUS;

如图:
在这里插入图片描述
记住图里圈起的数据,配置从服务器有用

5.配置从服务器的mysql配置文件my.cnf

在[mysqld]节点下面添加:

server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin

这里的server-id需要是唯一值

如图:

配置完成后需要重启mysql服务

service mysql restart

6.实现N个数据库的关联

(一)在主服务器执行

mysql> create user REPL;
mysql> GRANT REPLICATION SLAVE ON *.* TO 'REPL'@'从服务器ip' IDENTIFIED BY 'password';
mysql> flush privileges;

这三行代码的意思分别是:
1、创建一个用户REPL
2、赋予其REPLICATION SLAVE权限(复制), . 表明这个权限是针对主库的所有表的,从服务器ip是从服务器的ip地址(也可以为%,表示所有客户端都可能连),password是REPL用户密码。
3、刷新MySQL的权限到内存;因为MySQL启动后,所有用户权限都是加载到内存中的;更新权限的操作不会立马刷新到内存中,下一次启动时才重新生效;flush privileges让MySQL重新加载权限,这样能立马生效。

(二)在从服务器执行

change master to master_host='主服务器ip',master_port=3306,master_user='REPL',master_password='password',master_log_file='master-bin.000009',master_log_pos=467;

master_log_file和master_log_pos与前面圈起来的相对应
在这里插入图片描述

完成后进行启动服务

start slave;

然后执行(注意这段命令尾部不要加;号,不然报错)

show slave status \G

如图:
在这里插入图片描述
如图,这里已经成功实现了,我们可以进行测试一下

在主服务器执行

create database test_2;

如图:
在这里插入图片描述
接着到从服务器进行查看是否同步过来了,执行

show databases;

如图:
在这里插入图片描述
从图里可看出,同步过来了,其他增删查改操作也一样会同步的哦

7.运用到THINKPHP5项目里

修改一下项目的数据库配置文件就可以了

在这里插入图片描述

接着咱们来测试一下是否进行了读写分离
1、首先测试读操作
在这里插入图片描述
2、进行请求
在这里插入图片描述

3、接着测试写操作
在这里插入图片描述
4、进行请求
在这里插入图片描述
5、最后来看看效果
从截图里可以看出第一张图连接了从服务器进行读取数据,第二张图连接了主服务器进行写入数据
在这里插入图片描述
在这里插入图片描述
教程到此结束

附常见错误

在这里插入图片描述
去主服务器执行,进行查看MASTER_LOG_FILE和MASTER_LOG_POS

SHOW MASTER STATUS;

在这里插入图片描述
然后到从服务器执行,

stop slave;
CHANGE MASTER TO MASTER_LOG_FILE='master-bin.000009',MASTER_LOG_POS=2246;
start slave;
show slave status \G

得到结果一切恢复正常
如图:
在这里插入图片描述
更多教程,可前往我的个人博客:www.ycl123.top

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值