centos9+mysql8.0下mycat1.6部署

#创作灵感#

整理一下mysql代理技术,这个当时是和mysql集群部署一个项目的,一并整理出来供参考。

1、环境准备

此处使用的为M-M-SS双主双从结构集群,集群部署方法放在我的上一篇文章

防火墙可以使用firewall-cmd放行,演示环境中已提前关闭。

mycat 192.168.189.141
master1 192.168.189.137
master2 192.168.189.138

slave1

192.168.189.139
slave2 192.168.189.140

在master1与master2上创建mycat连接数据库所需账号mycatproxy

此命令只需在一台master上执行即可

(因上一篇文章设置的为二进制日志同步格式,所以后续操作部分不受影响,可以达成同时建立4个数据库账号的效果)

create user 'mycatproxy'@'192.168.189.141' identified by 'Liumuquan@123';
grant all on *.* to 'mycatproxy'@'192.168.189.141' ;
flush privileges;

1、配置JAVA环境

这里使用官方下载地址,需要使用oracle账户,国内镜像源位置变动比较频繁保存的两个都已经丢失了。

Java 存档下载 - Java SE 8 (oracle.com)

注意此处jdk版本

[root@mycat ~]# tar xf jdk-8u91-linux-x64.tar.gz -C /usr/local/
[root@mycat ~]# ln -s /usr/local/jdk1.8.0_91/ /usr/local/java
[root@mycat ~]# vim /etc/profile
#文件最下面添加环境变量
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
#保存退出
[root@mycat ~]# source /etc/profile
[root@mycat ~]# env |grep JAVA
JAVA_HOME=/usr/local/java
[root@mycat ~]# java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

2、Mycat部署

下载mycat

官网地址:

https://github.com/MyCATApache/Mycat-download-old

百度云:

链接:https://pan.baidu.com/s/1oR4poMbueCqF9-lcWyoMFw?pwd=j59f 
提取码:j59f 

配置mycat

解压

[root@mycat ~]# tar xf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /usr/local/
[root@mycat ~]# ls /usr/local/mycat/
bin  catlet  conf  lib  logs  version.txt
[root@mycat ~]# vim /usr/local/mycat/conf/server.xml
编辑mycat前端文件

注销多余账号

原文件

注释后

启动管理员账号

注释完后往上翻可以找到,原文件

修改mycat管理的库,库名称为mydb2,修改后

保存退出,mycat前端配置完成

编辑mycat后端文件

配置内容较多,建议将该文件备份一份,进入文件后清理掉所有注释行,方便后续配置,本文档没有关于分表操作内容(后端工程师按需配置,此次只是数据库代理演示)table部分也进行了删除

初步清理完的文件内容如下

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
        </schema>
        <dataNode name="dn1" dataHost="localhost1" database="db1" />
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <writeHost host="hostM1" url="localhost:3306" user="root"
                                   password="123456">
                        <readHost host="hostS2" url="192.168.1.200:3306" user="root" password="xxx" />
                </writeHost>
                <writeHost host="hostS1" url="localhost:3316" user="root"
                                   password="123456" />
        </dataHost>
</mycat:schema>

修改后

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="mydb2" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
        </schema>
        <dataNode name="dn1" dataHost="localhost1" database="mydb2" />
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="1" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="master1" url="master1:3306" user="mycatproxy" password="Liumuquan@123">
        <readHost host="slave1" url="slave1:3306" user="mycatproxy" password="Liumuquan@123" />
        </writeHost>

        <writeHost host="master2" url="master2:3306" user="mycatproxy" password="Liumuquan@123">
        <readHost host="slave2" url="slave2:3306" user="mycatproxy" password="Liumuquan@123" />
        </writeHost>

        </dataHost>
</mycat:schema>

注释版

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="管理的数据库名称" checkSQLschema="false" sqlMaxLimit="100" dataNode="数据节点名称">
        </schema>
        <dataNode name="数据节点名称" dataHost="集群名称" database="管理的数据库名称" />
        <dataHost name="集群名称" maxCon="最大连接数" minCon="最小连接一般用于数据库优化" balance="开启读写分离是1,不开启是0" writeType="工作模式备份是0,负载均衡是1" dbType="数据库类型(mysql或sqlserver等)" dbDriver="数据库驱动native为本地型" switchType="切换模式"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="master1" url="master1:3306" user="mycatproxy" password="Liumuquan@123">
        <readHost host="slave1" url="slave1:3306" user="mycatproxy" password="Liumuquan@123" />
        </writeHost>

        <writeHost host="master2" url="master2:3306" user="mycatproxy" password="Liumuquan@123">
        <readHost host="slave2" url="slave2:3306" user="mycatproxy" password="Liumuquan@123" />
        </writeHost>

        </dataHost>
</mycat:schema>
mysql8.0+mycat1.6特有步骤

mysql5+mycat1.5不需要进行此操作,此处产生原因应该为新版本特有的默认加密验证方式

ALTER USER 'mycatproxy'@'192.168.189.141' IDENTIFIED WITH mysql_native_password BY 'Liumuquan@123';

#修改mycatproxy验证方式

ALTER USER 'mycatproxy'@'192.168.189.141' IDENTIFIED BY 'Liumuquan@123' PASSWORD EXPIRE NEVER;

#设定该账号密码强制永不过期

flush privileges;
增加mysql尝试连接限制

排错操作非必要

有时会出现因为延迟反复连接导致连接溢出报错,可以通过刷新连接池解决

在master1上执行

mysqladmin flush-hosts -uroot -p'Liumuquan@123'

2、启动Mycat

[root@mycat conf]# /usr/local/mycat/bin/mycat start
Starting Mycat-server...
[root@mycat conf]# netstat -anpt | grep 8066
tcp6       0      0 :::8066                 :::*                    LISTEN      2218/java
[root@mycat conf]# ps aux | grep mycat

若启动失败可以通过mycat日志检查

安装mariadb(mysql客户端程序)登录本机

yum install -y mariadb
mysql -hmycat -uroot -p123456 -P8066
#此处为前端文件中设置的账户密码

可以对集群中的mydb2库进行修改

排错:

如果登陆上后 use mydb2;切换库命令反应极慢,并且show表报错,可以尝试将schema.xml 文件中write 节点的url改为 127.0.0.1:3306,此处原因目前不明确,这个方式纯属经验积累,查找了一下没有相关文档希望有大佬可以留言讨论。

相关推荐

  1. CentOS 7安装Mysql+Mycat

    2024-07-15 16:42:02       54 阅读
  2. Centos7.9和Debian12部署Minio详细流程

    2024-07-15 16:42:02       55 阅读
  3. Centos安装MySQL

    2024-07-15 16:42:02       39 阅读
  4. CentOS7.9环境安装mysql-8.0.32详解

    2024-07-15 16:42:02       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 16:42:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 16:42:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 16:42:02       58 阅读
  4. Python语言-面向对象

    2024-07-15 16:42:02       69 阅读

热门阅读

  1. 享元模式(大话设计模式)C/C++版本

    2024-07-15 16:42:02       19 阅读
  2. html 关闭信息窗口

    2024-07-15 16:42:02       22 阅读
  3. vue3+springboot+minio,实现文件上传功能

    2024-07-15 16:42:02       20 阅读
  4. 使用Python进行桌面应用程序开发

    2024-07-15 16:42:02       16 阅读
  5. 启动 zabbix 相关服务

    2024-07-15 16:42:02       19 阅读
  6. 【AI应用探讨】—KAN应用场景

    2024-07-15 16:42:02       23 阅读
  7. 【无标题】

    2024-07-15 16:42:02       19 阅读
  8. 租用海外服务器需要考虑哪些因素

    2024-07-15 16:42:02       18 阅读
  9. 1448. 统计二叉树中好节点的数目

    2024-07-15 16:42:02       21 阅读