前言:
本文章是在同处局域网内的两台windows电脑,且MySQL是5.5以上版本下进行的一主多从同步配置,并且使用的是集成环境工具PHPStudy为例。最后就是ThinkPHP5的分布式的连接,读写分离配置,以后会用代码简单测试读写分离的效果。
数据库部分:
一. 主库(master)设置。
方法/步骤1:phpstudy至少开启MySQL服务,并找到配置文件mysql.ini并进入。
![904027acbffd1a05d46747c356300728.png](https://i-blog.csdnimg.cn/blog_migrate/e169a2ef32a6b5508a6d3b05a456691a.jpeg)
方法/步骤2:进入mysql-ini文件找到“[mysqld]”节点,添加以下配置,完成后重启服务。
server-id=1log-bin=mysql-binbinlog-do-db=repair_computerbinlog-do-db=jindebinlog-do-db=testbinlog-ignore-db=weiqing
![644913e06b3f5110ebe61c7a26a413f5.png](https://i-blog.csdnimg.cn/blog_migrate/8fbf55df2b6c32d11a846f53d39ad43e.jpeg)
方法/步骤3:验证配置是否成功,可以使用navicat for mysql工具新建查询或者直接使用命令。
(1). 查看server-id,命令“ SHOW VARIABLES LIKE 'server_id'; ”
![d59919ffa1d8544b38fdefb0f6efd801.png](https://i-blog.csdnimg.cn/blog_migrate/a40fc3f30d18aa11abbaada33e55a43f.jpeg)
![acefbc8fac65224d5769f61eedfd81a9.png](https://i-blog.csdnimg.cn/blog_migrate/7ccb6140a9dde8a06e2cea6eb2af3c78.jpeg)
(2). 查看主库的状态( 需要同步的数据库及不用同步的数库 下图中 file 和position 在从库配置中会用到 (每次修改主服my.ini 文件 file和position 参数都会变 )
![bbc8e58226b82b689ada1cdb5e0e3a08.png](https://i-blog.csdnimg.cn/blog_migrate/af09edb3db0bb9b1815d404e9cf7950c.jpeg)
![ef6edb90295823f6325d085bce495d22.png](https://i-blog.csdnimg.cn/blog_migrate/a8afe725bc8f193b6a00e155fe4efa41.jpeg)
方法/步骤4:查看主库电脑的局域网IP地址并且也添加一个给从库连接的用户账号并分配权限(本地是测试的可以直接将root账户主机开放)
![f4278b1bb8558c22ad2554d4d59930e9.png](https://i-blog.csdnimg.cn/blog_migrate/0bd4f67428c947145521728cd4112e13.jpeg)
方法/步骤5:到这里主库master的配置就没有了。
二. 从库(slave)设置。
方法/步骤1:开启MySQL服务并找到mysql.ini文件的[mysqld]节点下,添加以下配置
server-id=2log-bin=mysql-binslave-net-timeout=60replicate-do-db=repair_computerreplicate-do-db=jindereplicate-do-db=testreplicate-ignore-db=weiqing
![68a08d13cf32459e3efa771675875164.png](https://i-blog.csdnimg.cn/blog_migrate/268a06f9ab6a3355afdddf780af919a8.jpeg)
方法/步骤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; 开启从库
![84eb4b080fabce2057f5c7ac9216fb26.png](https://i-blog.csdnimg.cn/blog_migrate/eb684ff7318aea91acadf14e432bc08b.jpeg)
方法/步骤4:检测主从是否打通,输入命令“ show slave status G; ”,查看“ Slave_IO_Running ”和“ Slave_SQL_Running ”是否都为yes。
![eca8fb805bb302c789adf18931e34a1f.png](https://i-blog.csdnimg.cn/blog_migrate/c9d9c3a8305c8e34f67249ce34df43a4.jpeg)
方法/步骤5: 可以去主库的同步的表中随便添加数据,然后再查看从表是否同步即可
TP5部分:
主库(master)IP:192.168.1.112从库(slave) IP: 192.168.1.102
1. 找到ThinkPHP5的databases.php文件,deploy设置为1(分布式),具体可以参考TP5的在线文档。
![506f4324bbcc9b453a6a3902b897b093.png](https://i-blog.csdnimg.cn/blog_migrate/3e2768de82f1ef4f3bbe511c97cce1c8.jpeg)
2. 读写分离只需将rw_separate设置为true,并且前面的IP地址默认是主库。测试读操作是否会落到从表只需将从表的某个数据进行修改然后在代码中使用查询。
![67b509c75627d2581f03d49d93c071a1.png](https://i-blog.csdnimg.cn/blog_migrate/08dee291cc16a06e56d614b1c32c4d7a.jpeg)
![4b4688ab41cba1eecad687ec590505f2.png](https://i-blog.csdnimg.cn/blog_migrate/d1e0d8831cd639e614bbef2cc849425c.jpeg)
![c827783d5e4a532dbbb9d5af517292e8.png](https://i-blog.csdnimg.cn/blog_migrate/ca9a9934955b550aeed820cf12b30746.jpeg)
![2ddb164e2fd0bf1d7db04224110161ac.png](https://i-blog.csdnimg.cn/blog_migrate/ef71b91c5510ad205ae7bde766d6695b.jpeg)
3. 写操作可以在代码中执行插入数据,然后分别查看主库和从库是否同步就可以了。