PostgreSQL 3-13 Publication
1 逻辑复制背景 1.1 逻辑复制场景 在使用数据库时,为提高整个系统的可靠性,或实现不同部门数据同步等场景,很多客户的部署模型存在:一主多备、异构数据库等特点,在保证性能的前提下,常见部署模型如下: +-------------+ sql +---------------------+ wal +--------------------+ | application | --------> | postgresql (master) | -------> | postgresql (slave) | +-------------+ +---------------------+ +--------------------+ | | | decoded-wal +--------------------+ +---------------------> | mysql, oracle, .. | +--------------------+ 1.2 逻辑复制功能 1.3 逻辑复制基础 首先,需自行了解一些存储的基本知识,包括事务特性、mvcc机制,表的物理存储格式:filenode、page、tuple等。 此处,以一个例子,介绍什么wal日志的特点。需了解一些 应用执行事务 假设同一时间,有2个事务,事务id分别为10和11。 时间 应用1 应用2 0 CREATE TABLE t1 (c1 INT,c2 INT) - 1 CREATE TABLE t2 (c1 INT,c2 INT) - 2 BEGIN (xid=10) - 3 INSERT INTO t1 VALUES(10, 1) - 4 - BEGIN (xid=11) 5 - INSERT INTO t1 VALUES (11, 1) 6 INSERT INTO t2 VALUES (10, 2) - 7 COMMIT 8 - DELETE FROM t1 WHERE c1 = 10 9 - INSERT INTO t2 VALUES (11, 2) 10 - COMMIT 内核产生wal日志 所有表的wal日志,按生成wal的顺序,组织在一起。上述示例中,产生的wal如下:(此处仅列举关键信息) ...