1 分库分表
1 数据量到达一定程序,需要拆分
-水平拆
-垂直拆
2 水平分库,垂直分库
3 水平分表,垂直分表
4 垂直分库:不同业务的表,放到不同库
垂直分表:user表有10个字段1000万条数据,使用一对一做垂直分表
5 水平分库:以及分成4个表,分到4个库中
水平分表:4000w条数据,分到4个表中
6 分库分表方案
-hash取模和range范围方案
-range范围分,会出现热点问题,简洁好操作,扩容不需要迁移数据
-hash不存在热点问题,需要hash函数,操作复杂,但扩容迁移数据痛苦
7 mysql:做分库分表
-开源数据库中间件-MyCat,做分库分表
8 Mycat:基于 Java 开发的,实现了 MySQL 公开的二进制传输协议,巧妙地将自己伪装成一个 MySQL Server,目前市面上绝大多数 MySQL 客户端工具和应用都能兼容
9 centos上安装Mycat
-jdk1.8以上
10 centos上安装jdk 1.8
-下载tar.gz,创建文件夹
mkdir /usr/local/java
-解压
tar -zxvf jdk-8u291-linux-x64.tar.gz
-配置环境变量
#vim 打开profile
vim /etc/profile
#在最后一行输入
export JAVA_HOME=/usr/local/java/jdk1.8.0_291
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
#使配置生效
source /etc/profile
#检查
java -version
11 安装Mycat
解压即用
./mycat start
./mycat stop
./mycat console # 前台启动,错误会显示
12 在两台机器上安装mysql
docker run -di --name=test1_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
docker run -di --name=test2_mysql -p