提交
This commit is contained in:
parent
1b346ebb99
commit
04ac094e12
@ -382,6 +382,14 @@ echo 'Hello, World!'
|
|||||||
|
|
||||||
`#!` 和 `/bin/bash` 之间的空格无关紧要。你也可以使用 `#!/bin/bash`。
|
`#!` 和 `/bin/bash` 之间的空格无关紧要。你也可以使用 `#!/bin/bash`。
|
||||||
|
|
||||||
|
## yum
|
||||||
|
|
||||||
|
### 改阿里源
|
||||||
|
|
||||||
|
```shell
|
||||||
|
yum install -y wget && mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup && wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && yum clean all && yum makecache
|
||||||
|
```
|
||||||
|
|
||||||
## 安装MySQL
|
## 安装MySQL
|
||||||
|
|
||||||
有些Linux会自带MariaDB数据库,所以需要先卸载
|
有些Linux会自带MariaDB数据库,所以需要先卸载
|
||||||
@ -597,7 +605,7 @@ error: Failed dependencies:
|
|||||||
libcrypto.so.10(libcrypto.so.10)(64bit) is needed by mysql-community-libs-compat-5.7.41-1.el7.x86_64
|
libcrypto.so.10(libcrypto.so.10)(64bit) is needed by mysql-community-libs-compat-5.7.41-1.el7.x86_64
|
||||||
libssl.so.10()(64bit) is needed by mysql-community-libs-compat-5.7.41-1.el7.x86_64
|
libssl.so.10()(64bit) is needed by mysql-community-libs-compat-5.7.41-1.el7.x86_64
|
||||||
libssl.so.10(libssl.so.10)(64bit) is needed by mysql-community-libs-compat-5.7.41-1.el7.x86_64
|
libssl.so.10(libssl.so.10)(64bit) is needed by mysql-community-libs-compat-5.7.41-1.el7.x86_64
|
||||||
dnf install https://repo.almalinux.org/almalinux/8/AppStream/x86_64/os/Packages/compat-openssl10-1.0.2o-4.el8_6.x86_64.rpm
|
dnf install -y https://repo.almalinux.org/almalinux/8/AppStream/x86_64/os/Packages/compat-openssl10-1.0.2o-4.el8_6.x86_64.rpm
|
||||||
rpm -ivh mysql-community-devel-5.7.41-1.el7.x86_64.rpm
|
rpm -ivh mysql-community-devel-5.7.41-1.el7.x86_64.rpm
|
||||||
# 如果出现以下错误
|
# 如果出现以下错误
|
||||||
error: Failed dependencies:
|
error: Failed dependencies:
|
||||||
@ -617,6 +625,21 @@ rpm -ivh mysql-community-server-5.7.41-1.el7.x86_64.rpm
|
|||||||
/usr/lib/tmpfiles.d/mysql.conf:23: Line references path below legacy directory /var/run/, updating /var/run/mysqld → /run/mysqld; please update the tmpfiles.d/ drop-in file accordingly.
|
/usr/lib/tmpfiles.d/mysql.conf:23: Line references path below legacy directory /var/run/, updating /var/run/mysqld → /run/mysqld; please update the tmpfiles.d/ drop-in file accordingly.
|
||||||
vim /usr/lib/tmpfiles.d/mysql.conf
|
vim /usr/lib/tmpfiles.d/mysql.conf
|
||||||
# 将/var/run/mysqld 改为 /run/mysqld
|
# 将/var/run/mysqld 改为 /run/mysqld
|
||||||
|
# 如果出现以下提示
|
||||||
|
error: Failed dependencies:
|
||||||
|
libcrypt.so.1()(64bit) is needed by mysql-community-server-5.7.41-1.el7.x86_64
|
||||||
|
libcrypt.so.1(GLIBC_2.2.5)(64bit) is needed by mysql-community-server-5.7.41-1.el7.x86_64
|
||||||
|
dnf install -y libxcrypt-compat
|
||||||
|
# 如果出现以下提示
|
||||||
|
error: Failed dependencies:
|
||||||
|
/usr/bin/perl is needed by mysql-community-server-5.7.41-1.el7.x86_64
|
||||||
|
perl(Getopt::Long) is needed by mysql-community-server-5.7.41-1.el7.x86_64
|
||||||
|
perl(strict) is needed by mysql-community-server-5.7.41-1.el7.x86_64
|
||||||
|
dnf install -y perl.x86_64
|
||||||
|
# 如果出现以下提示
|
||||||
|
error: Failed dependencies:
|
||||||
|
net-tools is needed by mysql-community-server-5.7.41-1.el7.x86_64
|
||||||
|
dnf install net-tools -y
|
||||||
# 再次执行 rpm -ivh mysql-community-server-5.7.41-1.el7.x86_64.rpm
|
# 再次执行 rpm -ivh mysql-community-server-5.7.41-1.el7.x86_64.rpm
|
||||||
rpm -ivh mysql-community-embedded-compat-5.7.41-1.el7.x86_64.rpm
|
rpm -ivh mysql-community-embedded-compat-5.7.41-1.el7.x86_64.rpm
|
||||||
|
|
||||||
|
|||||||
@ -165,7 +165,7 @@ mysqldump -uroot -p -B test > test.sql
|
|||||||
|
|
||||||
11. 安装数据库
|
11. 安装数据库
|
||||||
```powershell
|
```powershell
|
||||||
mysqld --install
|
mysqld --install <服务名>
|
||||||
```
|
```
|
||||||
|
|
||||||
12. 启动服务
|
12. 启动服务
|
||||||
@ -196,7 +196,7 @@ mysqldump -uroot -p -B test > test.sql
|
|||||||
mysqld --remove
|
mysqld --remove
|
||||||
```
|
```
|
||||||
|
|
||||||
# Linux 安装MySQL客户端
|
# Linux 安装MySQL
|
||||||
|
|
||||||
## 安装
|
## 安装
|
||||||
|
|
||||||
@ -258,6 +258,56 @@ mysqldump -uroot -p -B test > test.sql
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Linux 卸载MySQL
|
||||||
|
|
||||||
|
## 二进制方式
|
||||||
|
|
||||||
|
```shell
|
||||||
|
rpm -qa | grep -i mysql
|
||||||
|
|
||||||
|
# 如下所示
|
||||||
|
mysql-community-release-el7-5.noarch
|
||||||
|
mysql-community-libs-5.6.51-2.el7.x86_64
|
||||||
|
mysql-community-client-5.6.51-2.el7.x86_64
|
||||||
|
mysql-community-server-5.6.51-2.el7.x86_64
|
||||||
|
mysql-community-common-5.6.51-2.el7.x86_64
|
||||||
|
|
||||||
|
systemctl stop mysqld
|
||||||
|
|
||||||
|
rpm -ev mysql-community-release-el7-5.noarch
|
||||||
|
rpm -ev mysql-community-libs-5.6.51-2.el7.x86_64
|
||||||
|
rpm -ev mysql-community-client-5.6.51-2.el7.x86_64
|
||||||
|
rpm -ev mysql-community-server-5.6.51-2.el7.x86_64
|
||||||
|
rpm -ev mysql-community-common-5.6.51-2.el7.x86_64
|
||||||
|
|
||||||
|
find / -name mysql
|
||||||
|
|
||||||
|
# 如下所示
|
||||||
|
/var/lib/mysql
|
||||||
|
/var/lib/mysql/mysql
|
||||||
|
/usr/local/mysql
|
||||||
|
/usr/lib64/mysql
|
||||||
|
/usr/share/mysql
|
||||||
|
/usr/bin/mysql
|
||||||
|
/etc/logrotate.d/mysql
|
||||||
|
/etc/selinux/targeted/active/modules/100/mysql
|
||||||
|
|
||||||
|
rm -rf /var/lib/mysql
|
||||||
|
rm -rf /var/lib/mysql/mysql
|
||||||
|
rm -rf /usr/local/mysql
|
||||||
|
rm -rf /usr/lib64/mysql
|
||||||
|
rm -rf /usr/share/mysql
|
||||||
|
rm -rf /usr/bin/mysql
|
||||||
|
rm -rf /etc/logrotate.d/mysql
|
||||||
|
rm -rf /etc/selinux/targeted/active/modules/100/mysql
|
||||||
|
|
||||||
|
rm -rf /etc/my.cnf
|
||||||
|
|
||||||
|
rpm -qa | grep -i mysql
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# MySQL 客户端
|
# MySQL 客户端
|
||||||
|
|
||||||
执行脚本
|
执行脚本
|
||||||
@ -268,6 +318,8 @@ source <脚本绝对路径>
|
|||||||
|
|
||||||
# 用户和权限
|
# 用户和权限
|
||||||
|
|
||||||
|
## 用户各项权限
|
||||||
|
|
||||||
```mysql
|
```mysql
|
||||||
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
|
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
|
||||||
GRANT Usage ON *.* TO 'username'@'%';
|
GRANT Usage ON *.* TO 'username'@'%';
|
||||||
@ -303,6 +355,20 @@ update user set host = '127.0.0.1' where user = 'root' and host = '%';
|
|||||||
flush privileges;
|
flush privileges;
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 修改root密码
|
||||||
|
|
||||||
|
```mysql
|
||||||
|
alter user 'root'@'localhost' IDENTIFIED BY '123456';
|
||||||
|
```
|
||||||
|
|
||||||
|
## 允许远程登录
|
||||||
|
|
||||||
|
```mysql
|
||||||
|
grant all privileges on *.* to root@'%' identified by "123456";
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 存储过程和函数
|
# 存储过程和函数
|
||||||
|
|
||||||
## 函数
|
## 函数
|
||||||
@ -318,3 +384,334 @@ select @@log_bin_trust_function_creators;
|
|||||||
set GLOBAL log_bin_trust_function_creators=1;
|
set GLOBAL log_bin_trust_function_creators=1;
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# 主从搭建
|
||||||
|
|
||||||
|
## 主节点配置
|
||||||
|
|
||||||
|
1. 修改/etc/my.cnf文件,并重启服务
|
||||||
|
```conf
|
||||||
|
[mysqld]
|
||||||
|
server-id=10 #服务器id (主从必须不一样)
|
||||||
|
log-bin=/var/lib/mysql/master10-bin #打开日志(主机需要打开)
|
||||||
|
|
||||||
|
binlog-ignore-db=mysql #不给从机同步的库(多个写多行)
|
||||||
|
binlog-ignore-db=information_schema
|
||||||
|
binlog-ignore-db=performance_schema
|
||||||
|
binlog-ignore-db=sys
|
||||||
|
```
|
||||||
|
|
||||||
|
注意:log-bin等存储路径的配置,其父路径的属主和组必须是是mysql,且一般权限设置为777。
|
||||||
|
|
||||||
|
如果更改了mysql的存储目录,建议参考默认配置的目录,将新目录的属主和权限也做相应更改
|
||||||
|
|
||||||
|
2. 创建从节点访问用户(mysql上执行)
|
||||||
|
```mysql
|
||||||
|
CREATE USER 'slave'@'10.181.110.11' IDENTIFIED BY 'slave.8888';
|
||||||
|
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'10.181.110.11';
|
||||||
|
select user,host from mysql.user;
|
||||||
|
```
|
||||||
|
|
||||||
|
3. 查看主节点状态(mysql上执行)
|
||||||
|
|
||||||
|
```mysql
|
||||||
|
systemctl restart mysql #重启服务
|
||||||
|
show master status
|
||||||
|
```
|
||||||
|
|
||||||
|
## 从节点配置
|
||||||
|
|
||||||
|
1. 修改/etc/my.cnf文件,并重启服务
|
||||||
|
```conf
|
||||||
|
server-id=11
|
||||||
|
relay-log=relay-bin
|
||||||
|
read-only=1
|
||||||
|
replicate-ignore-db=mysql # 不复制的库
|
||||||
|
replicate-ignore-db=information_schema
|
||||||
|
replicate-ignore-db=performance_schema
|
||||||
|
replicate-ignore-db=sys
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 从库关联主库(mysql上执行)
|
||||||
|
|
||||||
|
```mysql
|
||||||
|
CHANGE MASTER TO MASTER_HOST='10.0.2.3',
|
||||||
|
MASTER_USER='slave',
|
||||||
|
MASTER_PASSWORD='slave.123456',
|
||||||
|
MASTER_LOG_FILE='master10-bin.000001',
|
||||||
|
MASTER_LOG_POS=154;
|
||||||
|
```
|
||||||
|
|
||||||
|
3. 检查状态(mysql上执行)
|
||||||
|
|
||||||
|
```mysql
|
||||||
|
start slave;
|
||||||
|
show slave status\G
|
||||||
|
```
|
||||||
|
|
||||||
|
注意:# master_log_file 和 master_log_pos值为主库上面执行show master status得到
|
||||||
|
|
||||||
|
如果 Slave_IO_Running 和 Slave_SQL_Running 都为 Yes,说明配置成功
|
||||||
|
|
||||||
|
\# 如果又更改了其他配置,重启服务后导致上面两个参数出现NO,可以重新执行步骤 2
|
||||||
|
|
||||||
|
## 同步故障
|
||||||
|
|
||||||
|
### Slave_SQL_Running:No
|
||||||
|
|
||||||
|
**原因是主机和从机里的数据不一致**
|
||||||
|
|
||||||
|
### Slave_IO_Running:Connecting
|
||||||
|
|
||||||
|
**是因为从机使用你配置的主机信息没有登陆到主机里面!修改(从机里面)**
|
||||||
|
|
||||||
|
```mysql
|
||||||
|
stop slave;
|
||||||
|
change master to master_host="192.168.106.133",master_port=3307,master_user="rep",master_password="123456",master_log_file="master.000001",master_log_pos=745;
|
||||||
|
start slave;
|
||||||
|
```
|
||||||
|
|
||||||
|
### Slave_IO_Running:No
|
||||||
|
|
||||||
|
就是server-id 没有配置成功的原因,需要重新修改配置文件,复制配置文件到容器里面,然后重启就ok
|
||||||
|
|
||||||
|
# MyCat 2
|
||||||
|
|
||||||
|
## 安装
|
||||||
|
|
||||||
|
首先去**Gitee**代码仓库**clone**源码
|
||||||
|
|
||||||
|
```shell
|
||||||
|
git clone https://gitee.com/MycatOne/Mycat2.git
|
||||||
|
```
|
||||||
|
|
||||||
|
打开项目,注意jdk版本需要用**oracle jdk1.8**,否则没有**javafx**包
|
||||||
|
|
||||||
|
Maven下载依赖
|
||||||
|
|
||||||
|
修改父级`pom.xml`文件中的`<repository>`标签,http后加s
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<repository>
|
||||||
|
<id>mvnrepository</id>
|
||||||
|
<name>mvnrepository</name>
|
||||||
|
<url>https://www.mvnrepository.com/</url>
|
||||||
|
</repository>
|
||||||
|
```
|
||||||
|
|
||||||
|
执行`maven clean install -DskipTests`
|
||||||
|
|
||||||
|
编译后的包位于根目录下的`mycat2\target\mycat2-1.22-release-jar-with-dependencies.jar`
|
||||||
|
|
||||||
|
修改根目录下的`start.bat`批处理文件
|
||||||
|
|
||||||
|
```bat
|
||||||
|
"C:\Program Files\Java\jre1.8.0_202\bin\java" -Dfile.encoding=UTF-8 -DMYCAT_HOME=C:\Users\user\Downloads\Mycat2-v1.22-2020-6-25\mycat2\src\main\resources -jar C:\Users\user\Downloads\Mycat2-v1.22-2020-6-25\mycat2\target\mycat2-1.22-release-jar-with-dependencies.jar
|
||||||
|
|
||||||
|
@REM java -Dfile.encoding=UTF-8 -DMYCAT_HOME=D:\newgit\f\mycat2\src\main\resources -jar
|
||||||
|
@REM D:\newgit\f\mycat2\target\mycat2-0.5-SNAPSHOP-20200110152640-single.jar
|
||||||
|
```
|
||||||
|
|
||||||
|
根据项目目录进行修改
|
||||||
|
|
||||||
|
## 配置
|
||||||
|
|
||||||
|
配置目录为根目录下的`mycat2\src\main\resources`
|
||||||
|
|
||||||
|
### datasources
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"dbType": "mysql",
|
||||||
|
"idleTimeout": 60000,
|
||||||
|
"initSqls": [],
|
||||||
|
"initSqlsGetConnection": true,
|
||||||
|
"instanceType": "READ_WRITE",
|
||||||
|
"maxCon": 1000,
|
||||||
|
"maxConnectTimeout": 30000,
|
||||||
|
"maxRetryCount": 5,
|
||||||
|
"minCon": 1,
|
||||||
|
"name": "prototypeDs",
|
||||||
|
"password": "123456",
|
||||||
|
"type": "JDBC",
|
||||||
|
"url": "jdbc:mysql://localhost3306?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
|
||||||
|
"user": "root",
|
||||||
|
"weight": 0
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 启动
|
||||||
|
|
||||||
|
运行根目录下的`start.bat`
|
||||||
|
|
||||||
|
## 命令
|
||||||
|
|
||||||
|
### 查看连接源
|
||||||
|
|
||||||
|
```mysql
|
||||||
|
/*+ mycat:showDataSources{} */
|
||||||
|
```
|
||||||
|
|
||||||
|
### 添加数据源
|
||||||
|
|
||||||
|
```mysql
|
||||||
|
/*+ mycat:createDataSource{
|
||||||
|
"dbType":"mysql",
|
||||||
|
"idleTimeout":60000,
|
||||||
|
"initSqls":[],
|
||||||
|
"initSqlsGetConnection":true,
|
||||||
|
"instanceType":"READ_WRITE",
|
||||||
|
"maxCon":1000,
|
||||||
|
"maxConnectTimeout":3000,
|
||||||
|
"maxRetryCount":5,
|
||||||
|
"minCon":1,
|
||||||
|
"name":"ds0",
|
||||||
|
"password":"123456",
|
||||||
|
"type":"JDBC",
|
||||||
|
"url":"jdbc:mysql://192.168.6.158:3306?useUnicode=true&serverTimezone=UTC&characterEncoding=UTF-8",
|
||||||
|
"user":"root",
|
||||||
|
"weight":0
|
||||||
|
} */;
|
||||||
|
```
|
||||||
|
|
||||||
|
### 查看集群
|
||||||
|
|
||||||
|
```mysql
|
||||||
|
/*+ mycat:showClusters{} */
|
||||||
|
```
|
||||||
|
|
||||||
|
### 添加集群
|
||||||
|
|
||||||
|
```mysql
|
||||||
|
/*+ mycat:createCluster{
|
||||||
|
"clusterType":"MASTER_SLAVE",
|
||||||
|
"heartbeat":{
|
||||||
|
"heartbeatTimeout":1000,
|
||||||
|
"maxRetry":3,
|
||||||
|
"minSwitchTimeInterval":300,
|
||||||
|
"slaveThreshold":0
|
||||||
|
},
|
||||||
|
"masters":[
|
||||||
|
"ds0" //主节点
|
||||||
|
],
|
||||||
|
"maxCon":2000,
|
||||||
|
"name":"c0",
|
||||||
|
"readBalanceType":"BALANCE_ALL",
|
||||||
|
"switchType":"SWITCH"
|
||||||
|
} */;
|
||||||
|
```
|
||||||
|
|
||||||
|
### 创建库
|
||||||
|
|
||||||
|
```mysql
|
||||||
|
/*+ mycat:createSchema{
|
||||||
|
"customTables":{},
|
||||||
|
"globalTables":{},
|
||||||
|
"normalTables":{},
|
||||||
|
"schemaName":"xxf_sharding",
|
||||||
|
"shardingTables":{}
|
||||||
|
} */;
|
||||||
|
```
|
||||||
|
|
||||||
|
### 创建表
|
||||||
|
|
||||||
|
```mysql
|
||||||
|
/*+ mycat:createTable{
|
||||||
|
"schemaName":"xxf_sharding",
|
||||||
|
"tableName":"xxf_user",
|
||||||
|
"shardingTable":{
|
||||||
|
"createTableSQL":"CREATE TABLE `xxf_user` (
|
||||||
|
`id` BIGINT(20) NOT NULL COMMENT '用户ID',
|
||||||
|
`user_name` VARCHAR(30) NULL DEFAULT NULL COMMENT '用户姓名',
|
||||||
|
`email` VARCHAR(50) NULL DEFAULT NULL COMMENT '用户邮箱',
|
||||||
|
`phone` VARCHAR(11) NULL DEFAULT NULL COMMENT '手机号码',
|
||||||
|
`sex` CHAR(1) NULL DEFAULT NULL COMMENT '用户性别',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) COMMENT='笑小枫-用户信息表' COLLATE='utf8_general_ci' ENGINE=InnoDB;",
|
||||||
|
|
||||||
|
"function":{
|
||||||
|
"properties":{
|
||||||
|
"mappingFormat": "c${targetIndex}/xxf_sharding/xxf_user_${tableIndex}",
|
||||||
|
"dbNum":2, //分库数量
|
||||||
|
"tableNum":3, //分表数量
|
||||||
|
"tableMethod":"mod_hash(id)", //分表分片函数
|
||||||
|
"storeNum":2, //实际存储节点数量
|
||||||
|
"dbMethod":"mod_hash(id)" //分库分片函数
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"partition":{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} */;
|
||||||
|
```
|
||||||
|
|
||||||
|
## 分库分表
|
||||||
|
|
||||||
|
### 原理
|
||||||
|
|
||||||
|
一个数据库由很多表的构成,每个表对应着不同的业务,垂直切分是指按照业务将表进行分布到不同的数据库上面,这样也就将数据或者说压力分担到不同的库上面
|
||||||
|
|
||||||
|
### 垂直切分:分库
|
||||||
|
|
||||||
|
系统被拆分为用户、订单、支付多个模块,部署在不同机器上。
|
||||||
|
分库的原则:由于跨库不能关联查询,所以有紧密关联的表应当放在一个数据库中,相互没有关联的表可以分不到不同的数据库。
|
||||||
|
|
||||||
|
### 水平切分:分表
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 常用的分片规则
|
||||||
|
|
||||||
|
1. 分片算法简介
|
||||||
|
Mycat2支持常用的(自动)HASH型分片算法也兼容1.6的内置的(cobar)分片算法。
|
||||||
|
HASH型分片算法默认要求集群名字以c为前缀,数字为后缀,`c0就是分片表第一个节点,c1就是第二个节点`,该命名规则允许用户手动改变。
|
||||||
|
|
||||||
|
2. mycat2与1.X版本区别
|
||||||
|
mycat2的hash型分片算法多基于MOD_HASH,对应Java的%取余运算。
|
||||||
|
mycat2的hash型分片算法对于值的处理,总是把分片值转换到列属性的数据类型再做计算。
|
||||||
|
mycat2的hash型分片算法适用于等价条件查询。
|
||||||
|
|
||||||
|
3. 分片规则与适用性
|
||||||
|
|
||||||
|
4. | 分片算法 | 描述 | 分库 | 分表 | 数值类型 |
|
||||||
|
| ----------- | -------------- | ---- | ---- | -------------------------------------- |
|
||||||
|
| MOD_HASH | 取模哈希 | 是 | 是 | 数值,字符串 |
|
||||||
|
| UNI_HASH | 取模哈希 | 是 | 是 | 数值,字符串 |
|
||||||
|
| RIGHT_SHIFT | 右移哈希 | 是 | 是 | 数值 |
|
||||||
|
| RANGE_HASH | 两字段其一取模 | 是 | 是 | 数值,字符串 |
|
||||||
|
| YYYYMM | 按年月哈希 | 是 | 是 | DATE,DATETIME |
|
||||||
|
| YYYYDD | 按年月哈希 | 是 | 是 | DATE,DATETIME |
|
||||||
|
| YYYYWEEK | 按年周哈希 | 是 | 是 | DATE,DATETIME |
|
||||||
|
| HASH | 取模哈希 | 是 | 是 | 数值,字符串,如果不是,则转换成字符串 |
|
||||||
|
| MM | 按月哈希 | 否 | 是 | DATE,DATETIME |
|
||||||
|
| DD | 按日期哈希 | 否 | 是 | DATE,DATETIME |
|
||||||
|
| MMDD | 按月日哈希 | 是 | 是 | DATE,DATETIME |
|
||||||
|
| WEEK | 按周哈希 | 否 | 是 | DATE,DATETIME |
|
||||||
|
| STR_HASH | 字符串哈希 | 是 | 是 | 字符串 |
|
||||||
|
|
||||||
|
#### 常用分片规则简介
|
||||||
|
|
||||||
|
##### MOD_HASH
|
||||||
|
|
||||||
|
[数据分片]hash形式的分片算法。如果分片键是字符串,会将字符串hash转换为数值类型。
|
||||||
|
|
||||||
|
1. 分库键和分表键相同:
|
||||||
|
- 分表下标:分片值%(分库数量*分表数量)
|
||||||
|
- 分库下标:分表下表/分库数量
|
||||||
|
2. 分库键和分表键相同:
|
||||||
|
- 分表下标:分片值%分表数量
|
||||||
|
- 分库下标:分片值%分库数量
|
||||||
|
|
||||||
|
##### RIGHT_SHIFT
|
||||||
|
|
||||||
|
[数据分片]hash形式的分片算法。仅支持数值类型。
|
||||||
|
分片值右移两位,按分片数量取余。
|
||||||
|
|
||||||
|
##### YYYYMM
|
||||||
|
|
||||||
|
[数值分片]hash形式的分片算法。仅用于分库。
|
||||||
|
(YYYY*12+MM)%分库数量,MM为1–12。
|
||||||
|
|
||||||
|
##### MMDD
|
||||||
|
|
||||||
|
仅用于分表。仅DATE、DATETIME类型。
|
||||||
|
一年之中第几天%分表数。tbpartitions不能超过366。
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user