参考:http://mysql.taobao.org/monthly/2015/02/03/
replication slot是什么?
replication slots 是从 postgresql 9.4 引入的,主要是提供了一种自动化的方法来确保主控机在所有的后备机收到 WAL 段之前不会移除它们,并且主控机也不会移除可能导致恢复冲突的行,即使后备机断开也是如此。
为了防止 WAL 被删,SLOT restart_lsn 之后的WAL文件都不会删除。(wal_keep_segments 则是一个人为设定的边界,slot 是自动设定的边界(无上限),所以使用 slot 并且下游断开后,可能导致数据库的 WAL 堆积爆满)。
用法
复制槽分为物理复制槽physical replication slot和逻辑复制槽logic replication slot。
物理复制槽
物理复制槽一般结合流复制一起使用,能够很好的保证备库需要的日志不会在主库删除。
1、在主库创建physical replication slot:
SELECT * FROM pg_create_physical_replication_slot('my_rep_slot_1');
2、主库查询所有slot,此时replication slot还不处于active状态。active=f
postgres=# SELECT * FROM pg_replication_slots ;
slot_name | plugin | slot_type