mysqldump备份数据库

备份实例下的所有库

mysqldump -uroot -p -A > all.sql

备份单个指定数据库

mysqldump -uroot -p test > test.sql

备份多个指定数据库

mysqldump -uroot -p test1 test2 > test12.sql

备份指定数据库中的单个表

mysqldump -uroot -p test user > test.user.sql

备份指定数据库中的多个表

mysqldump -uroot -p test user role > test.ur.sql

备份数据库表结构只包含DDL语句

# --no-data 或 -d
mysqldump -uroot -p test --no-data > test.sql

备份数据库带库名

mysqldump -uroot -p -B test > test.sql

Xtrabackup备份数据库

安装

wget方式

  1. 安装qpress rpm包。

    wget https://repo.percona.com/yum/release/7/RPMS/x86_64/qpress-11-1.el9.x86_64.rpm
    rpm -ivh qpress-11-1.el9.x86_64.rpm
  2. 安装Percona XtraBackup

    • MySQL 5.6、5.7,以下载并安装Percona XtraBackup 2.4.9为例

      wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.29/binary/redhat/9/x86_64/percona-xtrabackup-24-2.4.29-1.el9.x86_64.rpm

      rpm -ivh percona-xtrabackup-24-2.4.29-1.el9.x86_64.rpm

      warning: percona-xtrabackup-24-2.4.29-1.el9.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 8507efa5: NOKEY
      error: Failed dependencies:
      libatomic.so.1()(64bit) is needed by percona-xtrabackup-24-2.4.29-1.el9.x86_64
      libev.so.4()(64bit) is needed by percona-xtrabackup-24-2.4.29-1.el9.x86_64
      perl(DBD::mysql) is needed by percona-xtrabackup-24-2.4.29-1.el9.x86_64
      rsync is needed by percona-xtrabackup-24-2.4.29-1.el9.x86_64

      dnf install libatomic -y
      dnf install libev -y
      dnf install -y rsync
      dnf install perl-DBD-MySQL

    • MySQL 8.0,以下载并安装Percona XtraBackup 8.0为例

      wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.32-26/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.32-26.1.el7.x86_64.rpm

      rpm -ivh percona-xtrabackup-80-8.0.32-26.1.el7.x86_64.rpm --nodeps --force

备份

全量备份

innobackupex --user=root --password=123456 --host=127.0.0.1 ~/mysql_bakup/

#语法解释说明:
#--user=root 指定备份用户
#--password=123456 指定备份用户密码
#--host  指定主机
#~/mysql_bakup/  指定备份目录

执行命令后。可看到备份时间的文件夹

image-20240130140632864

文件夹内容如下

image-20240130140723465

差异备份

首先需要全量备份一次

innobackupex --user=root --password=123456 --host=127.0.0.1 ~/mysql_bakup/

然后按照全量备份生成的备份目录为基础

innobackupex --user=root --password=123456 --host=127.0.0.1 --incremental ~/mysql_bakup/ --incremental-basedir=~/mysql_bakup/2024-01-30_14-03-42/

image-20240130151257100

差异备份需要使用参数–incremental指定需要备份到哪个目录,使用incremental-dir指定全备目录

查看备份数据

image-20240130172206916

恢复

全量备份恢复

# 停止目标服务器上的mysql
systemctl stop mysqld

image-20240130142057208

同步服务器上的备份文件至本地

# 同步服务器上的备份文件夹至本地
rsync -av root@10.0.3.3::mysql_bakup ~/mysql_bakup

image-20240130142150299

创建本地数据目录备份

cp -r /var/lib/mysql /var/lib/mysqlbakup

合并数据日志,使数据文件处于一致性的状态

innobackupex --apply-log ~/mysql_bakup/2024-01-30_14-03-42/ 

image-20240130142410127

删除数据目录

rm -rf /var/lib/mysql

进行数据恢复

innobackupex --copy-back 2024-01-30_14-03-42/

image-20240130142551097

赋予权限

chown mysql:mysql /var/lib/mysql -R

临时关闭SELinux

setenforce 0

永久关闭SELinux

差异备份恢复

# 停止目标服务器上的mysql
systemctl stop mysqld

image-20240130142057208

删除数据目录

rm -rf /var/lib/mysql

合并全备数据目录,确保数据的一致性

innobackupex --apply-log --redo-only ~/mysql_bakup/2024-01-30_14-03-42/

将差异备份数据合并到全备数据目录当中

innobackupex --apply-log --redo-only ~/mysql_bakup/2024-01-30_14-03-42/ --incremental-dir=~/mysql_bakup/2024-01-30_15-12-28/

恢复数据

innobackupex --copy-back ~/mysql_bakup/2024-01-30_14-03-42/

赋予权限

chown mysql:mysql /var/lib/mysql -R

临时关闭SELinux

setenforce 0

永久关闭SELinux

Windows 下安装 绿色版

先下载MySQL :: Download MySQL Community Server

image-20231007124717167

  1. 解压下载好的压缩包
    在这里插入图片描述

  2. 解压后得到
    在这里插入图片描述

  3. 新建一个 my.ini文件
    在这里插入图片描述

  4. 解压后的mysql根目录下没有my.ini文件,自己去网上找一份就可或者使用我在后面给出的代码。.ini文件会在初始化mysql中用到

    # For advice on how to change settings please see
    # http=//dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
    # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
    # *** default location during install, and will be replaced if you
    # *** upgrade to a newer version of MySQL.

    [client]
    port = 3306
    default-character-set = utf8

    [mysqld]

    # Remove leading # and set to the amount of RAM for the most important data
    # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
    # innodb_buffer_pool_size = 128M

    # Remove leading # to turn on a very important data integrity option= logging
    # changes to the binary log between backups.
    # log_bin
    port = 3306
    # These are commonly set, remove the # and set as required.
    basedir="D:\app\mysql-5.7.43-winx64"
    datadir="D:\app\mysql-5.7.43-winx64\data"
    # server_id = .....
    character_set_server = utf8

    # Remove leading # to set options mainly useful for reporting servers.
    # The server defaults are faster for transactions and fast SELECTs.
    # Adjust sizes as needed, experiment to find the optimal values.
    # join_buffer_size = 128M
    # sort_buffer_size = 2M
    # read_rnd_buffer_size = 2M

    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

  5. 修改ini配置文件中的安装目录和数据存放目录修改为mysql文件的路径

  6. #设置mysql的安装目录
    basedir=D:\app\mysql-5.7.43-winx64
    #设置mysql数据库的数据的存放目录
    datadir=D:\app\mysql-5.7.43-winx64\data

  7. 打开cmd,初始化数据库

    mysqld --initialize 
  8. 初始化完成后,mysqld根目录下会自动新增data文件夹
    在这里插入图片描述

  9. 打开data文件夹,找到.err后缀文本打开
    在这里插入图片描述

  10. 找到文件password位置,红色框中为数据库初始化密码,后续修改初始化密码使用

    2023-10-07T04:37:02.330654Z 1 [Note] A temporary password is generated for root@localhost: (iw?Mw:Vs7n&
  11. 安装数据库

    mysqld --install <服务名>
  12. 启动服务

    net start mysql
  13. 关闭服务

    net stop mysql
  14. 修改初始密码

    • 登录

      mysql -uroot -p'你的初始密码,步骤4中红框里的字符'
    • 修改密码为 123456

      ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
  15. 服务卸载

    net stop mysql
    mysqld --remove

Linux 安装MySQL

安装

  1. 在浏览器下载Linux系统的MySQL客户端安装包。建议您下载的MySQL客户端版本高于已创建的GaussDB(for MySQL)实例中数据库版本。
    在下载页面找到对应版本链接,以mysql-community-client-8.0.21-1.el6.x86_64为例,打开页面后,即可下载安装包。
    img

  2. 将安装包上传到ECS。

  3. 执行以下命令安装MySQL客户端。
    rpm -ivh mysql-community-client-8.0.21-1.el6.x86_64.rpm

    • 如果安装过程中报conflicts,可增加replacefiles参数重新安装,如下:

      rpm -ivh –replacefiles mysql-community-client-8.0.21-1.el6.x86_64.rpm

    • 如果安装过程中提示需要安装依赖包,可增加nodeps参数重新安装,如下:

      rpm -ivh –nodeps mysql-community-client-8.0.21-1.el6.x86_64.rpm

连接

  1. mysql -h <*host*> -P -u <*userName*> -p
    示例:

    mysql -h 192.168.0.16 -P 3306 -u root -p

    参数说明

    参数 说明
    <*host*> 获取的读写内网地址。
    获取的数据库端口,默认3306。
    <*userName*> 管理员帐号root。
  2. 出现如下提示时,输入数据库帐号对应的密码。

    Enter password:
  3. 报错mysql: error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or directory

    下载rpm包:
    https://mirrors.aliyun.com/centos/8/AppStream/x86_64/os/Packages/compat-openssl10-1.0.2o-3.el8.x86_64.rpm
    安装rpm包:

    rpm -i compat-openssl10-1.0.2o-3.el8.x86_64.rpm 
    错误:依赖检测失败:
    make 被 compat-openssl10-1:1.0.2o-3.el8.x86_64 需要
    rpm -i compat-openssl10-1.0.2o-3.el8.x86_64.rpm --nodeps --force

    mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
    cp /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5

    mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
    cp /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5

Linux 卸载MySQL

二进制方式

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 客户端

执行脚本

source <脚本绝对路径>

用户和权限

用户各项权限

CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT Usage ON *.* TO 'username'@'%';
GRANT Alter ON database.* TO 'username'@'%';
GRANT Create ON database.* TO 'username'@'%';
GRANT Create view ON database.* TO 'username'@'%';
GRANT Delete ON database.* TO 'username'@'%';
GRANT Drop ON database.* TO 'username'@'%';
GRANT Index ON database.* TO 'username'@'%';
GRANT Insert ON database.* TO 'username'@'%';
GRANT References ON database.* TO 'username'@'%';
GRANT Select ON database.* TO 'username'@'%';
GRANT Show view ON database.* TO 'username'@'%';
GRANT Update ON database.* TO 'username'@'%';
GRANT PROCESS ON *.* TO 'username'@'%';

创建管理员用户

create user 'zhaoyan'@'%' identified by 'zhaoyan@123';
grant all on *.* to 'zhaoyan'@'%' with grant option;
flush privileges;

限制只能本地登录root

mysql -uroot -p
use mysql;
select * from user where user = 'root';
update user set host = '127.0.0.1' where user = 'root' and host = '%';
flush privileges;

修改root密码

alter user 'root'@'localhost' IDENTIFIED BY '123456';

允许远程登录

grant all privileges  on *.* to root@'%' identified by "123456";

忘记密码重置

Windows

  1. 首先停止服务
    使用管理员用户打开CMD

    net stop MYSQL

    MYSQL为MySQL数据库服务名称

  2. 将MySQL 数据目录 C:\ProgramData\MySQL\MySQL Server 5.7 下的Data目录复制到 程序目录 C:\Program Files\MySQL\MySQL Server 5.7 下

  3. 进入MySQL bin目录

    cd "C:\Program Files\MySQL\MySQL Server 5.7\bin"
    mysqld --skip-grant-tables

    –skip-grant-tables 的意思是启动 MySQL 服务的时候跳过权限表认证

  4. 重新打开一个cmd窗口,输入 mysql 回车

    cd "C:\Program Files\MySQL\MySQL Server 5.7\bin"
    mysql
  5. 连接权限数据库:use mysql

  6. 修改数据库连接密码

    update user set authentication_string =password('123456') where user='root';
    flush privileges;
    exit;
  7. 修改root 密码后,需要执行下面的语句和新修改的密码。不然开启 mysql 时会出错

    mysqladmin -u root -p shutdown
  8. 将程序目录 C:\Program Files\MySQL\MySQL Server 5.7 下的Data文件夹下复制到数据目录 C:\ProgramData\MySQL\MySQL Server 5.7 下

  9. 重启 mysql

    net start mysql

存储过程和函数

函数

创建函数要加上DELIMITER $$$$ DELIMITER

MySQL 8 还需要执行

-- 查看该参数,默认为0
select @@log_bin_trust_function_creators;
-- 设置为1
set GLOBAL log_bin_trust_function_creators=1;

信息数据库(information_schema)

查看某数据库中所有表的行数

select table_name,table_rows from information_schema.tables 
where TABLE_SCHEMA = 'qyqdb'
order by table_rows desc;

主从搭建

主节点配置

  1. 修改/etc/my.cnf文件,并重启服务

    [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上执行)

    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上执行)

    systemctl restart mysql    #重启服务
    show master status

从节点配置

  1. 修改/etc/my.cnf文件,并重启服务

    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上执行)

    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上执行)

    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

是因为从机使用你配置的主机信息没有登陆到主机里面!修改(从机里面)

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

二进制日志文件(binlog)

查看是否开启

SHOW VARIABLES LIKE 'log_bin';

配置

[mysqld]
# 开启binlog
log_bin=ON
# binlog日志的基本文件名
#log_bin_basename=/var/lib/mysql/mysql-bin
# binlog文件的索引文件, 管理所有binlog文件
#log_bin_index=/var/lib/mysql/mysql-bin.index
# 配置serverid
server-id=1
# 设置日志三种格式: STATEMENT、ROW、MIXED。
binlog_format=mixed
# 设置binlog清理时间
expire_logs_days=15
# binlog每个日志文件大小
max_binlog_size=100m
# binlog缓存大小
binlog_cache_size=4m
# 最大binlog缓存大小
max_binlog_cache_size=512m

MyCat 2

安装

首先去Gitee代码仓库clone源码

git clone https://gitee.com/MycatOne/Mycat2.git

打开项目,注意jdk版本需要用oracle jdk1.8,否则没有javafx

Maven下载依赖

修改父级pom.xml文件中的<repository>标签,http后加s

<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批处理文件

"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

{
"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

命令

查看连接源

/*+ mycat:showDataSources{} */

添加数据源

/*+ 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
} */;

查看集群

/*+ mycat:showClusters{} */

添加集群

/*+ 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"
} */;

创建库

/*+ mycat:createSchema{
"customTables":{},
"globalTables":{},
"normalTables":{},
"schemaName":"xxf_sharding",
"shardingTables":{}
} */;

创建表

/*+ 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. 分库键和分表键相同:
  • 分表下标:分片值%(分库数量*分表数量)
  • 分库下标:分表下表/分库数量
  1. 分库键和分表键相同:
  • 分表下标:分片值%分表数量
  • 分库下标:分片值%分库数量
RIGHT_SHIFT

[数据分片]hash形式的分片算法。仅支持数值类型。
分片值右移两位,按分片数量取余。

YYYYMM

[数值分片]hash形式的分片算法。仅用于分库。
(YYYY*12+MM)%分库数量,MM为1–12。

MMDD

仅用于分表。仅DATE、DATETIME类型。
一年之中第几天%分表数。tbpartitions不能超过366。