1. MyCat****简介
在整个 IT 系统架构中,数据库是非常重要,通常又是访问压力较大的一个服务,除了在程序开发的本身做优化,如: SQL 语句优化、代码优化,数据库的处理本身优化也是非常重要的。主从、热备、分表分库等都是系统发展迟早会遇到的技术问题问题。
Mycat 是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的服务器,前端用户可以把它看作是一个数据库代理(类似于 Mysql Proxy ),用 MySQL 客户端工具和命令行访问,而其后端可以用 MySQL 原生协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为 N 个小表,存储在后端 MySQL 服务器里或者其他数据库里。
2. Mycat****特点
官方网站 http://www.mycat.org.cn/
Mycat 不适合的应用场景
- 设计使用 Mycat 时有非分片字段查询
- 设计使用 Mycat 时有分页排序
- 设计使用 Mycat 时如果要进行表 JOIN 操作,要确保表的关联字段具有相同的数据分布,否则请慎重使用 Mycat ,可以考虑放弃!
- 设计使用 Mycat 时如果有分布式事务,得先看是否得保证事务得强一致性,否则请慎重使用 Mycat ,可以考虑放弃!
3. Mycat****实践
mycat 是基于 java 语言开发,先要安装 java 环境 不要安装过高版本的 java 版本,否则会发生报错
root @rocky9-18 \~ \] # yum install java-1.8.0-openjdk
软件获取
\[root @rocky9-18 \~ \] # wget **由于限制下载不了 我这里用之前已经下载好的包安装**
\[root @rocky9-18 \~ \] # mkdir /data/softs -p
\[root @rocky9-18 \~ \] # cd /data/softs/
\[root @rocky9-18 softs\] # ls
# 解压
\[root @rocky9-18 \~ \] # mkdir /apps
\[root @rocky9-18 \~ \] # tar xf /data/softs/Mycat-server-1.6.7.6-release-20220524173810-linux.tar.gz -C /apps/
定制环境变量 # 写 path
\[root@rocky9-18 \~\] # vim /etc/profile.d/mycat.sh 增加内容: PATH = /apps/mycat/bin: $PATH
\[root@rocky9-18 \~\] # source /etc/profile.d/mycat.sh
\[root @rocky9-18 \~ \] # mycat start #启动Mycat服务
\[root @rocky9-18 \~ \] # mycat status # 查看运行状态
Mycat-server is running (2497).
\[root @rocky9-18 \~ \] # netstat -tnulp \| grep java

\[root @rocky9-18 \~ \] # cat /apps/mycat/conf/**server.xml** # 查看默认用户名和密码端口等信息


\[root @rocky9-18 \~ \] # **mysql -uroot -p123456 -h 127.0.0.1 -P8066** #连接mycat
## **4. 读写分离架构解读**
主机:10.0.0.18 角色:mycat
主机:10.0.0.12 角色:master 8.0.41版本
主机:10.0.0.15 角色:slave 8.0.41版本
## **5. 配置****MySQL****主从环境**
**详见本课题的主从复制 略**
**6. 配置** **Mycat** **连接账号**
在 master 节点上创建账号并授权,该帐号会被同步到 slave 节点
mysql\> create user 'mycater' @ '10.0.0.%' IDENTIFIED BY '123456' ;
mysql\> GRANT ALL ON db1.\* TO 'mycater' @ '10.0.0.%' ;
mysql\> flush privileges;
修改 server.xml **配置 mycat 连接后端数据库的账号密码**
直接将下面内容,覆盖到指定文件即可
\[root @rocky9-18 mycat\] # vim /apps/mycat/conf/server.xml