#主从复制
# 物理复制
物理复制即通过建立备机,在主备之间实现的数据同步,YashanDB支持多种主备形式,如下图:

主备复制的主要原理为:
- 主机承载业务,处理客户端事务请求,可以执行读写操作,备机只能执行查询操作。
- 创建备机时,需要先按主机数据进行初始化。
- 主机上的日志通过网络发送到备机。
- 备机回放日志,实现与主机数据同步。
备机既可以和主机同地部署,也可以异地部署,关于主备的部署和管理方法请参考高可用。
# 逻辑复制
使用逻辑复制的一个典型场景是切换数据库时的新旧系统并跑,将应用系统的数据库直接进行切换是很危险的操作,可能导致数据丢失、错位,或应用系统无法运行等异常情况,因此一般均采用系统并跑的方式,见下图所示:

系统并跑时,通过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;