Mogdb主备架构下利用暂停同步达到类似oracle快照DG模式

2024年 4月 11日 52.9k 0

原作者:卢骏

适用范围

MogDB Version:5.0.4

操作系统版本:RH7.6

架构模式:一主一备

且两台机器均已部署mogha

问题概述

在Mogdb主备构架下,想使用生产数据做相关数据变更,但是担心出现问题,由此想利用备库进行回退;那么如何在主备模式下,主库变更,使备库类似于oracle快照DG恢复初始数据?

解决方案

1、暂停恢复

pg_xlog_replay_pause()

描述: 立即暂停恢复。

返回值类型: void

备库执行暂停恢复select pg_xlog_replay_pause();

2、查看是否暂停

pg_is_xlog_replay_paused();

描述: 如果恢复暂停则返回true。

返回值类型: bool

备库执行查看select pg_is_xlog_replay_paused();_replay_paused-------------------------- t(1 row)

此时,主库做出相应数据变更

3、备库恢复到指定时间点

首先主库上停止集群和moghasudo systemctl stop moghags_om -t stop 备库配置恢复文件进入数据目录创建文件recovery.conf数据目录路径:cd /opt/mogdb/datavi recovery.confrecovery_target_time = '2024-03-22 13:47:53’recovery_target_inclusive = true recovery_target_inclusive声明是否在指定恢复目标(true)之后停止,或在(false)之前停止。也就是是否包含 recovery_target_lsn 指定的还原点。 启动数据库gs_ctl start 由于命令没有指定数据库角色,此时会将数据库启动成主库。启动完成后检查注意:这里不能指定-M 参数将数据库启动成备库,启动成备库无法应用恢复,会直接应用最新的日志。 检查数据此时确定恢复到了未做数据更改前状态

4、切换至初始主备环境

确认数据后,备库以主库模式启动gs_ctl restart -M primary 启动集群、moghasudo systemctl start moghags_om -t start 在主机1即原主机点降为备库执行buildgs_ctl build 之后在主机2查询集群状态gs_om -t status --detail[ Cluster State ] cluster_state : Normalredistributing : Nocurrent_az : AZ_ALL [ Datanode State ] node node_ip port instance state----------------------------------------------------------------------------------------1 mogdb-primary 192.168.186.177 26000 6001 /opt/mogdb/data P Standby Normal2 mogdb-standby 192.168.186.178 26000 6002 /opt/mogdb/data S Primary Normal 再次执行switchover就可恢复至初始主备状态主机1上执行切换gs_ctl switchover -D /opt/mogdb/data 切换后查询gs_om -t status --detail[ Cluster State ] cluster_state : Normalredistributing : Nocurrent_az : AZ_ALL [ Datanode State ] node node_ip port instance state----------------------------------------------------------------------------------------1 mogdb-primary 192.168.186.177 26000 6001 /opt/mogdb/data P Primary Normal2 mogdb-standby 192.168.186.178 26000 6002 /opt/mogdb/data S Standy Normal 确认后,保存数据库主备机器信息gs_om -t refreshconf

5、若保持数据变更,恢复同步

若主库相关数据变更符合预期,想要使备库恢复同步,则只需将恢复同步打开 pg_xlog_replay_resume()描述: 如果恢复处于暂停状态,则重新启动。 备库执行select pg_xlog_replay_resume(); 再次查看数据,备库与主库数据已同步

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论