Always been imitated
Never surpassed

mysql主从 mycat读写分离配置

服务器端配置mysql主从,实现读写分离,减轻数据库压力 。原理:主服务器(Master)负责网站NonQuery操作,从服务器负责Query操作

2222_副本.jpg
centos 6.2  master: 192.168.238.134    windows 2008 slave: 192.168.239.183

mysql版本 5.1

Master:
yum -y install mysql-server 安装mysql  并使用service mysqld start启动
/usr/bin/mysqladmin -u root password ‘123.com’   设置密码
编辑/etc/my.cnf
server-id=1         //[必须]服务器唯一ID,默认是1
log-bin=mysql-bin     //[必须]启用二进制日志

#replicate-do-db = xiao //只同步xiao数据库
重启服务 ,创建用户授权slave登陆
create user akbkck111;

GRANT REPLICATION SLAVE ON *.* TO ‘akbkck111’@’192.168.%.%’ IDENTIFIED BY ‘mysql1433’; //授权192.168 段主机登陆
show master status; //执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
iptables -A INPUT -s 192.168.0.0/16 -d 192.168.238.134 -p tcp –dport 3306 -j ACCEPT 放行3306
Slave:
编辑/etc/my.cnf
server-id=2          //[必须]服务器唯一ID,默认是1
#log-bin=mysql-bin     //[非必须]启用二进制日志

slave-skip-errors = all  //忽略错误
重启服务连接Master
change master to master_host=’192.168.238.134′,  //Master服务器ip
master_user=’akbkck111′,master_password=’mysql1433′,
master_log_file=’mysql-bin.000002′,        //Master服务器产生的日志
master_log_pos=545;

#验证远程连接:mysql -h 192.168.238.134 -P 3306 -uakbkck111 -pmysql1433

start slave; 启动    //启动从服务器复制功能
show slave status\G

1.jpg

//检查从服务器复制功能状态,只有当Slave_IO_Running和Slave_SQL_Running都显示Yes时,表示主从配置成功
Master 创建数据库xiao   show databases;
Slave    show databases;

111.jpg

表操作:创建数据库
create database xiao;
查看数据库
show databases;
创建表
create table student
(
stu_id int auto_increment primary key,
stu_number int,
stu_name varchar(20),
stu_age int(3),
stu_sex char(8),
stu_tel char(18)
);
插入表
insert into student (stu_number,stu_name,stu_age,stu_sex,stu_tel) values(2012001,’小彭’,20,’男’,’13716819647′);
insert into student values (NULL,2012001,’小彭’,20,’男’,’13716819647′),(NULL,2012002,’小凯’,19,’男’,’18823589682′);  多条插入
查看数据表
show tables;
查询表内容
select * from student;
查看表结构
describe student

中文字段乱码
show variables like ‘character%’;
调整主从my.cnf
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8

lu7an1.jpg
还是乱码,最后找到原因很囧,windows cmd命令行 默认是BGK

mycat安装配置
java安装:
rpm -qa | grep java  查看
rpm -e –nodeps  旧版本文件名  # 卸载旧版
下载地址http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
rpm -ivh jdk-8u112-linux-x64-demos.rpm #默认安装到/usr/local/
java -version
#java version “1.8.0_112″
#Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
#Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode) 成功
添加环境变量
JAVA_HOME=/usr/java/jdk1.8.0_112
JRE_HOME=/usr/java/jdk1.8.0_112/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export    JAVA_HOME JRE_HOME PATH CLASSPATH
执行source /etc/profile  刷新配置

mycat 安装:

下载地址:https://github.com/MyCATApache/Mycat-download

tar -xzvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz  -C  /usr/local/

cd /usr/local/mycat/conf
配置mycat (功能很多,这里仅配置读写分离)
server.xml :
<user name=”xiaow”>
<property name=”password”>123456</property>
<property name=”schemas”>xiao</property>
</user>
<user name=”xiaor”>
<property name=”password”>123456</property>
<property name=”schemas”>xiao</property>
<property name=”readOnly”>true</property>
</user>

schema.xml :
<?xml version=”1.0″?>
<!DOCTYPE mycat:schema SYSTEM “schema.dtd”>
<mycat:schema xmlns:mycat=”http://io.mycat/”>
<schema name=”xiao” checkSQLschema=”false” sqlMaxLimit=”100″ dataNode=”dn1″>
</schema>
<dataNode name=”dn1″ dataHost=”localhost1″ database=”xiao” />
<dataHost name=”localhost1″ maxCon=”1000″ minCon=”10″ balance=”0″ writeType=”0″ dbType=”mysql” dbDriver=

“native” switchType=”-1″  slaveThreshold=”100″>
<heartbeat>select user()</heartbeat>
<writeHost host=”hostM1″ url=”192.168.238.134:3306″ user=”xiaow” password=”123456″>
<readHost host=”hostS1″ url=”192.168.239.183:3306″ user=”xiaor” password=”123456″ />
</writeHost>
</dataHost>
</mycat:schema>

 授权mycat用户登陆
grant insert,delete,update,select on xiao.* to xiaow@’ebs-40316′ identified by ‘123456’; 主(测试主机报错ebs-40316

无法登陆,直接授权ebs-40316,修改主从host指向192.168.238.134)
grant select on xiao.* to xiaor@’192.168.%.%’ identified by ‘123456’; 从
revoke insert,update,delete on xiao.* from xiaow@’192.168.%.%’;  权限同步到从,删除xiaow在从上多余的权限
iptables -A INPUT -s 192.168.0.0/16 -d 192.168.238.134 -p tcp –dport 8066 -j ACCEPT  防火墙放行8066
export PATH=$PATH:/usr/local/mycat/bin/

启动
mycat console  检查报错
mycat start     启动

 管理检测
mysql -uxiaow -p123456 -h192.168.238.134 -P9066 -Dxiao
show @@help;
show @@databases;  几个数据库连接
show @@connection; 当前连接状态
show @@datasource;  显示数据源

show @@heartbeat;  查看 主从服务器状态

2.jpg

rs_code状态为1 表示正常,如果为-1 要检测schema.xml中的账号是否能正常连接 。配置完成`.` 
配置文件说明:

一 . <schema name=”xiao” checkSQLschema=”false” sqlMaxLimit=”100″ dataNode=”dn1″>
这里xiao 就是我们对外声称的我们有数据库的名称  必须和server.xml中的用户指定的数据库名称一致
添加一个dataNode=”dn1″ 是指定了我们这个库只在dn1上.没有进行分库

二 .<dataNode name=”dn1″ dataHost=”localhost1″ database=”xiao” />
只需要改database的名字 db1 真实数据库名

三 .<dataHost name=”localhost1″ maxCon=”1000″ minCon=”10″ balance=”1″ writeType=”0″ dbType=”mysql” dbDriver=”native” switchType=”1″  slaveThreshold=”100″>
要配置三个地方  balance=”1″与writeType=”0″ ,switchType=”1”

a. balance 属性负载均衡类型,目前的取值有 4 种:
1. balance=”0″, 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
2. balance=”1″,全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1 ->S1 , M2->S2,并且 M1 与 M2 互为主备),正常情况下, M2,S1,S2 都参与 select 语句的负载均衡。
3. balance=”2″,所有读操作都随机的在 writeHost、 readhost 上分发。
4. balance=”3″, 所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有, 1.3 没有。

b. writeType 属性
负载均衡类型,目前的取值有 3 种:
1. writeType=”0″, 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个
writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties .
2. writeType=”1″,所有写操作都随机的发送到配置的 writeHost。
3. writeType=”2″,没实现。

c. switchType 属性
– -1 表示不自动切换
– 1 默认值,自动切换
– 2 基于MySQL 主从同步的状态决定是否切换

四 .<writeHost host=”hostM1″ url=”192.168.238.134:3306″ user=”xiaow” password=”123456″>
<readHost host=”hostS1″ url=”192.168.239.183:3306″ user=”xiaor” password=”123456″ />
配置两台读写服务器IP地址访问端口, 访问用户的用户名和密码

赞(1)
@请尊重原创,未经允许不得转载:军S小站 » mysql主从 mycat读写分离配置

抢沙发

评论前必须登录!

 

智慧源于勤奋,伟大出自平凡

联系我们

© 2019 军S小站   ©备案号: 蜀ICP备17043886号-2    网站地图   友情链接