云服务器mysql分库分表环境搭建(2库4表)

阿里巴巴Java开发手册:

【推荐】单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。

单表数据量太大, 分库不能解决,存在瓶颈,需要分表。

2库4表

2个库,每个库2个表(使用user_id进行分库,使用order进行分表)

可自行扩展 10库100表,100库10000表

server-order0(t_order0、t_order1)

server-order1(t_order0、t_order1)

第一个库 server-order0
复制代码
docker run -d \
-p 4310:3306 \
-v /server/order0/conf:/etc/mysql/conf.d \
-v /server/order0/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--name server-order0 \
mysql:8.0.30

#进入容器:
docker exec -it server-order0 env LANG=C.UTF-8 /bin/bash
#进入容器内的mysql命令行
mysql -uroot -p
#修改默认密码插件
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
第二个库 server-order1
复制代码
docker run -d \
-p 4311:3306 \
-v /server/order1/conf:/etc/mysql/conf.d \
-v /server/order1/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--name server-order1 \
mysql:8.0.30

#进入容器:
docker exec -it server-order1 env LANG=C.UTF-8 /bin/bash
#进入容器内的mysql命令行
mysql -uroot -p
#修改默认密码插件
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

分别建表:

复制代码
CREATE DATABASE db_order;
USE db_order;
CREATE TABLE t_order0 (
  id BIGINT,
  order_no VARCHAR(30),
  user_id BIGINT,
  PRIMARY KEY(id) 
);
CREATE TABLE t_order1 (
  id BIGINT,
  order_no VARCHAR(30),
  user_id BIGINT,
  PRIMARY KEY(id) 
);

查看是否创建成功

docker exec -it server-order0 bash

mysql -uroot -p

show databases;

use db_order;

show tables;

配置文件配置

复制代码
# 默认是 Standalone ,不写也行
mode:
  type: Standalone
  repository:
    type: JDBC

# 输出sql:
props:
  sql-show: true

# 哪些数据源 配置好
dataSources:
  user_ds:
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://localhost:4301/db_user
    username: root
    password: 123456

  order_ds_0: # 2个订单库 0
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://localhost:4310/db_order
    username: root
    password: 123456
  order_ds_1: # 2个订单库 1
    dataSourceClassName: com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    jdbcUrl: jdbc:mysql://localhost:4311/db_order
    username: root
    password: 123456



# 水平分片规则

rules:
  - !SHARDING
    tables:
      t_user:
        actualDataNodes: user_ds.t_user
      t_order:
        actualDataNodes: order_ds_${0..1}.t_order${0..1}  # 分库、分表
        databaseStrategy: # 分库策略 以用户 user_id 字段进行shard
          standard:
            shardingColumn: user_id
            shardingAlgorithmName: userid_inline # 指向下面的 userid_inline 规则
        tableStrategy: # 分表策略 以 id(雪花算法)字段分,(不写的话 默认使用分库计算)
          standard:
            shardingColumn: id
            shardingAlgorithmName: order_id_inline

    shardingAlgorithms:
      userid_inline: # 制定 分库的算法 user_id
        type: INLINE
        props:
          algorithm-expression: order_ds_${user_id % 2}
      order_id_inline: # 制定 分表的策略 order_id
        type: INLINE
        props:
          algorithm-expression: t_order${id % 2}
相关推荐
jianpeng的工程笔记1 小时前
EL8 / EL9 安装 Slurm 26.05.4:主备控制器、MariaDB 记账与作业验收
linux·数据库·mariadb·高性能计算·slurm
坏脾气的小十七1 小时前
docker基本知识
docker·容器·eureka
SelectDB技术团队1 小时前
ClickHouse 存日志的能力边界:并发、检索与 trace 回放的实测对照
数据结构·数据库·clickhouse·日志分析·apache doris·日志存储
小白的码BUG之路1 小时前
Docker -- 基本命令
java·docker·eureka
倔强的小石头_2 小时前
Ubuntu部署Prometheus与Alertmanager:systemd配置、告警对接及cpolar远程访问
数据库·ubuntu·prometheus
茉莉玫瑰花茶2 小时前
GO [ 接口 ]
服务器·数据库·golang
babe小鑫2 小时前
金融工程专业秋招:金融类证书与数据分析类证书的搭配方案
大数据·数据库·人工智能
guo_wen_qiang2 小时前
jenkins流水线参数化配置
运维·docker·容器·jenkins·持续部署