分布式数据有一些最佳实践,下面举出三个(以 MySQL 引擎为例)

数据导入

这分成两种情况。第一种情况是将现有的单机实例,导入到新建的分布式实例。操作步骤如下(详细命令见文档)。

  • 导出单机数据库的表结构和数据,拿到两个 SQL 文件。
  • 打开数据库的表结构文件,设置每个表的主键(primary key),以及分片依据的 shardkey。
  • 将修改后的两个 SQL 文件,上传到云服务器,导入到分布式数据库。

第二种情况是将现有的一个分布式实例,导入到另一个分布式实例。操作步骤与上面一样,只是少了第二步,不需要指定主键和 shardkey,因为原来就有了。(详细命令见文档)。

数据分片

分片(sharding)是分布式数据库的核心问题之一:到底要架设多少个数据分区?数据在多个分区如何分布?
分片数量取决于,整个数据库预估的最大并发,以及每个分片能够处理的请求数量,可以用公式计算:读写并发性能 = ∑(分片性能 * 分片数量)
单个分片的性能,主要与实例的 CPU / 内存数量相关。单个分片规格越高、分片数量越多,数据库系统的处理能力越强。
除了性能,分片还要考虑容量问题。一般来说,单个分片至少存储 5000 万行数据。

硬件配置

分布式数据库的硬件,下面给出三个推荐的配置:

  • 测试功能:不要求性能,只用来验证系统,建议配置 2 个节点,每个节点 2GB 内存 + 25GB 硬盘
  • 发展初期:数据规模较小,增长快,建议配置 2 个节点,每个节点 16GB 内存 + 200GB 硬盘
  • 业务稳定:根据业务实际情况配置,可以配置 4 个节点,每个节点硬件为:(当前业务峰值 * 增长率) / 4

摘自分布式数据库入门:以国产数据库 TDSQL 为例@阮一峰的网络日志