MySQL分库分表

2020/11/27 posted in  MySQL

分库分表的方式

  1. 把一个实例中的多个数据库分到不同的实例中
  2. 把一个库中的表分离到不同的数据库中
  3. 把一个数据库中的相关表水平拆分到不同实例的数据库中

数据库分片

  1. 分区键要能尽量避免跨分区查询的发生
  2. 分区键要能尽量使各个分片数据平均

如何存储无需分片的表

  1. 每个分片存储相同的数据
  2. 使用额外的节点统一存储

如何在节点上部署分片

  1. 每个分片使用单一数据库,并且数据库表名相同
  2. 将多个分片表存储在同一个数据库,并在表名上加分片后缀
  3. 在一个节点部署多个数据库,每个数据库包含一个分片

如何分配分片中的数据

  1. 按分区键的Hash值取模分配分片数据
  2. 按分区键的范围来分片数据
  3. 利用分区键和分片的映射表来分配分片数据

如何生成全局唯一ID

  1. 使用auto_increment_increment和auto_increment_offset参数
  2. 使用全局节点来生成ID
  3. 使用Redis缓存服务器创建全局ID