要实现ThinkPHP5分布式、MySQL主从同步配置与读写分离,需要先了解一下MySQL的主从同步机制。
MySQL主从同步的机制以及同步流程大致如下:
1、主服务器(master)将变更事件(更新、删除、表结构改变等等)写入二进制日志(master log)。
2、从服务器(slave)的IO线程从主服务器(binlog dump线程)获取二进制日志,并在本地保存一份自己的二进制日志(relay log)
3、从服务器的SQL线程读取本地日志(relay log),并重演变更事件。
本例中软件环境:ThinkPHP5.1.15+MariaDB 10.1.30(主服务器)+MySQL5.7(从服务器)+Win10,两台服务器IP分别为:192.168.199.234、192.168.199.237,已经为两个数据库创建了相同账号密码的账户。
首先我在TP项目的数据库配置文件中,设置了主从配置以及读写分离,配置代码如下:
第二步,修改主服务器的MySQL配置文件my.ini,主要代码如下:
第69行代码是启用二进制日志
第三步,通过show master status;查询主库状态,记录一下二进制日志文件和位置,在从服务器配置的时候要用。
第四步,修改从服务器数据库配置的server-id
默认情况下,server-id都是1,如果要设置主从必须要保存两台的server-id不同,因此只需改从服务器就可以,保存重启MySQL服务:
第五步,在从服务器上设置同步命令
其中,MASTER_LOG_FILE和MASTER_LOG_POS是第二步查询的结果。
第六步,启动slave进行
在从服务器上执行start slave;命令
然后执行show slave status命令,查看slave同步状态。如果Query OK,表示配置正确。
第七步,验证主从配置
在主库上执行一个update或者insert操作,验证一下数据。
我在后台系统设置中更新一下网站信息
根据日志可以看得出,已经实现了主从服务器以及读写分离
领取专属 10元无门槛券
私享最新 技术干货