您的当前位置:首页 > 资讯 > thinkphp框架
ThinkPHP5.1+MySQL主从同步配置与读写分离解决方案
2019-07-01 16:45:15 来源:admin 点击:1577
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,主要代码如下:
从数据库
server-id=2 #服务器id #要从主机同步的库
replicate-do-db=db1
replicate-do-db=db2
replicate-do-db=test
配置完重启mysql,记住!!!
3,通过show master status;查询主库状态,记录一下二进制日志文件和位置,在从服务器配置的时候要用。
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表示成功
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” 即可: