mysqlSharding - juedaiyuer/researchNote GitHub Wiki

#MySQL分库分表#

##数据库分片前的准备##

对一个库中的相关表进行水平拆分到不同实例的数据库中

###如何选择分区键###

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

###如何存储无需分片的表###

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

###如何在节点上部署分片###

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

###如何分配分片中的数据###

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

###如何生成全局唯一ID###

  1. 使用auto_increment_increment(步长)和auto_increment_offset参数
  2. 使用全局节点来生成ID
  3. 在Redis等缓存服务器中创建全局ID

##分库分表演示##

订单分库分表示例

oneProxy安装和配置

wget http://www.onexsoft.cn/software/oneproxy-rhel6-linux64-v5.8.1-ga.tar.gz

tar -zxf oneproxy-rhel6-linux64-v5.8.1-ga.tar.gz

节点3的配置