MySQL主从复制的核心是二进制日志
二进制日志(binlog)记录了所有DDL语句和DML语句,但不包括数据查询(select、show)语句。
以表为依据,根据业务将不同表拆分到不同库中。
示例:
在“好又来”商城微服务项目中,一般有以下模块:用户模块,订单模块,商品模块等,
这时可将各个模块的表单独放在不同的库中,
如biz1库(用户模块的表)、biz2库(订单模块的表)、biz3库(商品模块的表)等。
以字段为依据,根据字段属性将不同字段拆分到不同表中。
示例:
同样,在“好又来”商城项目中,
有商品表,表中有字段“商品id”、“商品名称”、“商品价格”、“商品详细描述”。
由于是“好又来”项目发展越来越好,商品越来越多,商品表数据量变得庞大。
这时结合业务根据拆分规则进行“垂直分表”,把商品表分为商品表1和商品表2:
商品表1:商品id、商品名称、商品价格
商品表2:商品id、商品详细描述
拆分规则:
把一个库的数据拆分到多个库中。
示例:
有“发发发”银行,因为发展越来越好,客户从几十万膨胀到几百万,这时需要给系统做升级。对数据库进行拆分。
把一个库的用户拆分到4个库中,根据客户号取模把客户分散到4个库。
路由规则:
将一个表的数据拆分到多个表中,可以在同一个库,也可以在不同库。