MyCAT+ 双主一从高可用读写分离

本贴最后更新于 1649 天前,其中的信息可能已经物是人非

一、搭建 MySQL 双主一从架构

1、环境准备

1.1:准备 3 台服务器进行搭建

主机 版本 IP 地址 关系
MySQL-M1 MySQL5.7 192.168.66.37 M1-S1 主从
MySQL-S1 MySQL5.7 192.168.66.39 M1-S1 主从
MySQL-M2 MySQL5.7 192.168.66.38 M1-M2 互为主从

1.2:系统环境配置

  • 3 台服务器进行以下操作

  • 配置本地 yum 源
    在内网环境下由于无法连接到互联网所有无法直接使用互联网 yum 源

1、本地源

① 拷贝镜像到服务器/tmp 目录下
image.png

② 创建挂载目录/mnt/yum-iso,修改/etc/fstab 文件

[root@yum-server ~]# mkdir /mnt/yum-iso
[root@yum-server ~]# vim /etc/fstab

image.png

[root@yum-server ~]# mount -a

mount: /dev/loop0 写保护,将以只读方式挂载

image.png
image.png

③ 创建 yum 源配置文件并进行配置

[root@yum-server ~]# cd /etc/yum.repos.d/
[root@yum-server yum.repos.d]# vim yum-iso.repo
 [yum-iso]
 name=yum-iso-local
 baseurl=file:///mnt/yum-iso/
 gpgcheck=0
 enable=1

④ 备份其他默认源使其不进行使用

[root@yum-server yum.repos.d]# mkdir bak
[root@yum-server yum.repos.d]# mv CentOS-* bak/

⑤ 检查本地源是否正常
[root@yum-server ~]# yum repolist

2、网络源

① 通过 ftp 服务让其他客户端可以进行访问
[root@yum-server ~]# yum -y install vsftpd*

[root@yum-server ~]# systemctl enable vsftpd
[root@yum-server ~]# systemctl start vsftpd
[root@yum-server ~]# systemctl status vsftpd

② 将挂载本地源存储目录拷贝至/var/ftp/pub 目录下
③ 通过浏览器访问
ftp://192.168.66.52

3、通过 reposync 命令将互联网源的包下载到本地

  • 注意:需要能连接互联网
  • 安装 reposync 命令,该命令包含在 yum-utils 包中
[root@yum-server ~]# yum install yum-utils
[root@yum-server ~]# reposync -r base -p /var/ftp/pub/
base为仓库标识 -p指定将下载的rpm包存储在本地的路径

# 局域网中的客户端配置本地yum源并指定访问路径为局域网yum服务器
[root@yum-server ~]# vim /etc/yum.repos.d/yum-c7.repo
[yum-c7]
name=yum-c7
baseurl=ftp://yum源服务器地址/
enable=1
gpgcache=0
  • 安装常用工具已经依赖包
[root@localhost ~]# yum install vim wget lrzsz net-tools httpd-tools make gcc-c++ cmake bison-devel ncurses-devel
  • 配置 hosts
192.168.66.36   MyCAT
192.168.66.37   MySQL-M1
192.168.66.38   MySQL-M2
192.168.66.39   MySQL-S1
  • 关闭防火墙
~]# systemctl stop firewalld
~]# systemctl disable firewalld
~]# sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
  • 时间同步
~]# yum -y install ntp
~]# ntpdate 0.asia.pool.ntp.org	//内网环境需要与内网中时间服务器进行同步
~]# hwclock -w		//将时间同步到硬件时间

1.3:上传源码包

  • 创建一个存储源码包的目录,3 台数据库服务器都需要上传
[root@localhost ~]# mkdir /soft
[root@localhost soft]# ls
mysql-5.7.26.tar.gz

2、编译安装 MySQL

  • 三台 MySQL 服务器都需要执行以下的步骤

2.1:解压源码包

[root@localhost soft]# tar -zxvf mysql-5.7.26.tar.gz

2.2:安装依赖

  • 建议先卸载自带的 mariadb
[root@localhost ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64

[root@localhost ~]#rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64 --nodeps
警告:/etc/my.cnf 已另存为 /etc/my.cnf.rpmsave	#my.cnf另存为/etc/my.cnf.rpmsave

注 1:MySQL 从 5.5 开始,源代码安装将原来的 configure 改为 cmake,因此在安装 MySQL5.5.x 以上版本时,需要先安装 cmake,通过 yum 安装

注 2:MySQL5.7.5 以上版本源码安装必须要 BOOST 库,不然编译会出现如下图提示:且版本必须为 1.59 的
image.png

  • 安装 cmake,如果上面环境准备中已经安装了 cmake 则不需要执行下面 cmake 的安装
[root@localhost ~]# yum -y install cmake
  • 安装 boost 库
1、创建boost库目录,上传boost包,然后安装
Boost库网站https://sourceforge.net/projects/boost/files/boost/

[root@localhost ~]# mkdir /usr/local/boost

2、下载并解压,无法连接外网情况下需要下载至本地然后拷贝至服务器
[root@localhost ~]# cd /usr/local/boost/
[root@localhost boost]# wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

3、将boost解压出来即可
[root@localhost boost]# tar -zxvf boost_1_59_0.tar.gz

2.3:编译

  • 创建安装目录与数据存储目录
[root@localhost ~]# mkdir -p /usr/local/mysql/data
[root@localhost ~]# mkdir /usr/local/mysql/logs	#日志存储
  • 进入 mysql 解压目录进行编译
[root@localhost ~]# cd /soft/mysql-5.7.26

[root@localhost mysql-5.7.26]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DENABLE_DTRACE=0 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EMBEDDED_SERVER=1
  • 参数解释:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql # mysql 安装路径
-DMYSQL_DATADIR=/usr/local/mysql/data # mysql 数据存储路径
-DWITH_BOOST=/usr/local/boost # 使用本地 boost 库
-DENABLED_LOCAL_INFILE=1 # 允许从本文件导入数据
-DDEFAULT_CHARSET=utf8 \ # 指定字符集
-DDEFAULT_COLLATION=utf8_general_ci \

  • 注:如果编译失败,需要删除 MySQL 源码包解压路径下的 CMakeCache.txt 文件,然后再次进行编译

2.4:安装

[root@localhost mysql-5.7.26]# make && make install

  • 安装完成
    image.png
[root@localhost mysql-5.7.26]# make clean

2.5:创建用户并进行授权

  • 创建 mysql 用户
[root@mysql-m1 ~]# groupadd mysql
[root@mysql-m1 ~]# useradd -s /sbin/nologin -g mysql -M -r mysql
[root@mysql-m1 ~]# chown -R mysql. /usr/local/mysql/

2.6:实例初始化

三台数据库都需要进行初始化

  • 注意
    5.7.6 之前初始化的方法是:bin/mysql_install_db
    5.7.6 之后的版本初始化数据库不再使用 mysql_install_db,而是使用: bin/mysqld –initialize

  • 初始化完成后会生成一个随机密码用来登入数据库

[root@mysql-m1 ~]# cd /usr/local/mysql/

[root@mysql-m1 mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/

相关警告信息如下:
[警告]不推荐使用具有隐式 DEFAULT 值的 TIMESTAMP。 请使用--explicit_defaults_for_timestamp 服务器选项(有关详细信息,请参阅文档)。
[警告] InnoDB:创建新的日志文件,LSN = 45790
[警告] InnoDB:创建外键约束系统表。
[警告]未找到现有的 UUID,因此我们假设这是第一次启动此服务器。 生成新的 UUID:4c52a0d9-9b00-11e9-a75a-000c29dc5ef4。
[警告] Gtid 表尚未准备好使用。 表'mysql.gtid_executed'无法打开。
[注意]为 root @ localhost 生成临时密码:u-jUegVt.1G<

2.7:配置环境变量

[root@mysql-m1 mysql]# vim /etc/profile
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local    /mysql/bin

[root@mysql-m1 mysql]# source /etc/profile

2.8:配置 system 管理服务

[root@mysql-m1 ~]# vim /etc/systemd/system/mysqld.service

[Unit]
Description=MySQL Community Server
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target
Alias=mysql.service

[Service]
User=mysql
Group=mysql

# Execute pre and post scripts as root
PermissionsStartOnly=true

# Start main service
ExecStart=/usr/local/mysql/bin/mysqld_safe

# Give up if ping don't get an answer
TimeoutSec=600

Restart=always
PrivateTmp=false
  • 注意:ExecStart= 后面跟的是 MySQL 启动程序的安装路径,根据实际情况配置路径
    mysqld_safe 脚本会在启动 MySQL 服务器后继续监控其运行情况,并在其死机时重新启动它。

3、搭建主从

搭建思路

  1. 系统时间需要同步
  2. 关闭防火墙和 selinux
  3. hosts 文件中两台服务器主机名和 ip 地址一一对应起来
  4. master 和 slave 的数据库版本保持一致
  5. master 端必须开启二进制日志;slave 端必须开启 relaylog 日
  6. master 端和 slave 端的 server_id 号必须不能一致
  7. 告诉 slave 需要同步的 master 主机的 IP、user、password 等..

3.1:修改 my.cnf 文件

  • 由于上面将系统自带的 mariadb 卸载时,系统默认将/etc/my.cnf 另存为/etc/my.cnf.rpmsave,所有需需要复制一份出来
[root@mysql-m1 ~]# cp /etc/my.cnf.rpmsave /etc/my.cnf
  • M1-M2 互为主从,M1-S1 为主从

  • MySQL-M1 配置如下:

[root@mysql-m1 ~]# vim /etc/my.cnf

image.png

  • MySQL-M2 配置如下:
    image.png

  • MySQL-S1 配置如下
    image.png

3.2:数据同步

数据同步以当前数据库中存放最新数据的数据库为主
不初始化数据有可能 slave 端的 Slave_SQL_Running:显示为 NO

[root@mysql-m1 ~]# rsync -av /usr/local/mysql/data root@192.168.66.38:/usr/local/mysql/
[root@mysql-m1 ~]# rsync -av /usr/local/mysql/data root@192.168.66.39:/usr/local/mysql/
  • 注意:拷贝的是 data 整个目录,data 后面千万不要加/,不然拷贝过去的就是 data 目录下的文件
    slave 端需要删除数据(data)目录下的 auto.cnf 文件

  • M1 数据库

[root@mysql-m1 ~]# cd /usr/local/mysql/data/
[root@mysql-m1 data]# ls
auto.cnf        ibdata1      ib_logfile1  mysql-m1.err        sys
ib_buffer_pool  ib_logfile0  mysql        performance_schema
[root@mysql-m1 data]# rm -f auto.cnf
  • M2 数据库:
[root@MySQL-M2 ~]# cd /usr/local/mysql/data/
[root@MySQL-M2 data]# rm -f auto.cnf
  • S1 数据库:
[root@MySQL-S1 ~]# cd /usr/local/mysql/data/
[root@MySQL-S1 data]# rm -f auto.cnf

3.3:启动数据库

  • 三台服务器都进行启动
[root@mysql-m1 ~]# systemctl enable mysqld
[root@mysql-m1 ~]# systemctl start mysqld
[root@mysql-m1 ~]# systemctl status mysqld

启动报错:
mysqld_safe: my_print_defaults: Can't read dir of '/etc/my.cnf.d' (Errcode: 2 - No such file or directory)
原因:
mysqld_safe 脚本进行启动时没有找到/etc/my.cnf.d 目录;默认系统中是存在的
解决方案:
创建/etc/my.cnf.d
[root@mysql-m1 ~]# mkdir /etc/my.cnf.d
再次启动数据库
[root@mysql-m1 ~]# systemctl start mysqld

3.4:登入数据库

  • 三台数据登入后修改密码
[root@mysql-m1 ~]# mysql -uroot -p
Enter password: 	#输入初始化时生成的随机密码
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
  • 解决方案:
    设置软链接
[root@mysql-m1 ~]# ln -s /usr/local/mysql/mysql.sock /tmp/
  • 如果随机密码不记得可以通过以下方式进行登入
[root@8-mysql-m1 ~]# vim /etc/my.cnf
在[mysqld]段下添加skip-grant-tables参数,重置密码后将该参数去除
  • 重启数据库
[root@8-mysql-m1 ~]# systemctl restart mysqld
[root@8-mysql-m1 ~]# mysql	#直接输入mysql即可登入
  • 重置密码
mysql> update mysql.user set authentication_string=PASSWORD('123456') where User='root';
[root@mysql-m1 ~]# vim /etc/my.cnf
  • 重启数据库
[root@mysql-m1 ~]# systemctl restart mysqld

[root@mysql-m1 ~]# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@mysql-m1 ~]# mysql -uroot -p		#输入密码登录

【问题】
通过密码登入执行任何语句都报如下错误
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
【解决方法】
mysql> SET PASSWORD = PASSWORD('你的新密码');
mysql> ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
mysql> flush privileges;
【问题解决】
image.png

3.5:Master 创建复制授权账户

3.5.1:M1 和 M2 上都需要创建授权账户

  • Master1:
mysql> grant replication slave on *.* to 'slave'@'192.168.66.%' identified by '123456';
  • Master2:
mysql> grant replication slave on *.* to 'slave'@'192.168.66.%' identified by '123456';

3.5.2:查看 Master 中 binlog 文件名和 pos 点位

  • ① Master1
1、添加只读锁
mysql> flush tables with read lock; 先加锁,防止两边数据不一致;如果业务还未上线,这个就没有必要了

mysql> create database t;
ERROR 1223 (HY000): Can't execute the query because you have a conflicting read lock
2、查看binlog信息
mysql> show master status;
  • ② M2 和 S1 同步 M1 信息
    Master2 和 Slave1 上配置复制信息
mysql> change master to master_host='192.168.66.37',master_user='slave',master_password='123456',master_port=3306,master_log_file='mysql-bin.000004',master_log_pos=449;

mysql> change master to 
   -> master_host='192.168.66.37',     	master ip
   -> master_user='slave',         		同步用户
   -> master_password='123456',       	密码
   -> master_port=3306,       		端口
   -> master_log_file='mybinlog.000004',  master上查到到二进制日志名
   -> master_log_pos=449;     		master上面查到的位置号
  • ③ Master2
1、添加只读锁
mysql> flush tables with read lock; 先加锁,防止两边数据不一致;如果业务还未上线,这个就没有必要了

mysql> create database t;
ERROR 1223 (HY000): Can't execute the query because you have a conflicting read lock
2、查看binlog信息
mysql> show master status;
  • ④ M1 同步 M2 的信息
mysql> change master to master_host='192.168.66.38',master_user='slave',master_passwordd='123456',master_port=3306,master_log_file='mysql-bin.000005',master_log_pos=449;
  • ⑤ M1\M2\S1 启动复制线程
mysql> start slave;
mysql> show slave status \G;    //以下2项全部为Yes可正常使用
 		
Slave_IO_Running: Yes   代表成功连接到master并且下载日志
Slave_SQL_Running: Yes  代表成功执行日志中的SQL语句
  • ⑥ M1\M2 端解锁
mysql> unlock tables;  解锁
  • ⑦ 测试验证

M1 写数据,M2/S1 上可以看到
M2 写数据,M1 上可以看到
S1 上写数据,M1/M2 上无法看到

  • 测试 1:M1 上创建一个库
mysql> create database yptms;	##创建了一个yptms的数据库
Query OK, 1 row affected (0.00 sec)
  • M2 和 S1 上进行查看
    image.png
    image.png

  • 测试 2:M2 上创建一个数据库

mysql> create database test;	##创建了一个test数据库
Query OK, 1 row affected (0.01 sec)
  • M1/S1 上查看数据库
    image.png
    image.png

  • 测试 3:S1 上创建一个数据库

mysql> create database web;
Query OK, 1 row affected (0.00 sec)
  • M1/M2 上查看数据库
    image.png
    image.png

二、安装 MyCAT 实现读写分离

  • 注意:由于 MyCAT 是由 JAVA 开发的,所以在使用 MyCAT 时需要安装 JDK

1、安装配置 JDK 环境

1.1:下载 JDK

Java SE - Downloads | Oracle Technology Network | Oracle

  • 选择所需版本进行下载
    image.png

  • 选择 Linux 平台的源码包
    image.png

1.2:解压安装

  • 上传 jdk 包至服务器/soft 目录中,可通过 ftp 的方式进行上传
[root@mycat ~]# mkdir /soft
[root@mycat ~]# cd /soft
[root@mycat soft]# ls
jdk-12.0.1_linux-x64_bin.tar.gz

[root@mycat soft]# tar -zxvf jdk-12.0.1_linux-x64_bin.tar.gz -C /usr/local/

1.3:配置 jdk 环境

[root@mycat soft]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk-12.0.1
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:/usr/local/mycat/bin
export JAVA_HOME JAVA_BIN PATH CALSSPATH MYCAT_HOME

[root@mycat soft]# source /etc/profile

[root@mycat soft]# java -version	#检查是否安装成功
java version "12.0.1" 2019-04-16
Java(TM) SE Runtime Environment (build 12.0.1+12)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)

2、安装 MyCAT

2.1:下载 MyCAT

官网:http://www.mycat.io/
软件下载地址:http://dl.mycat.io/

  • 点击下载
    image.png

  • 跳转至 MyCAT GitHub 界面 http://dl.mycat.io/
    image.png

  • 选择版本,此处选择 1.6 版本
    image.png

  • 选择 Linux 版本下载
    image.png

2.2:解压安装

  • 上传软件包至服务器/soft 目录下,并解压至/usr/local 目录下
  • 注意:mycat 无需进行三部曲,直接解压到指定目录即可完成安装
    image.png
[root@mycat soft]# tar -zxvf Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz -C /usr/local/

[root@mycat soft]# cd /usr/local/mycat/
  • 目录结构
[root@mycat mycat]# ls

image.png

3、后端数据库创建授权用户

3.1:Master 数据库创建全权限用户

  • 在 Master1 上创建即可
mysql> create user root@'%' IDENTIFIED BY '123456';

mysql> GRANT ALL ON solo.* TO root@'%' IDENTIFIED BY '123456';

mysql> FLUSH PRIVILEGES;

3.2:Slave 数据库创建只读权限用户

mysql> CREATE USER readonly@'%' IDENTIFIED BY '123456';

mysql> GRANT SELECT ON solo.* TO readonly@'%' IDENTIFIED BY '123456';

mysql> FLUSH PRIVILEGES;

4:配置文件修改

[root@mycat ~]# cd /usr/local/mycat/conf/

image.png

配置文件说明:
server.xml 默认可不用修改,此文件是配置中间件登入时用到的用户名和密码,对应映射虚拟库的名称
schema.xml 配置中间件真实数据库的数据库用户名、数据库登入密码、IP、端口

4.1:配置文件 schema.xml

[root@mycat conf]# vim schema.xml
拷贝一份默认配置然后再进行修改
[root@mycat conf]# cp schema.xml{,.bak}
[root@mycat conf]# vim schema.xml

image.png

  • 注意上面的 datanode 对应下面的 datanode name,所以如果不对应则 mycat 无法启动
    image.png
    image.png

4.2:配置文件 server.xml

[root@mycat conf]# vim server.xml

image.png

4.3:主要参数说明

balance 指的负载均衡类型,目前的取值有 4 种:

  1. balance=”0”, 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
  2. balance=”1”,全部的 readHost 与 stand bywriteHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
  3. balance=”2”,所有读操作都随机的在 writeHost、readhost 上分发。
  4. balance=”3”,所有读请求随机的分发到 wiriterHost 对应的 readhost 执行,writerHost 不负担读压力
    注意:balance=3 只在 1.4 及其以后版本有,1.3 没有。

writeType 属性:

  1. writeType=”0”,所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个 writeHost,重新启动后以切换后的为准,切换记录在配置文件中:dnindex.properties.
  2. writeType=”1”,所有写操作都随机地发送到配置的 writeHost,1.5 以后废弃不推荐。

switchType 指的是切换的模式,目前的取值也有 4 种

  1. switchType=’-1’ 表示不自动切换
  2. switchType=’1’ 默认值,表示自动切换
  3. switchType=’2’ 基于 MySQL 主从同步的状态决定是否切换,心跳语句为 show slave status
  4. switchType=’3’基于 MySQLgalary cluster 的切换机制(适合集群)(1.4.1),心跳语句为 show status like ‘wsrep%’。
  • 注意:估计 Mycat1.4 才开始支持 switchType。1.3 版本配置该属性的话,日志里会报错:org.xml.sax.SAXParseException;lineNumber: 61; columnNumber: 86; Attribute “switchType” must bedeclared for element type “dataHost”。
    MyCAT 心跳检查询句配置为 show slave status ,dataHost 上定义两个新属性: switchType=”2” 与 slaveThreshold=”100”,此时意味着开启 MySQL 主从复制状态绑定的读写分离与切换机制,Mycat 心跳机制通过检测 show slave status 中的 “Seconds_Behind_Master”,”Slave_IO_Running”,”Slave_SQL_Running”三个字段来确定当前主从同步的状态及 Seconds_Behind_Master 主从复制时延,当 Seconds_Behind_Master>slaveThreshold 时,读写分离筛选器会过滤掉此 Slave 机器,防止读到很久以前的旧数据,当主节点宕机后,切换逻辑会检查 Slave 上的 Seconds_Behind_Master 是否为 0,为 0 时则表示主仅同步,可安全切换,否则不会切换。

5、启动 MyCAT

5.1:通过 system 管理服务

[root@mycat ~]# vim /etc/systemd/system/mycat.service

[Unit]
Description=mycat
After=syslog.target network.target remote-fs.target nss-lookup.target
 
[Service]
Type=forking
PIDFile=/usr/local/mycat/logs/mycat.pid
ExecStart=/usr/local/mycat/bin/mycat start
ExecReload=/usr/local/mycat/bin/mycat restart
ExecStop=/usr/local/mycat/bin/mycat stop
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

5.2:启动 MyCAT

[root@mycat ~]# systemctl daemon-reload
[root@mycat ~]# systemctl start mycat
[root@mycat ~]# systemctl status mycat

image.png
image.png
image.png

5.3:启动问题汇总

【问题 1】如果出现以下报错
FATAL | wrapper | 2019/06/30 19:12:14 | ERROR: Could not write pid file /usr/local/mycat/logs/mycat.pid: No such file or directory
【解决方案】
直接在提示的目录/usr/local/mycat/下创建 logs 目录

【问题 2】
ERROR | wrapper | 2019/06/30 19:12:14 | Unable to start JVM: No such file or directory (2)
ERROR | wrapper | 2019/06/30 19:12:14 | JVM exited while loading the application.
查看报错日志
[root@mycat ~]# cat /usr/local/mycat/logs/wrapper.log | grep ERROR
【解决方案 1】修改配置文件
[root@mycat ~]# vim /usr/local/mycat/conf/wrapper.conf
增加以下参数:
wrapper.java.command=/usr/local/jdk-12.0.1/bin/java
【解决方案 2】检查 profile 文件中 java 路径是否正确

【问题 3】
INFO | WrapperSimpleApp: Encountered an error running main: java.lang.ExceptionInInitializerError
INFO |java.lang.ExceptionInInitializerError
【原因】
以上报错提示为,数据库连接不上的问题
【解决方案】
1、 排查配置文件是否正确 server.xml,schema.xml
2、 检查 schema.xml 中配置的数据库用户密码是否正确,是否进行了访问授权

6、测试访问

  • 通过 navicat 连接测试
    image.png
    image.png
    image.png
    image.png
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    675 引用 • 535 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...