centos7下使用mycat2实现mysql负载均衡和读写分离

一、前期工作

参考文章《Centos7下采用haproxy+keepalived搭建mysql高可用负载均衡》

1、关闭防火墙和SELINUX(3台虚拟机)

2、设置yum源(3台虚拟机)

3、安装mysql(3台虚拟机)——7.86(主)、7.88(从1)、7.89(从2)

二、Mysql一主两从配置

1、修改mysql配置文件

在7.86、7.88、7.89的MySQL配置文件/etc/my.cnf分别增加下面这一段。

server-id=86 #任意自然数n,保证三台MySQL主机id不一样。

log-bin=mysql-bin   #开启二进制日志

replicate-do-db=aa   #要同步的数据库,默认所有库

保存后,重启mysql服务

sudo systemctl restart mysqld

或sudo service mysqld restart

2、查看主mysql(7.86)二进制日志

登录mysql -uroot -p

密码Lr12345!

mysql> show master status;

3、在从mysql(7.88、7.89)告知二进制文件名与位置

mysql> change master to

    -> master_host='192.168.7.86',

    -> master_user='root',

    ->master_password='Lr12345!',

    ->master_log_file='mysql-bin.000001',

    -> master_log_pos=154;

查看结果

mysql> start slave;

mysql> show slave status\G

4、验证主从同步

192.168.7.86主MySQL操作:

            mysql>create database aa;

            mysql>use aa;

            mysql>create table tab1(id int auto_increment,name varchar(10),primary key(id));

            mysql>show databases;

            mysql>show tables;

在7.86主数据库aa中写入数据,看是否同步到7.88和7.89数据库aa。

三、7.86安装mycat2

1、把所有文件都下载到/data/tools目录

方法一:

先创建目录/data/tool

cd /data/tools

wget http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zipwget http://dl.mycat.org.cn/2.0/1.21-release/mycat2-1.21-release-jar-with-dependencies.jar

方法二:

先创建目录/data/tools

将下载好的两个文件拉到该目录下

2、安装

程序安装目录为/data,解压并移到到/data目录

cd /data/tools

unzip mycat2-install-template-1.21.zip

mv mycat ../

把bin目录的文件加执行权限

cd /data/mycat/bin

chmod +x *

把所需的jar复制到mycat/lib目录

cd /data/mycat/lib/

cp /data/tools/mycat2-1.21-release-jar-with-dependencies.jar ./

四、数据源

1、配置mycat原型库的数据源信息

cd /data/mycat/conf/datasources

vim prototypeDs.datasource.json

"password":"Lr12345!",

"url":"jdbc:mysql://192.168.7.86:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",

2、新增第一个数据源(主节点)

cd /data/mycat/conf/datasources

cp  prototypeDs.datasource.json master.datasource.json

vim master.datasource.json

内容如下:

{

"dbType":"mysql",

"idleTimeout":60000,

"initSqls":[],

"initSqlsGetConnection":true,

"instanceType":"WRITE",

"maxCon":1000,

"maxConnectTimeout":3000,

"maxRetryCount":5,

"minCon":1,

"name":"master",

"password":"Lr12345!",

"type":"JDBC",

"url":"jdbc:mysql://192.168.7.86:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",

"user":"root",

"weight":0

}

3、新增第二个数据源(从节点1)

cd /data/mycat/conf/datasources

cp  prototypeDs.datasource.json slave-01.datasource.json

vim slave-01.datasource.json

内容如下:

{

"dbType":"mysql",

"idleTimeout":60000,

"initSqls":[],

"initSqlsGetConnection":true,

"instanceType":"READ",

"maxCon":1000,

"maxConnectTimeout":3000,

"maxRetryCount":5,

"minCon":1,

"name":"slave-01",

"password":"Lr12345!",

"type":"JDBC",

"url":"jdbc:mysql://192.168.7.88:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",

"user":"root",

"weight":0

}

4、新增第三个数据源(从节点2)

cd /data/mycat/conf/datasources

cp  prototypeDs.datasource.json slave-02.datasource.json

vim slave-02.datasource.json

内容如下:

{

"dbType":"mysql",

"idleTimeout":60000,

"initSqls":[],

"initSqlsGetConnection":true,

"instanceType":"READ",

"maxCon":1000,

"maxConnectTimeout":3000,

"maxRetryCount":5,

"minCon":1,

"name":"slave-02",

"password":"Lr12345!",

"type":"JDBC",

"url":"jdbc:mysql://192.168.7.89:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",

"user":"root",

"weight":0

}

5、配置数据源的集群信息

注意:不要删除prototype.cluster.json,否则启动mycat时报错。

cd /data/mycat/conf/clusters

cp prototype.cluster.json master-slave.cluster.json

vim master-slave.cluster.json

内容如下:

{

"clusterType":"MASTER_SLAVE",

"heartbeat":{

"heartbeatTimeout":1000,

"maxRetry":3,

"minSwitchTimeInterval":300,

"slaveThreshold":0

},

"masters":[

"master"

],

     "replicas":[

                "slave-01"

                "slave-02"

        ],

"maxCon":200,

"name":"master-slave",

"readBalanceType":"BALANCE_ALL",

"switchType":"NOT_SWITCH"

}

6、配置物理库(schema)和Mycat中数据源/数据源集群的关系

cd /data/mycat/conf/schemas

cp information_schema.schema.json a.schema.json

vim a.schema.json

内容如下:

{

    // 物理库

    "schemaName": "a",

    // 指向集群,或者数据源

    "targetName": "master-slave",

    // 这里可以配置数据表相关的信息,在物理表已存在或需要启动时自动创建物理表时配置此项

    "normalTables": {}

}

7、暴露第二个数据库b(额外加的)

cd /data/mycat/conf/schemas

cp information_schema.schema.json b.schema.json

内容如下:

vim b.schema.json

{

    // 物理库

    "schemaName": "b",

    // 指向集群,或者数据源

    "targetName": "master-slave",

    // 这里可以配置数据表相关的信息,在物理表已存在或需要启动时自动创建物理表时配置此项

    "normalTables": {}

}

注意:启动服务后,b.schema.json文件内容不变,给表添加数据也不变,只有变更了表结构会变。Mycat2中新增数据库,会自动生成 数据库名.schema.json

五、启动Mycat2服务

cd /data/mycat/bin

./mycat start

./mycat stop

./mycat status

六、验证负载均衡和读写分离

navicate客户端连接192.168.7.86:8066

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值