#主备复制
# 物理复制
物理复制即通过建立备库,在主备之间实现的数据同步。
主备复制的主要原理为:
- 主库承载业务,处理客户端事务请求,可以执行读写操作,备库只能执行查询操作。
- 创建备库时,需要先按主库数据进行初始化。
- 主库上的日志通过网络发送到备库。
- 备库回放日志,实现与主库数据同步。
备库既可以和主库同地部署,也可以异地部署,关于主备的部署和管理方法请查阅高可用。
# 逻辑复制
使用逻辑复制的一个典型场景是切换数据库时的新旧系统并跑,对应用系统的数据库直接进行切换是很危险的操作,可能导致数据丢失、错位,或应用系统无法运行等异常情况,因此一般均采用系统并跑的方式,见下图所示:
系统并跑时,通过YashanDB提供的逻辑复制功能可以实现新旧数据库之间的实时数据同步。
逻辑复制的主要原理为:
- 对要同步的表开启附加日志属性(使用ALTER TABLE语句的add_supplemental_logging_clause)。
- 开启后,对表的DDL/DML操作将在redo日志里记录额外的信息。
- redo日志的信息可被解析和组装成SQL,还原操作场景。
- 将这些SQL在对方数据库上执行,实现数据同步。
以下为开启某张表的逻辑复制功能示例:
ALTER TABLE area ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
ALTER TABLE area ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;