3 ms·
Teleport: Postgres replicator in Go that works without superuser permissions
- pedrofranceschi 10y agoThere were no solid Postgres replicator that supports schema migrations and real-time data updates when you don't have superuser permissions on the database (read: AWS RDS), so we wrote our own in Go.
- zzzcpan 10y agoIf teleport machine itself dies during replication, you'll have an inconsistent replica, wouldn't you?
- pedrofranceschi 10y agoNo, because changes are saved by triggers that run directly on the database. When the teleport instance is back up, those changes will be batched and transmitted.
- zzzcpan 10y agoI think I get it now. Essentially your replica is always in an inconsistent state, you cannot ever guaranty for anything, that happened on one replica, to be present on another. It's mostly for backups, disaster recovery, when it is ok to lose some data, right?
- pedrofranceschi 10y agoNo. Teleport installs triggers on all tables the first time it starts. After the first start, consistency is guaranteed because triggers will save every data mutation in a separate table (that teleport reads to generate batches for the target instance).
- zzzcpan 10y agoYes, I understand that triggers will save every data mutation, but no matter what you do second replica is not going to see them synchronously. It's always behind and inconsistent, if first one dies - you lose some data. EDIT: Maybe you should rename it to something like "trigger-based asynchronous replication", so people would get the right idea about the guarantees it provides.