Оновлення: я опублікував про це на форумах AWS - будь ласка, заходьте і запитайте його там .
На момент написання запису Amazon RDS не підтримує фізичну реплікацію поза RDS. Ви можете GRANT
користуватися REPLICATION
правом, використовуючи rds_superuser
логін, але ви не можете налаштувати replication
записи для зовнішніх IP-адрес у pg_hba.conf
.
Крім того, коли ви створюєте групу параметрів БД в RDS, деякі ключові параметри відображаються, але заблоковані, наприклад archive_command
, в яких заблоковано /etc/rds/dbbin/pgscripts/rds_wal_archive %p
. AWS RDS для PostgreSQL не видає цих WAL для зовнішнього доступу (скажімо, через S3), як це було б потрібно, якби ви використовували реплікацію WAL-доставки для зовнішнього PITR.
Тож у цей момент, якщо ви хочете прогулятися по службі, не використовуйте RDS. Це консервована база даних, зручна у використанні, але простота у використанні часто означає, що вона також обмежена, і це, безумовно, так і тут. Як в коментарях зазначає Джо Лав, він забезпечує доставку WAL та PITR в межах RDS , але ви не можете отримати доступ до WAL до цього ззовні .
Тож вам потрібно використовувати власні засоби резервного копіювання RDS - скиди, знімки та власний ПІТР на основі WAL.
Навіть якщо RDS дозволив вам здійснювати з'єднання реплікації (для pg_basebackup
або потокової реплікації) і дозволив вам отримати доступ до архівованої WAL, ви, можливо, не зможете фактично споживати цю WAL. RDS працює з виправленим PostgreSQL, хоча ніхто не знає, наскільки сильно виправлений або він істотно змінює формат на диску. Він також працює на архітектурі, обраній Amazon, яка, мабуть, є x64 Linux, але її не легко визначити. Оскільки PostgreSQL на форматі диска та реплікації залежать від архітектури, ви можете реплікувати лише на хости з тією ж архітектурою, що і в Amazon RDS, і лише якщо ваша збірка PostgreSQL сумісна з їхньою.
Крім усього іншого, це означає, що у вас немає простого способу мігрувати подалі від RDS. Вам доведеться зупинити всі записи в базу даних досить довго, щоб взяти a pg_dump
, відновити його та запустити новий БД. Звичайні хитрощі з реплікацією та відмовою, з rsync тощо, не працюватимуть, оскільки у вас немає прямого доступу до хоста БД.
Навіть якщо RDS керував незавершеним PostgreSQL, Amazon, ймовірно, не хотів би дозволити вам робити потокове передачу WAL в RDS або імпортувати в RDS з pg_basebackup
метою безпеки. PostgreSQL трактує каталог даних як довірений вміст, і якщо ви створили якісь розумні функції "LANGUAGE c", які підключають внутрішню функціональність або зробили щось інше складне, ви, можливо, зможете використовувати сервер для отримання більшого доступу, ніж ви повинні мати . Тож Amazon не збирається скоро дозволити вхідний WAL.
Вони можуть підтримувати вихідну розсилку WAL, але вищезазначені проблеми із сумісністю формату, свободою внесення змін тощо застосовуються.
Натомість слід використовувати такий інструмент, як Londiste або Bucardo.