pg或者openguass的主从或主备同步是怎么实现的?

在PostgreSQL和基于PostgreSQL的OpenGauss数据库中,主从同步(也称为流复制或物理复制)的实现是通过WAL(Write Ahead Log)机制完成的。以下是主从同步的基本步骤:

1. **WAL记录**:
   - 所有的数据库修改操作都会先记录到WAL(Write-Ahead Log)中,这是数据库事务提交前的必要步骤。
   
2. **WAL传输**:
   - 主库(Master)会持续将WAL日志传输给从库(Standby或Slave)。主库维护了一个WAL Sender进程,它将WAL日志片段(XLOG记录)通过TCP/IP网络发送给从库。

3. **WAL接收与重播**:
   - 从库设有WAL Receiver进程,负责接收主库发来的WAL日志,并将其存储在本地的WAL目录下。
   - 接收到WAL日志后,从库通过WAL重播器(WAL Redo Process)逐条应用这些日志记录,就像当初在主库上发生的那样,从而更新自己的数据文件,保持与主库数据的一致性。

4. **同步模式**:
   - PostgreSQL支持同步(synchronous)和异步(asynchronous)两种复制模式。在同步复制模式下,主库会在事务提交前等待至少一个从库确认已收到并应用了该事务对应的WAL记录,以确保更高的数据安全性。

5. **多从库同步**:
   - 同一主库可以拥有多个从库,每个从库独立与主库进行WAL日志的同步。

6. **初始化同步**:
   - 在建立主从同步之前,需要首先在从库上通过pg_basebackup工具或者其他方式完成全量备份,然后从备份点开始进行WAL日志的追加同步。

在OpenGauss中,同样采用了类似的流复制技术来实现主从同步,同时也可能提供了增强的功能和管理工具以提高数据同步的效率和稳定性。由于OpenGauss是基于PostgreSQL开发的,所以在主从同步的基础原理和实现机制上与PostgreSQL保持了一致性。

### PostgreSQL 9.6 主从复制配置教程 #### 1. 安装与初始化 在开始主从复制之前,需确保库和从库均已正确安装并运行。以下是基本步骤: - **安装路径**: 确保库和从库均按照标准流程完成安装[^1]。 - **数据库登录方式**: 使用 `psql` 其他工具连接至数据库实例。 #### 2. 修改库配置文件 为了支持流复制功能,需要调整库的配置参数。编辑库的 `postgresql.conf` 和 `pg_hba.conf` 文件: - 在 `postgresql.conf` 中启用 wal_level 并设置 max_wal_senders 参数: ```plaintext wal_level = replica max_wal_senders = 3 archive_mode = on archive_command = 'test ! -f /var/lib/pgsql/archive/%f && cp %p /var/lib/pgsql/archive/%f' hot_standby = on ``` - 编辑 `pg_hba.conf` 添加允许从库访问的记录: ```plaintext host replication repl 192.168.47.0/24 trust ``` 上述操作完成后重启库服务以应用更改。 #### 3. 创建基础份 通过 `pg_basebackup` 工具创建初始数据副本,并将其传输到从库节点上。具体命令如下所示[^2]: ```bash rm -rf /var/lib/pgsql/9.6/data/* su postgres pg_basebackup -F p --progress -D /var/lib/pgsql/9.6/data/ -h 192.168.47.120 -p 5432 -U repl --password ``` 此过程会生成完整的数据目录结构以及必要的日志文件用于后续同步。 #### 4. 设置恢复配置 在从库的数据目录下新建名为 `recovery.conf` 的文件,内容应包含指向库的信息: ```plaintext standby_mode = 'on' primary_conninfo = 'host=192.168.47.120 port=5432 user=repl password=your_password' trigger_file = '/tmp/postgresql.trigger.5432' restore_command = 'cp /var/lib/pgsql/archive/%f %p' ``` 保存后启动从库即可自动进入只读状态并与库保持实时同步关系[^3]。 #### 5. 测试验证 最后一步是对整个系统的稳定性进行测试。可以通过向库写入一些新纪录来观察它们是否会及时反映到机上去;另外还可以尝试模拟故障场景下的快速切换机制有效性评估。 --- ### 注意事项 如果遇到权限错误等问题,请参照相关解决方案处理。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值