mysql数据库主从读写分离配置详解与示例
部署环境 CentOS 7
mysql 5.6 mycat 1.4
主db 172.16.8.211
从db 172.16.8.212
mycat 172.16.8.215
一、MySQL主服配置这里就不写了
检查下主从状态
mysql>show slavestatus\G
以下两个参数必须为yes:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
新建一个测试库 ceshi
二、安装JAVA环境
下载解压 jdk1.7.0_45.tar
配置java环境在profile 后面加
vi /etc/profile
## java env
exportJAVA_HOME=/opt/jdk1.7.0_45
exportJRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
exportPATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
source /etc/profile
三、数据库中间件Mycat配置
下载Mycat-server-1.4-release-2015101923003118-Linux.tar
解压到/usr/local/
Mycat 1.4支持MySQL主从复制状态绑定的读写分离机制,让读更加安全可靠,
3.1 配置/usr/local/mycat/conf/server.xml
修改一个mycat用户
3.2 配置schema.xm l
(备注解释)
(1) 设置 balance="1"与writeType="0"
Balance参数设置:
1. balance=“0”, 所有读操作都发送到当前可用的writeHost上。
2. balance=“1”,所有读操作都随机的发送到readHost。
3. balance=“2”,所有读操作都随机的在writeHost、readhost上分发
WriteType参数设置:
1. writeType=“0”, 所有写操作都发送到可用的writeHost上。
2. writeType=“1”,所有写操作都随机的发送到readHost。
3. writeType=“2”,所有写操作都随机的在writeHost、readhost分上发。
“readHost是从属于writeHost的,即意味着它从那个writeHost获取同步据,
因此,当它所属的writeHost宕机了,则它也不会再参与到读写分离中来,即
“不工作了”,这是因为此时,它的数据已经“不可靠”了。基于这个考虑,
目前mycat 1.3和1.4版本中,若想支持MySQL一主一从的标准配置,并且
在主节点宕机的情况下,从节点还能读取数据,则需要在Mycat里配置为两个
writeHost并设置banlance=1。”
(2) 设置switchType="2" 与slaveThreshold="100"
“Mycat心跳检查语句配置为 show slave status ,dataHost 上定义两个新
属性:switchType="2" 与slaveThreshold="100",此时意味着开启
MySQL主从复制状态绑定的读写分离与切换机制。Mycat心跳机制通过检
测 show slave status 中的 "Seconds_Behind_Master",
"Slave_IO_Running","Slave_SQL_Running" 三个字段来确定当前主从同
步的状态以及Seconds_Behind_Master主从复制时延。“
3.3 配置log4j.xml
3.4 配置编码 index_to_charset.properties 添加常用的utf-8字符集
3.5 启动 测试
调试就用控制
然后进行操作进入控制台会发现没有mysql 客户端,所以先安装下mysql 在进行进入
mysql -utest –p123456 –h127.0.0.1 –P8066 ##控制台
mysql -utest –p123456 –h127.0.0.1 –P9066 ##监控控制台
测试新建表-----》插入数据------》查看数据
create tablecompany(id int not null primary key,name varchar(100));
insert intocompany(id,name) values(1,'alibaba');
select *from company;
查看日志会发现写走的是211
读走的是212这样读写分离就出来了,如果有多台主或者从就可以负载了
版主博客 http://312461613.blog.51cto.com/