Mycat 安装启动
下载地址: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地址 | 节点 |
---|---|---|
mycat | 192.168.168.4 | mycat管理节点 |
master1 | 192.168.168.5 | 主库 |
slave1 | 192.168.168.6 | 从库 |
slave2 | 192.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
验证远程访问用户是否可用: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
报错如下:
解决方法:
vim {path}/conf/wrapper.conf 将图下标红参数注释
——————————————
报错如下:
这个是 schema.xml 配置文件中没有为 <schema> 指定 <table> 表属性
- schema
- name: TESTDB(指定mycat 表名)
- checkSQLschema(指定mycat 查询时可以忽略库名,一般为 flase)
- sqlMaxLimit(指定mycat 查询时,最多显示100条数据)
- table
- name=“biao1” (指定 后端真实表,表名叫 biao1)
- dataNode=“dn1”(创建一个 dn1 database)
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 不负担读压力。
②、writeType
writeType=“0”:所有写操作发送到配置的第一个 writeHost,第一个挂了切换到生存的第二各 writeHost
writeType=“1”:所有写操作都随机的发送到配置的 writeHost,1.5以后已经废弃了。
switchType=“1”:1 默认值,自动切换
-1 表示不自动切换
2 基于 MySQL 主从同步的状态绝对是否切换。
三、双主双从
主机名 | IP地址 | 节点 |
---|---|---|
master-1 | 192.168.168.5 | 主库 |
master-2 | 192.168.168.4 | 备用主库 |
slave-1 | 192.168.168.6 | master1-从库 |
slave-2 | 192.168.168.7 | master2-从库 |
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
server.xml
3、启动 Mycat
{path}/bin/mycat start