-->

PHP资讯

您的当前位置:首页 > 资讯 > thinkphp框架

ThinkPHP5.1+MySQL主从同步配置与读写分离解决方案

2019-07-01 16:45:15  来源:admin 点击:1281

1.首先thinkphp配置,在config下的database

return [

    //数据库连接配置

    'DB_DEPLOY_TYPE'        =>  1, //是否启用分布式

    'DB_RW_SEPARATE'        =>  true, //是否启用智能读写分离

    'DB_TYPE'               =>  'mysql',     // 数据库类型

    'DB_HOST'               =>  '192.168.20.128,192.168.20.129', // 服务器地址

    'DB_NAME'               =>  'master,slave',         // 数据库名

    'DB_USER'               =>  'master,slave',     // 用户名

    'DB_PWD'                =>  'master,slave',   // 密码

    'DB_PORT'               =>  '3306',        // 端口

    'DB_PREFIX'             =>  'abc_',//表名前缀

    'DB_PARAMS'             =>  array(), // 数据库连接参数

    'DB_DEBUG'  =>  TRUE, // 数据库调试模式 开启后可以记录SQL日志

    'DB_FIELDS_CACHE'       =>  true,// 启用字段缓存

    'DB_CHARSET'            =>  'utf8',// 数据库编码默认采用utf8

];

主数据库

2.修改主服务器的MySQL配置文件my.ini,主要代码如下:

image.png

从数据库

 server-id=2 #服务器id #要从主机同步的库

 replicate-do-db=db1

 replicate-do-db=db2

 replicate-do-db=test

配置完重启mysql,记住!!!

3,通过show master status;查询主库状态,记录一下二进制日志文件和位置,在从服务器配置的时候要用。

image.png

3在主数据库中配置给从数据库的权限

GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.20.129' IDENTIFIED BY '密码'; #主数据库授权同步账户

FLUSH PRIVILEGES; #刷新权限

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


4.在从服务器上设置同步命令


CHANGE MASTER TO MASTER_HOST='192.168.20.128',MASTER_USER='root', MASTER_PASSWORD='XXXXXX',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=107;

start slave; #开启SLAVE同步

show slave status \G; #查看下slave状态,如果yes表示成功

image.png

5.其他注意事项

GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.20.129' IDENTIFIED BY 'XXXXXX'; #主数据库授权同步账户

FLUSH PRIVILEGES; #刷新权限

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

配置从服务器的从数据库

{配置和改变slave服务器用于连接master服务器的参数【注意,MASTER_LOG_FILE=‘mysql-bin.000001’,MASTER_LOG_POS=601是通过前面的主数据库SHOW MASTER STATUS;得到】}

当Slave_IO_Running和Slave_SQL_Running都为Yes,说明主从复制配置成功,如果有必要停止或者撤销

同步账号的权限,还可操作。

stop slave; #停止SLAVE同步

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

REVOKE REPLICATION SLAVE ON *.* FROM 'root'@'192.168.20.129';#revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:

相关文章更多 >

© 2024版权所有 水水网

电话:171780793