读写分离

使用实战

前置工作

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

启动 ShardingProxy

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

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

  1. 连接到 ShardingProxy
  2. 创建分布式数据库
  1. CREATE DATABASE readwrite_splitting_db;
  1. 使用新创建的数据库
  1. USE readwrite_splitting_db;
  1. 配置数据源信息
  1. ADD RESOURCE write_ds (
  2. HOST=127.0.0.1,
  3. PORT=3306,
  4. DB=ds_0,
  5. USER=root,
  6. PASSWORD=root
  7. ),read_ds (
  8. HOST=127.0.0.1,
  9. PORT=3307,
  10. DB=ds_0,
  11. USER=root,
  12. PASSWORD=root
  13. );
  1. 创建读写分离规则
  1. CREATE READWRITE_SPLITTING RULE group_0 (
  2. WRITE_RESOURCE=write_ds,
  3. READ_RESOURCES(read_ds),
  4. TYPE(NAME=random)
  5. );
  1. 修改读写分离规则
  1. ALTER READWRITE_SPLITTING RULE group_0 (
  2. WRITE_RESOURCE=write_ds,
  3. READ_RESOURCES(read_ds),
  4. TYPE(NAME=random,PROPERTIES(read_weight='2:0'))
  5. )
  1. 删除读写分离规则
  1. DROP READWRITE_SPLITTING RULE group_0;
  1. 删除数据源
  1. DROP RESOURCE write_ds,read_ds;
  1. 删除分布式数据库
  1. DROP DATABASE readwrite_splitting_db;

注意事项

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