我有的:
数据库:PostgreSQL 9.3
表T ,
- 结构:10 个整数/布尔值和 1 个文本字段
- 大小:表 89 GB / Toast 1046 GB
- 用法:约10次/分钟
- 其他:reltuples 59913608 / relpages 11681783
运行级联复制:Master -> Slave 1 -> Slave 2
- Replication Master -> Slave 1相当快,一个很好的通道。
- 复制从站 1 -> 从站 2很慢,跨大陆,大约 10 Mbit/s。
这是一个使用过的实时数据库,其中包含大约1.5TB的数据。
需要做什么:
- 删除所有数据以从新设置开始(进行持续清理并且不允许它增长这么大)。
问题: 实现这一目标的最有效方法是什么:
- 不会在Master和Slave 1之间造成巨大的延迟
- 不会导致Slave 2不可逆转地落后到无法追赶的状态
照我看来:
- 安全的方式 - 做一个副本,交换地方,删除数据不断看滞后
- 其他方式 - 进行复制、交换位置、DROP 表 - 但这会同时导致大量数据并且从站 2会丢失?
DROP TABLE 通过 WAL 流发送的信息非常少,并且它发送的信息与表中有多少行无关。