当前位置: 首页 > 后端技术 > PHP

mysql主从复制

时间:2023-03-30 03:46:02 PHP

mysql主从复制笔记本测试使用docker模拟部署dockerpullmysql:5.7#startmasterdockerrun-itd--name=mysql-master-p3307:3306-eMYSQL_ROOT_PASSWORD=123456mysql:5.7#启动slavedockerrun-itd--name=mysql-slave-p3308:3306-eMYSQL_ROOT_PASSWORD=123456mysql:5.7两台mysql主机已经部署完成,查看详情master:dockerinspectmysql-master进入master主机修改配置dockerexec-itmysql-master/bin/bash#修改位于/etc/mysql/my.cnf的配置,增加一些内容。需要安装vi或vim[mysqld]server-id=1#UniqueIDlog-bin=mysql-bin#启用二进制日志功能创建从主机连接的用户mysql-uroot-p123456#创建用户CREATEUSER'slave'@'%'由'123456'识别;#授权GRANTREPLICATIONSLAVE,REPLICATIONCLIENTON*.*TO'slave'@'%';#退出并重启容器dockerrestartmysql-master进入slave主机修改配置#修改位于/etc/mysql/my.cnf配置,增加一些内容。需要安装vi或vim[mysqld]server-id=2#注意这里的id不能重复,必须是唯一的log-bin=mysql-slave-bin#开启二进制日志功能,可以作为其他slave主机的masterrelay_log=edu-mysql-relay-bin#退出并重启容器dockerrestartmysql-slave连接到master主机mysql-uroot-p123456#执行以下语句其中master_host可以查看master的IP地址host通过上面的docker命令mastertomaster_host='172.17.0.2',master_user='slave',master_password='123456',master_port=3306,master_log_file='mysql-bin.000001',master_log_pos=0;#Start启动slave;#然后输入命令查看详情showslavestatus\G;#如果这两项是Yes就说明一切正常Slave_IO_Running:YesSlave_SQL_Running:Yes向master写入数据,通过slave查询数据。真的同步了吗。这是一个php测试伪代码$master=newPDO('mysql:host=localhost:3307;dbname=test','root','123456');$master->exec("INSERTtest(name)VALUES('master')");$slave=newPDO('mysql:host=localhost:3308;dbname=test','root','123456');$data=$slave->exec("select*fromtest");var_dump($data);其他命令参考#Viewstatusshowslavestatus\G;showmasterstatus\G;#停止启动IO线程STOPSLAVEIO_THREAD;STARTSLAVEIO_THREAD;以上内容仅供学习参考,真实场景接下来请参考mysql官方文档!下一篇主从复制常见错误及解决方法!