ThinkPHP主从读写分离+MySQL底层配置半自动复制同步
来源:互联网 发布:java mail html模板 编辑:程序博客网 时间:2024/05/24 03:09
多站点为了保证服务器的效率,数据库读写分离是有必要的。百度了很多,全都是说不到重点COPY来COPY去的。
不啰嗦,上代码。MySQL 5.7+版本:
TP 配置主从数据库
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];
这样,TP框架的工作就完成了,这里经常有人就会问,“为什么我现在主从数据库里面的数据不同步啊?”这里是对配置的一个误解,主从服务器之间的数据同步是由MySQL自己通过自己的机制完成的。显然我们的工作还没完成,继续。
配置如下
1、 主从的各个节点都要安装半自动复制插件,方法是登陆MySQL执行一下脚本:
主库:
install plugin rpl_semi_sync_master soname 'semisync_master.so';
从库:
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
2、在主从数据库的/etc/my.cnf文件中加入如下配置:
主数据库
[mysqld]rpl_semi_sync_master_enabled=1rpl_semi_sync_master_timeout=1000 #此单位是毫秒log-bin=mysql-bin #打开日志(主机需要打开)server-id=1 #服务器id#给从机同步的库,可以多个binlog-do-db=db1binlog-do-db=db2binlog-do-db=testexpire_logs_days=1 #自动清理1天前的log文件
从数据库
[mysqld]rpl_semi_sync_slave_enabled=1server-id=2 #服务器id#要从主机同步的库replicate-do-db=db1replicate-do-db=db2replicate-do-db=test
3、修改之后,重启MySQL主数据库和MySQL从数据库的服务
service mysqld restart
4、配置主服务器的主数据库
GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.20.129' IDENTIFIED BY 'XXXXXX'; #主数据库授权同步账户FLUSH PRIVILEGES; #刷新权限SHOW MASTER STATUS; #查看主服务状态
5、配置从服务器的从数据库
{配置和改变slave服务器用于连接master服务器的参数【注意,MASTER_LOG_FILE=’mysql-bin.000001’,MASTER_LOG_POS=601是通过前面的主数据库SHOW MASTER STATUS;得到】}
CHANGE MASTER TO MASTER_HOST='192.168.20.128',MASTER_USER='root', MASTER_PASSWORD='XXXXXX',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=601;start slave; #开启SLAVE同步show slave status \G; #查看下slave状态
当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” 即可:
阅读全文
1 0
- ThinkPHP主从读写分离+MySQL底层配置半自动复制同步
- mysql 主从复制 读写分离配置
- MySQL主从同步、读写分离配置
- MySQL主从同步、读写分离配置步骤
- Mysql主从同步和读写分离配置
- MySQL主从复制 读写分离
- Mysql 主从复制,读写分离
- Mysql 主从复制,读写分离
- Mysql主从复制,读写分离
- MySQL主从复制读写分离
- mysql 主从同步&读写分离
- linux下mysql安装 主从复制和读写分离配置
- mysql主从复制与读写分离配置详解
- MySQL主从同步、读写分离配置步骤、问题解决笔记
- MySQL主从同步读写分离的集群配置
- Mysql 分布式集群 主从同步 读写分离 amoeba 中间件配置
- mysql 主从配置+读写分离
- MySQL主从配置,读写分离
- 让后端tomcat日志获取真实的IP,而不是nginx 服务器的IP
- PHP学习笔记5(结构语句)
- Gateway的架构,设计原则和部署
- 微信小程序 (3 tabBar及 页面跳转)
- 安装ssh服务
- ThinkPHP主从读写分离+MySQL底层配置半自动复制同步
- html5纯css字体大小自适应设置
- Day013
- layout中取消标题栏
- 码农的区块链:搭建一个私有区块链环境(转载)
- impala操作hive数据实例
- 把String型数据转换成double型
- 【Spring+SpringMVC+MyBatis深入学习及搭建】02.MyBatis原始Dao开发和mapper代理开发
- camera1 实时预览取帧