分库分表

分库分表


Q0: 分库分表中间件

  • sharding-jdbc : 当当开源, 属于client层方案, 不用部署, 运维成本低,但是各个系统都耦合了
  • mycat : 基于cobar改造,属于proxy层方案 ,运维成本高,升级方便, 对各个项目透明

Q1:如何不停机迁移分库分表

  • 双写方案
    • 线上系统中同时跑老库和新库
    • 部署一个导数据的程序,不断把老库的数据导到新库中
    • 不断校验,比对新老两库数据
    • 直到完全一致,去掉代码中对老库的操作,重新部署上线

Q2:如何设计动态扩容缩容的分库分表方案

  • 一开始就分很多的库,比如32个库,32个表,1024张表
  • 路由时,先根据id取模32到库,再取模32路由到表
  • 比如一开始在4台机器上,每个服务器创建了8个库,每个库有32张表,扩容的时候,扩容成8台机器,那么每个服务器上就是4个库,每个库还是32张表…最多扩容到32台数据库服务器时,每台服务器一个库,每个库32张表
  • 优点:
    • 只更改了数据库的数量,不用改表的数量
    • 迁移数据的时候 , 直接迁移库, 基于db操作很快 ;
    • 每个库的路由规则不用修改, 更改库的连接配置就行​

你可能感兴趣的:(学习笔记)