mysql中间件代理服务器mycat

一.mycat应用场景

Mycat适用的场景很丰富,以下是几个典型的应用场景

  • 单纯的读写分离,此时配置最为简单,支持读写分离,主从切换

  • 分表分库,对于超过1000万的表进行分片,最大支持1000亿的单表分片

  • 多租户应用,每个应用一个库,但应用程序只连接Mycat,从而不改造程序本身,实现多租户化报表系统,借助于Mycat的分表能力,处理大规模报表的统计

  • 替代Hbase,分析大数据,作为海量数据实时查询的一种简单有效方案,比如100亿条频繁查询的记录需要在3秒内查询出来结果,除了基于主键的查询,还可能存在范围查询或其他属性查询,此时Mycat可能是最简单有效的选择

二.mycat 可以简单概括为

  • 一个彻底开源的,面向企业应用开发的大数据库集群

  • 支持事务、ACID、可以替代MySQL的加强版数据库

  • 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群

  • 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server

  • 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品

  • 一个新颖的数据库中间件产品

三.mycat部署

1.mycat安装目录结构说明

  • bin :mycat命令,启动、重启、停止等运行目录

  • catlet: catlet为Mycat的一个扩展功能

  • conf  :mycat 配置信息,重点关注

  • lib:mycat引用的jar包,Mycat是java开发的

  • logs日志文件,包括Mycat启动的日志和运行的日志

  • version.txt :mycat版本说明

2.Mycat的常用配置文件

Mycat的配置文件都在conf目录里面,这里介绍几个常用的文件:

  • server.xml :Mycat软件本身相关的配置文件,设置账号、参数等

  • schema.xml:Mycat对应的物理数据库和数据库表的配置,读写分离、高可用、分布式策略定制、节点控制

  • rule.xml:Mycat分片(分库分表)规则配置文件,记录分片规则列表、使用方法等

3.Mycat日志

Mycat的日志文件都在logs目录里面

  • wrapper.log :mycat启动日志

  • mycat.log :mycat详细工作日志

4.mycat 实现读写分离

环境准备

mycat服务器上不能装mysql(或关闭mysql)

master服务器 192.168.100.146
slave1服务器 192.168.100.150
mycat服务器 192.168.100.254
client 192.168.100.111

初始化环境

#每台服务器上都初始化,关闭防火墙
systemctl stop --now firewalld
systemctl disable firewalld
setenforce 0

部署主从复制

#主mysql服务器配置(192.168.100.146

vim  /etc/my.cnf
#修改文件
[mysqld]
server_id=146
log-bin=/data/mysql-bin
mkdir /data/ -p
chown mysql.mysql /data/ -R
systemctl restart mysqld

select @@server_id;
#可以查看serverid  默认都是1
show master status;
#查看二进制日志位置
grant replication slave on *.* to hx@'192.168.100.%' identified by '123';
#建立复制用户

show processlist;
#查看线程

#从mysql服务器配置(192.168.100.150)

vim  /etc/my.cnf

[mysqld]
server_id=150
log-bin=/data/mysql-bin
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
mkdir /data/   -p
#建立文件夹
chown mysql.mysql /data/ -R
#注意修改权限
systemctl restart mysqld
下面修改配置 命令较长可以使用帮助
help change master to

CHANGE MASTER TO
  MASTER_HOST='192.168.100.146',
  MASTER_USER='hx',
  MASTER_PASSWORD='123',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=448;
show slave status\G;
#查看设置的状态
Seconds_Behind_Master: NULL    #目前数据差

start slave;
#开启线程,开启主从复制

create database db1;
#在主节点上建立数据测试

安装mycat(192.168.100.254)

(1)主机上安装java(mycat基于java)
#yum安装java
yum install java -y #确认安装成功 java -version

2)切换至opt目录,下载mycat安装包(二进制包)
[root@localhost ~]#cd /opt
(3)创建/apps文件夹,并解压mycat包至/apps下
mkdir /apps
tar zxvf /opt/Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz -C /apps/
4)设置变量环境
echo 'PATH=/apps/mycat/bin:$PATH' > /etc/profile.d/mycat.shsource /etc/profile.d/mycat.sh
5)启动mycat,查看日志文件,最后可以看到启动成功
mycat start

tail -f /apps/mycat/logs/wrapper.log
#启动成功日志末尾会出现successfully

(6)客户端连接数据库
#这里密码初始为123456   需要加端口
mysql -uroot -p123456 -h 192.168.100.146 -P8066

修改 mycat 配置文件 /apps/mycat/conf/server.xml

[root@localhost ~]#vim /apps/mycat/conf/server.xml

#去掉44行行注释,对应的在51行行末注释,删除50行行末注释,5 * 60 * 1000L; //连接空>    闲检查

#修改45行端口号为3306
45 <property name="serverPort">3306</property>

#配置Mycat的连接信息(账号密码),在110 和111行, 可以修改,这边不修改了

修改 mycat 配置文件/apps/mycat/conf/schema.xml

schema.xml是最主要的配置项,此文件关联mysql读写分离策略,读写分离、分库分表策略、分片节点都是在此文件中配置的.MyCat作为中间件,它只是一个代理,本身并不进行数据存储,需要连接后端的MySQL物理服务器,此文件就是用来连接MySQL服务器的。
vim  /apps/mycat/conf/schema.xml
#删除所有内容,重新写入以下
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
        <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema>
        <dataNode name="dn1" dataHost="localhost1" database="hellodb" />
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
                  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <writeHost host="host1" url="192.168.100.146:3306" user="root" password="123">
                 <readHost host="host2" url="192.168.100.150:3306" user="root" password="123"/>
                </writeHost>
        </dataHost>
</mycat:schema>

 

主服务器上授权

mysql -uroot -p123
#授权
GRANT ALL ON *.* TO 'root'@'192.168.100.%' IDENTIFIED BY '123';

#查看创建成功
use mysql;
select user,host from user;

重启mycat服务,客户机连接mycat

1)在mycat服务器上,重启mycat服务,查看启动日志,文末出现successfully
mycat restart  
tail -f /apps/mycat/logs/wrapper.log

(2)查看3306端口,可以监听到主从服务器(192.168.100.146192.168.100.150)
 [root@localhost ~]# ss -antp|grep 3306

3)在客户机上登录mycat,这时可以不加端口直接进入数据库了
mysql -uroot -p123456 -h 192.168.100.254
#看是否能查到表  

 

 

 

posted @ 2024-07-05 16:24  hx_ky36  阅读(8)  评论(1编辑  收藏  举报