MySQL分库分表与MyCAT
分库分表
分库:拆分数据库,当单台数据库服务存储容量不足时,或者并发量过高,单机资源不足。
分表:拆分数据表,当单表数量过大时,索引(B+树)查询效率会变低,2千万数据左右。
方法
垂直分库:将原来一个库中的表分到不同库中。
垂直分表:将原来的表,按字段拆分成多个表。
水平分库:按照数据内容拆分,例如按年月拆分数据、数据范围拆分、取模运算
水平分表:也是按照内容拆分表
使用MyCAT分布式集群中间件,可以实现分库、分表、读写分离、负载均衡、故障(屏蔽)转移。
MyCAT支持MySQL网络协议,可以使用mysql的客户端进行操作。
使用Java语言开发,安装Java运行环境(jdk)
配置文件常见格式
ini:xx.ini/xx.conf/xx.cnf/xx.repo
xml:标签语言,Java项目,大数据
JSON:JavaScript对象表示法。API接口数据交换、配置文件、存储简单结构化数据等。
yaml:采用缩进表示层级关系,语法简洁,可读性强,支持复杂数据结构,如列表、字典等。
数据源:MyCAT用于连接后端的MySQL数据库
用户名、密码、IP
MyCAT集群设置:对后端MySQL进行组合设置,例如主、从、只读、读写、分类、分表
clusters:设置集群
MyCAT用户设置:users
MyCAT逻辑库设置:schemas
mycat注释指令:
清空所有配置
/*+ mycat:resetConfig{} */;
创建mycat用户
/*+ mycat:createUser{
"username":"zj",
"password":"123456",
"ip":"null",
"transactionType":"xa"}
*/;
查看mycat的用户
/*+ mycat:showUsers */;
删除用户
/*+ mycat:dropUser{ "username":"zj"} */;
创建数据源
/*+ mycat:createDataSource{
"dbType":"mysql",
"idleTimeout":60000,
"initSqls":[],
"initSqlsGetConnection":true,
"instanceType":"READ_WRITE",
"maxCon":1000,
"maxConnectTimeout":3000,
"maxRetryCount":5,
"minCon":1,
"name":"dc1",
"password":"root123",
"type":"JDBC",
"url":"jdbc:mysql://127.0.0.1:3306?useUnicode=true&serverTimezone=UTC&characterEncoding=UTF-8",
"user":"root",
"weight":0}
*/;
查看数据源
/*+ mycat:showDataSources{} */;
删除数据源
/*+ mycat:dropDataSource{
"dbType":"mysql",
"idleTimeout":60000,
"initSqls":[],
"initSqlsGetConnection":true,
"instanceType":"READ_WRITE",
"maxCon":1000,
"maxConnectTimeout":3000,
"maxRetryCount":5,
"minCon":1,
"name":"dc1",
"type":"JDBC",
"weight":0}
*/;
MyCAT安装步骤
1.安装好mysql和jdk1.8
(1)安装mysql
配置yum源
mount /dev/cdrom /meida
cd /etc/yum.repos.d
关闭防火墙,沙盒
systemctl stop firewalld
systemctl
getenforce 0
set
mysql 安装
wget 192.168.56.200/Software/mysql_install.sh
一键安装
bash mysql_install.sh
重新加载
source /etc/profile
(2)安装jdk1.8
yum -y install java-1.8.0-openjdk.x86_64
测试安装,显示java版本则为安装成功
java -version
显示如下:
openjdk version "1.8.0_392"
OpenJDK Runtime Environment Corretto-8.392.08.1 (build 1.8.0_392-b08)
OpenJDK 64-Bit Server VM Corretto-8.392.08.1 (build 25.392-b08, mixed mode)
2.安装MyCAT
(1)创建多级目录
mkdir -p /usr/local/src
(2)进入目录
cd /usr/local/src
(3)下载
如果没有wget,则安装wget
yum -y install wget
a.第三方下载
wget https://download.topunix.com/MySQL/Software-Cluster/Software-Mycat/Mycat2/mycat2-install-template-1.20.zip
wget https://download.topunix.com/MySQL/Software-Cluster/Software-Mycat/Mycat2/mycat2-1.21-release-jar-with-dependencies.jar
b.局域网下载(192.168.56.200)
wget http://192.168.56.200/Software/mycat2-install-template-1.21.zip
wget http://192.168.56.200/Software/mycat2-1.21-release-jar-with-dependencies.jar
3.解压并移动到目录下
(1)解压
yum -y install unzip
unzip mycat2-install-template-1.21.zip
(2)移动到/usr/local目录下
mv mycat ../或mv mycat /usr/local
(3)修改权限
把bin目录文件加执行权限
cd /usr/local/mycat/
chmod +x bin/*
(4)把所需的jar复制到mycat/lib目录
cp /usr/local/src/mycat2-1.21-release-jar-with-dependencies.jar /usr/local/mycat/lib/
mycat2-1.21-release-jar-with-dependencies.jar是MyCAT2依赖文件,缺失会导致MyCAT启动失败
4.启动一个3306的MySQL
service mysqld start #启动mysql服务
mysql -uroot -proot123 #能够连接而上mysql
5.配置物理库地址
配置文件位置:/usr/local/mycat/conf/datasources/prototypeDs.datasource.json
vim /usr/local/mycat/conf/datasources/prototypeDs.datasource.json
{
"dbType": "mysql",
"idleTimeout": 60000,
"initSqls": [],
"initSqlsGetConnection": true,
"instanceType": "READ_WRITE",
"maxCon": 1000,
"maxConnectTimeout": 3000,
"maxRetryCount": 5,
"minCon": 1,
"name": "prototypeDs",
"password": "root123", #把密码改成自己的
"type": "JDBC",
"url": "jdbc:mysql://localhost:3306?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
"user": "root",
"weight": 0
}
6.启动MyCAT
cd /usr/local/mycat/bin
./mycat start #启动
./mycat stop #停止
./mycat console #前台运行
./mycat restart #重启
./mycat status #查看启动状态
7.可以配置MyCAT和MySQL的环境变量,方便之后执行
vim /etc/profile
在文件末行添加:
export MYCAT_PATH=/usr/local/mycat
export MYSQL_PATH=/usr/local/mysql
export PATH="$MYSQL_PATH/bin:$MYCAT_PATH/bin:$PATH"
ESC:wq退出文件:重新加载配置文件
source /etc/profile
8.连接MyCAT
MyCAT的默认用户是:root
初始密码是:123456
端口号是:8066
使用MySQL默认客户端或者mycli命令行登陆MyCAT
mysql -uroot -p123456 -P8066 -h127.0.0.1或者mycli -uroot -P8066 -h"127.0.0.1"