php主从数据库同步

  • Post author:
  • Post category:php


环境要求

  • PHP7.1+,使用ThinkPHP6.0框架的话,运行环境要求PHP7.1+;
  • 至少两个服务,当然不是真的买两台服务器

mysql基本操作:

登录mysql:mysql -uroot -p

回车后输入密码



1.登录主库执行脚本:



install plugin rpl_semi_sync_master soname ‘semisync_master.so’;



2.

登录从库执行脚本:


INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so’;


3.修改

主库

的my.cnf配置文件(宝塔的在/etc/my.cnf)



rpl_semi_sync_master_enabled=1



rpl_semi_sync_master_timeout=1000   #此单位是毫秒



log-bin=mysql-bin #打开日志(主机需要打开)



server-id=1 #服务器id



log-bin-index=mysql-bin.index



sync_binlog=1



#给从机同步的库,可以多个



binlog-do-db=tp #从库的数据库名称



binlog-ignore-db=mysql



binlog-ignore-db=performance_schema



binlog-ignore-db=information_schema



expire_logs_days=1


4.修改

从库

的my.cnf配置文件(宝塔的在/etc/my.cnf)


rpl_semi_sync_slave_enabled=1



server-id=2 #服务器id



#要从主机同步的库



replicate-do-db=tp #主库的数据库名





修改好之后,重新启动主从数据库的服务





5.



主库授权同步从库的账户





GRANT REPLICATION SLAVE ON *.* TO ‘从服务器登录账号’@’从服务器ip’ IDENTIFIED BY ‘从服务器登录密码’; #主数据库授权同步账户




FLUSH PRIVILEGES; #刷新权限



SHOW MASTER STATUS; #查看主服务状态



6.配置从库连接主库服务器的参数



CHANGE MASTER TO MASTER_HOST=’主服务器ip’,MASTER_USER=’上面配置的从服务器登录账号’, MASTER_PASSWORD=’上面配置的从服务器登录密码’,MASTER_LOG_FILE=’mysql-bin.000008′,MASTER_LOG_POS=1528;



start slave; #开启SLAVE同步



show slave status \G; #查看下slave状态





注意:MASTER_LOG_FILE=’mysql-bin.000008’,MASTER_LOG_POS=1528是通过前面的主数据库SHOW MASTER STATUS;得到







当Slave_IO_Running和Slave_SQL_Running都为Yes,说明主从复制配置成功,如果有必要停止或者撤销同步账号的权限,还可操作。




stop slave; #停止SLAVE同步

GRANT REPLICATION SLAVE ON *.* TO ‘root’@’188.180.0.228’ IDENTIFIED BY ‘XXXXXX’;# 撤销已经赋予给MySQL同步账户的权限


主:


从:



版权声明:本文为Fyx1987496919原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。