centos7 mysql读写分离_CentOS 7 上配置 Mycat 对 MySQL 的读写分离

前言

Mycat 是一个数据库的分区分表中间件,支持多种数据库,也支持读写分离,本文主要描述一下对 MySQL 进行读写分离的基本配置。

环境说明

CentOS 7(Minimal Install)

$cat /etc/system-release

CentOS Linux release 7.7.1908 (Core)

本例使用用户 admin 进行安装,请参考 CentOS 7 安装后的系统初始化

PXC 的配置如下

Node

Host

IP Addr

Descprition

Node1

pxc1

10.11.0.81/24

集群节点1

Node2

pxc2

10.11.0.82/24

集群节点2

Node3

pxc3

10.11.0.83/24

集群节点3

PXC 中新建数据库和表如下

Schema

Table

Description

percona

example

示例表

安装

Mycat 依赖 Java,所以需要安装 Java。

安装 Java

安装软件包

$sudoyum installjava-1.8.0-openjdk

配置 JAVA_HOME 环境变量

$sudovi /etc/profile

在 profile 配置的最后,追加 java 的目录

export JAVA_HOME=/usr

:wq 保存并退出。

刷新配置,使环境变量生效

$source /etc/profile

最后查看一下 JAVA_HOME 的环境配置

$echo $JAVA_HOME

/usr

也可以再查看一下 Java 的版本

$java -version

openjdk version "1.8.0_242"

OpenJDK Runtime Environment (build 1.8.0_242-b08)

OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)

安装 Mycat

下载 Mycat 安装包到本地

$cd ~

$curl -O http://dl.mycat.io/1.6.7.4/Mycat-server-1.6.7.4-release/Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz

解压 Mycat

$tar -zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz

解压的文件夹是 mycat , 接下来,将 mycat 文件夹剪切到 /usr/local 目录中

$sudo mvmycat/ /usr/local/

配置 Mycat 的环境变量

$sudovi /etc/profile

在 profile 的最后,追加 MYCAT_HOME 环境变量

export JAVA_HOME=/usr

export MYCAT_HOME=/usr/local/mycat

刷新配置,使环境变量生效

$source /etc/profile

查看一下 MYCAT_HOME 环境变量

$echo $MYCAT_HOME

/usr/local/mycat

至此, Mycat 安装完毕,接下来我们需要进行配置。

读写分离配置

Mycat 的配置文件在 $MYCAT_HOME/conf 文件夹内,对于读写分离,主要配置以下文件

schema.xml 配置逻辑库表和数据节点

server.xml 配置服务器权限

配置 schema.xml

schema.xml 主要是配置 mycat 与后端数据库的对应关系

$cd $MYCAT_HOME/conf

$cpschema.xml schema.xml.orgi

$vi schema.xml

配置文件例子如下

select user()

这里的 writeHost 和 readHost 是代表后端真实的 MySQL 数据库的连接参数

说明

本例配置了两个 writeHost ;

如果第一个 writeHost 连接不上(或者宕机),会继续用第二个 writeHost 作为写节点;

事务内部的一切操作都会走写节点;

配置 server.xml

$cd $MYCAT_HOME/conf

$cpserver.xml server.xml.orgi

$vi server.xml

主要配置如下

3306

9066

secret

percona

percona

说明:

本例修改了默认的 serverPort 由原来的 8066 改为默认的 3306,您可以根据自己的需要更改。

本例新建了连接 mycat 的 root 用户(用户名可以修改)

启动 mycat

$cd $MYCAT_HOME

$bin/mycat start

Starting Mycat-server...

可以看到 Mycat-server 启动了

查看启动日志

$cd $MYCAT_HOME

$taillogs/wrapper.log

...

...INFO | jvm 1 | 2020/02/17 10:57:33 | MyCAT Server startup successfully. see logs in logs/mycat.log

最后日志写的 MyCAT Server startup successfully 表示启动成功

关闭 mycat

$cd $MYCAT_HOME

$bin/mycat stop

Stopping Mycat-server...

Stopped Mycat-server.

可以看到 Mycat-server 停止了

查看一下日志

$cd $MYCAT_HOME

$taillogs/wrapper.log

...

...STATUS | wrapper | 2020/02/17 11:00:27 | TERM trapped. Shutting down.

STATUS | wrapper | 2020/02/17 11:00:28 |

连接 mycat

本例使用 MySQL 5.7 客户端连接

首先安装 MySQL 的 yum 源

$sudoyum installhttps://repo.percona.com/yum/percona-release-latest.noarch.rpm

之后安装 MySQL client

$sudoyum installPercona-XtraDB-Cluster-client-57

安装完 mysql 客户端,可以本机登录 mycat

注意

连接 mycat 的 mysql 的命令行参数不能缺少 -h 参数,即使是连接本机

$mysql -h 127.0.0.1 -u root -p

Enter password:Welcome to the MySQL monitor. Commands end with ;or \g.

...

...Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>show databases;

+----------+

| DATABASE |

+----------+

| percona |

+----------+

1 row in set (0.00 sec)mysql>exit

Bye

连接 mycat 管理口

管理口默认为 9066,为 server.xml 中 managerPort 属性的值

$mysql -h 127.0.0.1 -P 9066 -u root -p

连接成功之后,可以通过 show @@help; 命令,查看支持的管理命令

mysql>show @@help;

+------------------------------------------+----------------------------------+

| STATEMENT | DESCRIPTION |

+------------------------------------------+----------------------------------+

| show @@time.current | Report current timestamp |

| ... | ... |

| ... | ... |

| ... | ... |

| clear @@slow where datanode = ? | Clear slow sql by datanode |

+------------------------------------------+----------------------------------+

59 rows in set (0.01 sec)

读写分离测试

修改日志级别

主要是使用查日志来查看效果,需要先将 mycat 的 log4j2.xml 的日志级别修改为 debug 级别。

$cd $MYCAT_HOME

$bin/mycat stop

$vi conf/log4j2.xml

找到如下的节点并修改

添加 这个节点,表示对 io.mycat 包的日志级别为 debug.

:wq 保存修改之后,重新启动一下 Mycat

$cd $MYCAT_HOME

$bin/mycat start

Starting Mycat-server...

测试

连接到 mycat,并使用测试数据库执行一个查询语句。

$mysql -h 127.0.0.1 -u root -p

mysql>use percona;

mysql>select * from example;

之后查询日志

$grep 'select * from example' $MYCAT_HOME/logs/mycat.log

...

...2020-02-17 15:56:41.058 DEBUG ...

attachment=node1{select * from example}, respHandler=SingleNodeHandler

[node=node1{select * from example}, packetId=4], host=10.11.0.82, port=3306,

statusSync=...]

可以看到,host=10.11.0.82 说明 SQL 语句是读节点进行查询

再添加一条插入语句,测试写入节点

mysql>insert into example(node_id, node_name) values (2, 'percona2');

之后查询日志

$grep 'insert into example' $MYCAT/logs/mycat.log

...

...2020-02-17 15:58:41.486 DEBUG ...

[node=node1{insert into example(node_id, node_name) values (2, 'percona2')},

packetId=1], host=10.11.0.81, port=3306, statusSync=...]

可以看到,host=10.11.0.81 说明 SQL 语句是在写节点执行的,读写分离没有问题。

总结

Mycat 还有很多特性,本例只示例了 MySQL 的读写分离。

参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值