Mycat1.6.7 主从、读写、双主环境搭建

官网:http://www.mycat.org.cn/

下载地址:http://dl.mycat.org.cn/1.6.7.4/Mycat-server-1.6.7.4-release/

注意下载 release 版本

注意 Mycat 必须 有 JDK1.8 以上版本环境。

注意 内存必须4GB,CPU必须2核以上,不然数据库根本查询不了。


Mycat 搭建后端准备环境

1、JDK

[root@localhost ~]# tar -zxvf jdk-14.0.1_linux-x64_bin.tar.gz -C /usr/src
[root@localhost ~]# mv /usr/src/jdk-14.0.1/  /usr/local/java
[root@localhost ~]# echo 'export JAVA_HOME=/usr/local/java
> export JRE_HOME=/usr/local/java/jre
> export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
> export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin ' >> /etc/profile
[root@localhost ~]# rm -rf /usr/bin/java
[root@localhost ~]# source /etc/profile

2、主从集群环境

主机名IP地址节点
mycat192.168.168.4mycat管理节点
master1192.168.168.5主库
slave1192.168.168.6从库
slave2192.168.168.7从库

做一个基础的 一主两从 MySQL集群

3、放行防火墙,授权用户

mysql> GRANT REPLICATION slave ON *.* TO 'slave'@'%' IDENTIFIED BY '123.com';


一、Mycat 主从安装部署

Ⅰ、解压安装

[root@mycat ~]# tar -zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz

[root@mycat ~]# mv mycat/ /usr/local/mycat

Ⅱ、关键配置文件

{path}/conf/

①.schema.xml:定义逻辑库,表,分片节点等内容
②.rule.xml:定义分片规则
③.server.xml:定义用户以及系统相关变量,端口等

1、修改 server.xml

指定 mycat 管理用户

在这里插入图片描述

2、修改 schema.xml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MEGW9G9B-1595196346221)(C:\Users\86156\Pictures\mha'\批注 2020-07-19 132357.png)]

验证远程访问用户是否可用:mysql -u mha -p 123.com -h 192.168.168.5/6/7


Ⅲ、启动程序

{path}/bin/

①、控制台启动:./mycat console 测试是否有报错时使用

②、后台启动:./mycat start 没报错时启动

./mycat { console | start | stop | restart | status | dump }

1、控制台启动

./mycat console

报错如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3GrsMzh5-1595196346223)(C:\Users\86156\Pictures\mha'\批注 2020-07-19 125936.png)]

解决方法:

vim {path}/conf/wrapper.conf 将图下标红参数注释

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uNzagmND-1595196346225)(C:\Users\86156\Pictures\mha'\批注 2020-07-19 130045.png)]

——————————————

报错如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tag6BYvY-1595196346228)(C:\Users\86156\Pictures\mha'\批注 2020-07-19 133004.png)]

这个是 schema.xml 配置文件中没有为 <schema> 指定 <table> 表属性

  • schema
    • name: TESTDB(指定mycat 表名)
    • checkSQLschema(指定mycat 查询时可以忽略库名,一般为 flase)
    • sqlMaxLimit(指定mycat 查询时,最多显示100条数据)
  • table
    • name=“biao1” (指定 后端真实表,表名叫 biao1)
    • dataNode=“dn1”(创建一个 dn1 database)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5aiy1z8a-1595196346230)(C:\Users\86156\Pictures\mha'\批注 2020-07-19 133155.png)]
2、后台启动

./mycat start

netstat -anpt | grep java

tcp6 0 0 :::8066 ::😗 LISTEN 24018/java
tcp6 0 0 :::9066 ::😗 LISTEN 24018/java


Ⅳ、登录Mycat 数据窗口 8066

mysql -umycat -p123.com -h192.168.168.4 -P8066


二、Mycat 开启读写分离

①、banlance

/conf/schema.xml 文件的

<dataHost> 的 balance 属性,控制后端数据库的 读写分离(负载均衡)类型。

目前 balance 的取值有4种

balance=“0”:不开启读写分离机制,所有读操作都发送到 writeHost上。

balance=“1”:如果是双主双从架构,正常情况下,只有第一台主库充当写操作,其余的三台全部是从读

balance=“2”:所有读操作,随机在 writeHost、readHost 上分发

balance=“3”:所有读请求随机分发到 readhost 执行,writerHost 不负担读压力。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qp1HwxUQ-1595196346232)(C:\Users\86156\Pictures\mha'\批注 2020-07-19 141228.png)]

②、writeType

writeType=“0”:所有写操作发送到配置的第一个 writeHost,第一个挂了切换到生存的第二各 writeHost

writeType=“1”:所有写操作都随机的发送到配置的 writeHost,1.5以后已经废弃了。

switchType=“1”:1 默认值,自动切换
-1 表示不自动切换
2 基于 MySQL 主从同步的状态绝对是否切换。


三、双主双从

主机名IP地址节点
master-1192.168.168.5主库
master-2192.168.168.4备用主库
slave-1192.168.168.6master1-从库
slave-2192.168.168.7master2-从库

1、双主双从配置

master-1 配置文件
[client]
port = 3306
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
server-id = 1
port = 3306
socket = /usr/local/mysql/mysql.sock
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
log_error = /var/log/mysqld.log
log-bin = /usr/local/mysql/data/master-bin
log-slave-updates = true
pid-file = /usr/local/mysql/data/localhost.localdomain.pid
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
gtid-mode=ON
enforce-gtid-consistency=ON

auto-increment-increment=2
auto-increment-offset=1

binlog-ignore-db=mysql
binlog-ignore-db=information_schema
master-2 配置文件
[client]
port = 3306
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
server-id = 2
port = 3306
socket = /usr/local/mysql/mysql.sock
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
log_error = /var/log/mysqld.log
log-bin = /usr/local/mysql/data/master-bin
log-slave-updates = true
pid-file = /usr/local/mysql/data/localhost.localdomain.pid
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
gtid-mode=ON
enforce-gtid-consistency=ON

auto-increment-increment=2
auto-increment-offset=2

binlog-ignore-db=mysql
binlog-ignore-db=information_schema
slave-1 配置文件
[client]
port = 3306
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
server-id = 3
port = 3306
socket = /usr/local/mysql/mysql.sock
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
log_error = /var/log/mysqld.log
pid-file = /usr/local/mysql/data/node1.pid
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
gtid-mode=ON
enforce-gtid-consistency=ON
slave-2 配置文件
[client]
port = 3306
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
server-id = 4
port = 3306
socket = /usr/local/mysql/mysql.sock
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
log_error = /var/log/mysqld.log
pid-file = /usr/local/mysql/data/localhost.localdomain.pid
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
gtid-mode=ON
enforce-gtid-consistency=ON


授权用户
mysql> grant replication slave on *.* to 'slave'@'192.168.168.%' identified by '123.com';
#主从复制用户

mysql> grant all on *.* to 'user1'@'192.168.168.%' identified by '123.com';
#mycat远程访问数据库用户


2、配置 Mycat

schema.xml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ftU4Yfq-1595196346234)(C:\Users\86156\Pictures\mha'\批注 2020-07-19 164145.png)]

server.xml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CE8z3jE6-1595196346235)(C:\Users\86156\Pictures\mha'\批注 2020-07-19 122453.png)]


3、启动 Mycat

{path}/bin/mycat start

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值