我发现了很多关于如何将数据从RDS迁移到Cloud SQL的文章,但所有这些文章都只是进行主从复制,然后进行切换。但是,我找不到任何关于两个云之间的主-主复制的信息。
我们需要在同步完成后将后端切换到Cloud SQL,但我们希望保持一种轻松切换的方式,而不会丢失任何数据。
假设我们切换到Cloud SQL,然后我们决定由于一些当前未知的问题,它无法按预期工作,我们希望切换回来。因此,我们必须将所有数据与新数据一起迁移回RDS,然后再切换回RDS。这将需要时间,我们将有至少一个小时的停机时间(设置复制CloudSQL -> RDS,交换机;或从CloudSQL导出数据并导入到RDS、交换机)。因此,我们希望避免这种停机时间,以防我们决定切换回来。
有没有办法在两个云之间设置主-主复制?
2条答案
按热度按时间0md85ypi1#
免责声明:在将其应用于生产之前,请在一些测试示例上对其进行测试。我还没有进行迁移,所以应该测试一下。
因此,经过一些调查和研究,我能够在GCP和AWS之间建立主-主复制。以下是操作方法:
1.创建新的参数组并在AWS上为示例启用该参数组(需要重启示例)
1.通过设置以下设置启用逻辑复制
| 设置|价值|
| - -----|- -----|
|
rds.logical_replication
|1
||
track_commit_timestamp
|1
||
pglogical.conflict_resolution
|last_update_wins
||
shared_preload_libraries
| * 添加 *pglogical
|1.在GCP上添加标志
建议先将
track_commit_timestamp
设置为ON
,然后再设置其他标志。另外,所有其他标志应该立即设置,否则可能会失败。| 设置|价值|
| - -----|- -----|
|
cloudsql.enable_pglogical
|ON
||
cloudsql.logical_decoding
|ON
||
max_replication_slots
|10
||
max_worker_processesset
|8
||
max_wal_senders
|10
||
track_commit_timestamp
|ON
||
pglogical.conflict_resolution
| * 添加 *last_update_wins
|1.在两端创建pguser:
AWS
GCP
1.在GCP和AWS上向pguser授予所有表的所有权限
1.在两端启用扩展
1.创建节点
AWS
GCP
1.将所有表添加到AWS上的复制
1.在GCP上创建订阅
1.检查订阅状态
1.以另一种方式启用复制。在GCP上添加复制集
1.在AWS上创建订阅
注意事项
*请确保使用主键和id,以免混淆数据
基本上我是按照这两个官方指南来设置的:
8fq7wneg2#
2步5和6步位置怎么样?如果你不先运行第6步,将在命令GRANT ALL ON SCHEMA pgrological TO pguser中出现错误'schema“pgrological”does not exist';