docker下进行mysql主从配置实现thinkphp读写分离
写在前面
在上篇 docker环境下搭建PHP网站,实现nginx负载均衡和mysql主从配置中我们使用docker搭建了1台负载均衡器,2个web服务器和两个主、从数据库服务器 实现了nginx负载均衡访问网站web服务器
接下来我们看一下如何进行mysql数据库主从配置和读写分离,数据库服务器的搭建部分请看上篇
mysql主从配置
修改主数据库服务器配置文件
sudo vim /data/mysql/mysql_master/conf.d/docker.cnf
写入内容
[mysqld]
server-id = 1
log-bin=master-bin
log-bin-index=master-bin.index
修改从数据库服务器配置文件
sudo vim /data/mysql/mysql_salve/conf.d/docker.cnf
写入内容
[mysqld]
server-id = 2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
修改完成之后,进行容器重启docker restart mysql_master mysql_salve
进入mysql_master主数据库服务器容器内部docker exec -it mysql_master bash
切换到mysql命令行界面mysql -uroot -p123456
在master数据库(主库)中创建同步用户授予用户slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。
create user 'myslave'@'%' identified by '123456';
grant all privileges on *.* to 'myslave'@'%' with grant option;
exit;
mysql -u myslave -p123456 -h 192.168.0.111 -P8114 --get-server-public-key
然后输入命令show master status;
获取如下两个参数
获取到之后来到从数据库服务器操作
进入mysql_slave主数据库服务器容器内部docker exec -it mysql_slave bash
切换到mysql命令行界面mysql -uroot -p123456
change master to master_host='192.168.0.111',master_port=8114, master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=157;
start slave;
此处的参数来自主数据库服务器指出来的参数
完成之后输入show slave status\G
注意没有; 进行查看是否成功
此处为yes即代表成功配置
接下来我们进行测试,首先在主数据库服务器创建一个数据库create database test_1;
创建成功后来到从数据库服务器,查看是否进行了数据复制
可以看到,实现了从主库到从库的数据同步
读写分离
实现了主从配置后就可以进行读写分离操作了
以thinkphp5为例
修改.env
文件database.php
配置文件
花了半个小时基于 ChatGPT 搭建了一个微信机器人
Java极客技术赞 12阅读 3.7k评论 3
张晋涛:我的 2022 总结
张晋涛赞 6阅读 1.1k评论 2
利用Docker部署管理LDAP及其初次使用
李明赞 5阅读 1.3k
Docker学习:Image的本地存储结构
backbp赞 4阅读 10k评论 3
使用docker快速搭建xssPlatform测试平台实践
汤青松赞 1阅读 26.2k
将node.js 应用构建成docker镜像
weiweiyi赞 3阅读 741
突破难关:Docker镜像和容器的区别以及构建的最佳实践
张晋涛赞 4阅读 416
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。