影子库压测

使用实战

前置工作

  1. 启动 MySQL 服务
  2. 创建 MySQL 数据库(参考 ShardingProxy 数据源配置规则)
  3. 为 ShardingProxy 创建一个拥有创建权限的角色或者用户
  4. 启动 Zookeeper 服务 (为了持久化配置)

启动 ShardingProxy

  1. 添加 modeauthentication 配置参数到 server.yaml (请参考相关 example 案例)
  2. 启动 ShardingProxy (相关介绍)

创建分布式数据库和分片表

  1. 连接到 ShardingProxy
  2. 创建分布式数据库
  1. CREATE DATABASE shadow_db;
  1. 使用新创建的数据库
  1. USE shadow_db;
  1. 配置数据源信息
  1. ADD RESOURCE ds_0 (
  2. HOST=127.0.0.1,
  3. PORT=3306,
  4. DB=ds_0,
  5. USER=root,
  6. PASSWORD=root
  7. ),ds_1 (
  8. HOST=127.0.0.1,
  9. PORT=3306,
  10. DB=ds_1,
  11. USER=root,
  12. PASSWORD=root
  13. ),ds_2 (
  14. HOST=127.0.0.1,
  15. PORT=3306,
  16. DB=ds_2,
  17. USER=root,
  18. PASSWORD=root
  19. );
  1. 创建影子库压测规则
  1. CREATE SHADOW RULE group_0(
  2. SOURCE=ds_0,
  3. SHADOW=ds_1,
  4. t_order((simple_note_algorithm, TYPE(NAME=SIMPLE_NOTE, PROPERTIES("shadow"="true", foo="bar"))),(TYPE(NAME=COLUMN_REGEX_MATCH, PROPERTIES("operation"="insert","column"="user_id", "regex"='[1]')))),
  5. t_order_item((TYPE(NAME=SIMPLE_NOTE, PROPERTIES("shadow"="true", "foo"="bar")))));
  1. 修改影子库压测规则
  1. ALTER SHADOW RULE group_0(
  2. SOURCE=ds_0,
  3. SHADOW=ds_2,
  4. t_order_item((TYPE(NAME=SIMPLE_NOTE, PROPERTIES("shadow"="true", "foo"="bar")))));
  1. 删除影子库压测规则
  1. DROP SHADOW RULE group_0;
  1. 删除数据源
  1. DROP RESOURCE ds_0,ds_1,ds_2;
  1. 删除分布式数据库
  1. DROP DATABASE shadow_db;

注意事项

  1. 当前, DROP DATABASE 只会移除逻辑的分布式数据库,不会删除用户真实的数据库。
  2. DROP TABLE 会将逻辑分片表和数据库中真实的表全部删除。
  3. CREATE DATABASE 只会创建逻辑的分布式数据库,所以需要用户提前创建好真实的数据库。