MyCat实现MySQL读写分离

首先来准备环境:

system: CentOS 7.5

MyCat:
192.168.0.11   mycat

MySQL:
192.168.0.12  master
192.168.0.13  slave

MySQL版本:5.7

安装MyCat:

部署mycat环境:
[root@mycat ~]# tar xf jdk-8u181-linux-x64.tar -C /usr/local/ 
[root@mycat ~]# mv /usr/local/jdk1.8.0_181 /usr/local/java
[root@mycat ~]# vim /etc/profile 
export JAVA_HOME=/usr/local/java 
export PATH=$JAVA_HOME/bin:$PATH 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
[root@mycat ~]# java -version 
java version "1.8.0_181" 
Java(TM) SE Runtime Environment (build 1.8.0_181-b13) 
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

安装mycat:
[root@mycat ~]# wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release20180122220033-linux.tar.gz 
[root@mycat ~]# tar xf Mycat-server-1.6.5-release-20180122220033linux.tar.gz -C /usr/local/
[root@mycat mycat]# vim /etc/profile 
export MYCAT_HOME=/usr/local/mycat 
[root@mycat mycat]# source /etc/profile 
[root@mycat mycat]# ln -s /usr/local/mycat/bin/mycat /usr/bin/mycat

修改MyCat配置文件:
#修改mycat配置文件时用到的数据库在下面的mysql读写分离中
#切记一定要分清主库、从库和逻辑数据库

[root@mycat ~]# vim /usr/local/mycat/conf/server.xml
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE mycat:server SYSTEM "server.dtd"> 
<mycat:server xmlns:mycat="http://io.mycat/">

        <system>
        <property name="defaultSqlParser">druidparser</property>

        </system>
<user name="replication" defaultAccount="true">    #replication是授权的用户
                <property name="password">#Password#</property>    # #Password#是授权的密码
                <property name="schemas">(逻辑数据库名)</property>   #逻辑数据库写虚拟库名

        </user>

        <user name="user">
                <property name="password">#Password#</property>    #Password#授权密码
                <property name="schemas">(逻辑数据库名)</property>
                <property name="readOnly">true</property>
        </user>

</mycat:server>

[root@mycat ~]# vim /usr/local/mycat/conf/schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="(逻辑数据库名)" checkSQLschema="false"  sqlMaxLimit="100" dataNode="dn1">    #( 逻辑数据库名)写虚拟数据库名  
        </schema>
        <dataNode name="dn1" dataHost="localhost1" database="后端数据库名称" />
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"#读写分离
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM1" url="192.168.0.12:3306" user="chen"#后端写入数据库ip端口和用户
                                   password="#(Password)#"> #密码
                        <!-- can have multi read hosts -->
                        <readHost host="hostS2" url="192.168.0.13:3306" user="chen" password="#(Password)#" />   #另一台数据库IP端口和用户、密码
                </writeHost>
        </dataHost>
</mycat:schema>

[root@mycat ~]# vim /usr/local/mycat/conf/wrapper.conf 
wrapper.java.command=%JAVA_HOME%/bin/java
[root@mycat ~]# /usr/local/mycat/bin/mycat start

image.png

若起不来如图修改配置文件wrapper.conf

/usr/local/mycat/bin/mycat console #若显示successfully 则配置成功
查看端口 ss -anptu | grep : 8066


image.png
#连接MyCat主机
mysql -ureplication -p1qaz2WSX -P8066 -h127.0.0.1
#连接成功说明,配置MyCat 完毕

MySQL主从复制:

下载安装地址:https://dev.mysql.com/get/mysql80-community-release-el71.noarch.rpm
rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el71.noarch.rpm
yum -y install mysql-community-server
systemctl start mysqld && systemctl enable mysqlld

主库设置:
[root@master ~]# vi /etc/my.cnf 
[mysqld]
server-id=12
log-bin=mysql-bin
[root@master ~]# systemctl start mysqld && systemctl enable mysqld 
[root@master ~]# grep 'password' /var/log/mysqld.log  #使用初始密码登陆
注意修改密码

[root@master ~]# mysql -uroot -p'1qaz2WSX#'
mysql> CREATE USER 'replication'@'192.168.0.13' IDENTIFIED BY "1qaz2WSX#";
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.0.13'; 
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+------------------+
 | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
 +------------------+----------+--------------+------------------+------------------+ 
| mysql-bin.000002 |      877 |              |                  |                   | 
+------------------+----------+--------------+------------------+------------------+
 1 row in set (0.00 sec)
主库设置完毕
从库设置:
[root@slave ~]# vi /etc/my.cnf 
[mysqld] 
server_id=13

[root@slave ~]# systemctl start mysqld && systemctl enable mysqld 
[root@slave ~]# grep 'password' /var/log/mysqld.log
注意修改密码
[root@slave ~]# mysql -uroot -p'1qaz2WSX#'

mysql> CHANGE MASTER TO
    -> MASTER_HOST='192.168.0.12',
    -> MASTER_USER='replication',
    -> MASTER_PASSWORD='1qaz2WSX#',
    -> MASTER_LOG_FILE='mysql-bin.000002',
    -> MASTER_LOG_POS=877;
mysql> start slave;
mysql> show slave status \G  #查询slave状态
当IO和SQL都处于YES状态,说明已经成功实现了主从复制
            Slave_IO_Running: Yes
            Slave_SQL_Running: Yes 

开始测试吧

感谢 @bavdu 提供技术支持!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355