前言

本文章是在同处局域网内的两台windows电脑,MySQL为5.5以上版本进行的一主多从同步配置下。ThinkPHP5分布式连接,读写MySQL分离配置的小例子。


数据库部分

一. 主库(master)设置。
方法/步骤1:

phpstudy至少开启MySQL服务,并找到配置文件mysql.ini并进入。

ThinkPHP5连接的数据库,主从分离指北_PHP

方法/步骤2:

进入mysql-ini文件找到“[mysqld]”节点,添加以下配置,完成后重启服务。

server-id=1
log-bin=mysql-bin
binlog-do-db=repair_computer
binlog-do-db=jinde
binlog-do-db=test
binlog-ignore-db=weiqing

ThinkPHP5连接的数据库,主从分离指北_MySQL_02

方法/步骤3:

验证配置是否成功,可以使用navicat for mysql工具新建查询或者直接使用命令。

(1). 查看server-id,命令“ SHOW VARIABLES LIKE 'server_id'; ”

ThinkPHP5连接的数据库,主从分离指北_MySQL_03

ThinkPHP5连接的数据库,主从分离指北_ThinkPHP5_04

(2). 查看主库的状态( 需要同步的数据库及不用同步的数库 下图中 file 和position 在从库配置中会用到 (每次修改主服my.ini 文件 file和position 参数都会变 )

ThinkPHP5连接的数据库,主从分离指北_数据库主从分离_05

ThinkPHP5连接的数据库,主从分离指北_MySQL_06

方法/步骤4:

查看主库电脑的局域网IP地址并且也添加一个给从库连接的用户账号并分配权限(本地是测试的可以直接将root账户主机开放)

ThinkPHP5连接的数据库,主从分离指北_PHP_07

方法/步骤5:

到这里主库master的配置就没有了。

二. 从库(slave)设置。
方法/步骤1:

开启MySQL服务并找到mysql.ini文件的[mysqld]节点下,添加以下配置

server-id=2
log-bin=mysql-bin
slave-net-timeout=60
replicate-do-db=repair_computer
replicate-do-db=jinde
replicate-do-db=test
replicate-ignore-db=weiqing

ThinkPHP5连接的数据库,主从分离指北_数据库主从分离_08

方法/步骤2:

重启服务,然后将主库的几个需要同步的数据导入到从库(表名需一致).

方法/步骤3:

打开mysql命令面板,输入以下命令。

(1).  stop slave;    停止从库

(2). change master to master_host=’2192.168.1.112’, master_user=’repl’, master_password=’repl’, master_log_file=’mysql-bin.000003’, master_log_pos=1937;

关于File 和 Position('mysql-bin.000003' 1937) 是主库配置中的第3步得到的 主库中输入命令 show master status,前面几个就是主库的IP地址和用户账号密码了。

(3). start slave;    开启从库

ThinkPHP5连接的数据库,主从分离指北_PHP_09

方法/步骤4:

检测主从是否打通,输入命令“ show slave status \G; ”,查看“ Slave_IO_Running ”和“ Slave_SQL_Running ”是否都为yes。

ThinkPHP5连接的数据库,主从分离指北_PHP_10

方法/步骤5:

可以去主库的同步的表中随便添加数据,然后再查看从表是否同步即可

 

TP5部分:

主库(master)IP:192.168.1.112
从库(slave) IP: 192.168.1.102
  1. 找到ThinkPHP5的databases.php文件,deploy设置为1(分布式),具体可以参考TP5的在线文档。

ThinkPHP5连接的数据库,主从分离指北_MySQL_11

  1. 读写分离只需将rw_separate设置为true,并且前面的IP地址默认是主库。测试读操作是否会落到从表只需将从表的某个数据进行修改然后在代码中使用查询。

ThinkPHP5连接的数据库,主从分离指北_数据库主从分离_12

ThinkPHP5连接的数据库,主从分离指北_PHP_13

ThinkPHP5连接的数据库,主从分离指北_数据库主从分离_14

ThinkPHP5连接的数据库,主从分离指北_数据库主从分离_15

  1. 写操作可以在代码中执行插入数据,然后分别查看主库和从库是否同步就可以了。

ThinkPHP5连接的数据库,主从分离指北_PHP_16