安装前准备
服务器已安装Jdk8
对应数据库安装,本测试使用的Mycat2操作Mysql,所以也完成了Mysql安装
jdk安装
1、下载
我用夸克网盘分享了「jdk-8u341-linux-x64.tar.gz」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。 链接:https://pan.quark.cn/s/34e1f58045f8 提取码:LNvG
2、解压到 usr/local
sudo tar -zxvf jdk-8u341-linux-x64.tar.gz -C /usr/local
3、切换到etc/profile.d/文件下
cd /etc/profile.d/
4、 在profile.d下创建一个jdk.sh文件
sudo vi /etc/profile.d/jdk.sh
5、 jdk.sh文件内容
export JAVA_HOME=/usr/local/jdk1.8.0_341
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
6、配置生效
source /etc/profile
7、查询版本
java -version
mycat安装
可以通过绑定的资源下载
也可以通过官网下载mycat2
如果在windows下载 需传入centos8
D:\BaiduNetdiskDownload\mycat2.zip 需要传入的文件目录
root@192.168.245.132:/Admin/
root 虚拟机账号名
192.168.245.132 虚拟机iip地址
/Admin/ 存放地址
scp D:\BaiduNetdiskDownload\mycat2.zip root@192.168.245.132:/root/
解压
然后给/mycat/bin
文件下的所有文件赋值最高级权限
或者通过在/mycat/bin
命令行中
chmod +x *
修改 Mycat 服务 /mycat/conf/server.json
主要添加了serverVersion配置
serverVersion
中前面是MySQL的版本
后面是Mycat的版本
查询mysql版本
登录mysql后查询
select version();
server.json文件内容
{
"loadBalance":{
"defaultLoadBalance":"BalanceRandom",
"loadBalances":[]
},
"mode":"local",
"properties":{},
"server":{
"bufferPool":{
},
"idleTimer":{
"initialDelay":3,
"period":60000,
"timeUnit":"SECONDS"
},
"ip":"0.0.0.0",
"mycatId":1,
"port":8066,
"serverVersion":"8.0.40-mycat-2.0",
"reactorNumber":8,
"tempDirectory":null,
"timeWorkerPool":{
"corePoolSize":0,
"keepAliveTime":1,
"maxPendingLimit":65535,
"maxPoolSize":2,
"taskTimeout":5,
"timeUnit":"MINUTES"
},
"workerPool":{
"corePoolSize":1,
"keepAliveTime":1,
"maxPendingLimit":65535,
"maxPoolSize":1024,
"taskTimeout":5,
"timeUnit":"MINUTES"
}
}
}
原型库连接
只用设置一次。
在主节点创建 Mycat 使用的数据库 mycat
CREATE DATABASE IF NOT EXISTS mycat;
这个库称为 Mycat 的原型库(prototype),Mycat 在启动时,会自动在原型库下创建其运行时所需的数据表。
CREATE DATABASE IF NOT EXISTS `mycat`;
USE `mycat`;
DROP TABLE IF EXISTS `analyze_table`;
CREATE TABLE `analyze_table` (
`table_rows` bigint(20) NOT NULL,
`name` varchar(64) NOT NULL,
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
DROP TABLE IF EXISTS `config`;
CREATE TABLE `config` (
`key` varchar(22) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`value` longtext,
`version` bigint(20) DEFAULT NULL,
`secondKey` longtext,
`deleted` tinyint(1) DEFAULT '0',
`id` bigint(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
DROP TABLE IF EXISTS `replica_log`;
CREATE TABLE `replica_log` (
`name` varchar(22) DEFAULT NULL,
`dsNames` text,
`time` datetime DEFAULT NULL,
`id` bigint(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
DROP TABLE IF EXISTS `spm_baseline`;
CREATE TABLE `spm_baseline` (
`id` bigint(22) NOT NULL AUTO_INCREMENT,
`fix_plan_id` bigint(22) DEFAULT NULL,
`constraint` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`extra_constraint` longtext,
PRIMARY KEY (`id`),
UNIQUE KEY `constraint_index` (`constraint`(22)),
KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
DROP TABLE IF EXISTS `spm_plan`;
CREATE TABLE `spm_plan` (
`id` bigint(22) NOT NULL AUTO_INCREMENT,
`sql` longtext,
`rel` longtext,
`baseline_id` bigint(22) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
DROP TABLE IF EXISTS `sql_log`;
CREATE TABLE `sql_log` (
`instanceId` bigint(20) DEFAULT NULL,
`user` varchar(64) DEFAULT NULL,
`connectionId` bigint(20) DEFAULT NULL,
`ip` varchar(22) DEFAULT NULL,
`port` bigint(20) DEFAULT NULL,
`traceId` varchar(22) NOT NULL,
`hash` varchar(22) DEFAULT NULL,
`sqlType` varchar(22) DEFAULT NULL,
`sql` longtext,
`transactionId` varchar(22) DEFAULT NULL,
`sqlTime` bigint(20) DEFAULT NULL,
`responseTime` datetime DEFAULT NULL,
`affectRow` int(11) DEFAULT NULL,
`result` tinyint(1) DEFAULT NULL,
`externalMessage` tinytext,
PRIMARY KEY (`traceId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
DROP TABLE IF EXISTS `variable`;
CREATE TABLE `variable` (
`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`value` varchar(22) DEFAULT NULL,
PRIMARY KEY (`name`)
) ENGINE = InnoDB CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
DROP TABLE IF EXISTS `xa_log`;
CREATE TABLE `xa_log` (
`xid` bigint(20) NOT NULL,
PRIMARY KEY (`xid`)
) ENGINE = InnoDB CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci;
修改数据源 mycat/conf/datasources/prototypeDs.datasource.json
只修改password、url、user 三部分
password:原型库的密码
user :原型库的用户
url:请求url localhost:3306/mycat 可更改为mysql所在的具体的Ip地址和具体的库
"password":"123456",
"url":"jdbc:mysql://localhost:3306/mycat?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
"user":"root",
{
"dbType":"mysql",
"idleTimeout":60000,
"initSqls":[],
"initSqlsGetConnection":true,
"instanceType":"READ_WRITE",
"maxCon":1000,
"maxConnectTimeout":3000,
"maxRetryCount":5,
"minCon":1,
"name":"prototypeDs",
"password":"123456",
"type":"JDBC",
"url":"jdbc:mysql://localhost:3306/mycat?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
"user":"root",
"weight":0
}
记住或者自己重新设置mycat登录的账号和密码
验证数据库访问情况
Mycat作为数据库中间件要和数据库部署在不同机器上,所以要验证远程访问情况
mysql -u root -p -h 192.168.140.100 -P 3306;
如远程访问报错,请建对应用户
防火墙拦截:检查数据库服务器所在主机的防火墙设置,看是否拦截了 MyCat默认的 8066
端口(如果使用的是默认端口配置)。如果防火墙阻止了客户端与服务器之间的连接通信,就会出现连接超时情况。可以按照相应操作系统的规则去开放
8066端口,比如在 Linux 系统中使用firewalld防火墙时,通过命令sudo firewall-cmd
–zone=public --add-port=8066/tcp --permanent添加允许 8066端口的 TCP 协议通信规则,然后执行sudo firewall-cmd --reload使规则生效;若使用iptables防火墙,可使用iptables
-A INPUT -p tcp --dport 3306 -j ACCEPT等相关命令来允许访问 8066端口,并做好规则保存工作。
grant all privileges on *.* to 'root'@'缺少的host' identified by '密码';
打开mycat 在/mycat/bin 中通过./mycat start
验证Mycat是否正常运行
在mycat/bin 中通过
./mycat start 运行
./mycat status 查看状态
登录Mycat
9066 运维人员管理、维护 mycat的端口
8066 开发人员管理、维护 mycat的端口
mysql -u root -p -P 9066 -h 远程mysql的ip
mysql -u root -p -P 8066 -h 远程mysql的ip
通过创建一个库
created database mycat_db
查看/mycat/conf/schemas
下是否有同名库 有则成功
报错
Mycat-server is not running.
查看日志
1、通过命令行
mycat console
2.myCat 根目录下查看
错误信息
Running Mycat-server...wrapper | ERROR: Could not write pid file /opt/mycat/logs/mycat.pid: No such file or directory
解决:mycat 根目录下创建logs 重启mycat