pg_receivexlog
pg_receivexlog â пÑиÑм жÑÑналов ÑÑанзакÑий Ñ ÑеÑвеÑа Postgres Pro
СинÑакÑиÑ
pg_receivexlog [паÑамеÑÑ...]
ÐпиÑание
УÑилиÑа pg_receivexlog пÑедназнаÑена Ð´Ð»Ñ Ð¿ÑиÑма жÑÑнала ÑÑанзакÑий Ð¾Ñ ÑабоÑаÑÑего клаÑÑеÑа Postgres Pro. ÐÑÑнал ÑÑанзакÑий пеÑедаÑÑÑÑ Ð¿Ð¾ пÑоÑÐ¾ÐºÐ¾Ð»Ñ Ð¿Ð¾Ñоковой ÑепликаÑии и запиÑÑваеÑÑÑ Ð² локалÑнÑй каÑалог. ÐаÑем ÑÑÐ¾Ñ ÐºÐ°Ñалог можно иÑполÑзоваÑÑ Ð² каÑеÑÑве аÑÑ Ð¸Ð²Ð° Ð´Ð»Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑоÑÑоÑÐ½Ð¸Ñ Ð½Ð° Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени (Ñм. Раздел 24.3).
pg_receivexlog пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¶ÑÑнал ÑÑанзакÑий в ÑеалÑном вÑемени по меÑе Ñого, как он генеÑиÑÑеÑÑÑ Ð½Ð° ÑеÑвеÑе, и не ждÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ ÑегменÑов, как ÑÑо Ð´ÐµÐ»Ð°ÐµÑ archive_command. ÐоÑÑÐ¾Ð¼Ñ pg_receivexlog можно иÑполÑзоваÑÑ, не ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°Ñ archive_timeout.
РоÑлиÑие Ð¾Ñ Ð¿ÑиÑмника WAL, ÑабоÑаÑÑего на ведомом ÑеÑвеÑе Postgres Pro, pg_receivexlog по ÑмолÑÐ°Ð½Ð¸Ñ ÑоÑ
ÑанÑÐµÑ Ð½Ð° диÑк даннÑе WAL, ÑолÑко когда Ñайл WAL закÑÑваеÑÑÑ. ÐÐ»Ñ ÑоÑ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
WAL в ÑеалÑном вÑемени необÑ
одимо иÑполÑзоваÑÑ ÐºÐ»ÑÑ --synchronous. Так как пÑиÑмник pg_receivexlog не пÑименÑÐµÑ WAL, важно не допÑÑÑиÑÑ, ÑÑÐ¾Ð±Ñ Ð¾Ð½ ÑÑал ÑинÑ
ÑоннÑм ведомÑм ÑеÑвеÑом, когда паÑамеÑÑ synchronous_commit Ñавен remote_apply. ÐÑли ÑÑо пÑоизойдÑÑ, он бÑÐ´ÐµÑ Ð²ÑглÑдеÑÑ ÐºÐ°Ðº ведомÑй, коÑоÑÑй никогда не Ð¼Ð¾Ð¶ÐµÑ Ð½Ð°Ð³Ð½Ð°ÑÑ Ð²ÐµÐ´ÑÑего, ÑÑо пÑиведÑÑ Ðº блокиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑикÑаÑии ÑÑанзакÑий. ЧÑÐ¾Ð±Ñ ÑÑо пÑедоÑвÑаÑиÑÑ, нÑжно либо ÑÑÑановиÑÑ Ð¿Ð¾Ð´Ñ
одÑÑее знаÑение паÑамеÑÑа synchronous_standby_names, либо задаÑÑ Ð´Ð»Ñ pg_receivexlog Ñакое Ð¸Ð¼Ñ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ (application_name), коÑоÑое не ÑооÑвеÑÑÑвÑÐµÑ ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð¾Ð¼Ñ Ð¸Ð¼ÐµÐ½Ð¸, либо вÑбÑаÑÑ Ð´Ð»Ñ synchronous_commit знаÑение, оÑлиÑное Ð¾Ñ remote_apply.
ÐÑÑнал ÑÑанзакÑий пеÑедаÑÑÑÑ ÑеÑез обÑÑное подклÑÑение к Postgres Pro, Ñ Ð¸ÑполÑзованием пÑоÑокола ÑепликаÑии. ÐодклÑÑение должен ÑÑÑанавливаÑÑ ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð¸Ð»Ð¸ полÑзоваÑÐµÐ»Ñ Ñ Ð¿Ñавом REPLICATION (Ñм. Раздел 20.2), а на ÑеÑвеÑе в pg_hba.conf должно ÑазÑеÑаÑÑÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑение Ð´Ð»Ñ ÑепликаÑии. ÐÑоме Ñого, паÑамеÑÑ max_wal_senders на ÑеÑвеÑе должен бÑÑÑ Ð´Ð¾ÑÑаÑоÑно болÑÑим, ÑÑÐ¾Ð±Ñ Ð¼Ð¾Ð¶Ð½Ð¾ бÑло ÑоздаÑÑ ÐµÑÑ Ð¾Ð´Ð¸Ð½ ÑÐµÐ°Ð½Ñ Ð´Ð»Ñ Ð¿ÐµÑедаÑи поÑока.
ÐÑли подклÑÑение ÑазоÑвалоÑÑ Ð¸Ð»Ð¸ его c Ñамого наÑала не ÑдаÑÑÑÑ ÑÑÑановиÑÑ Ñ Ð½ÐµÐºÑиÑиÑеÑкой оÑибкой, pg_receivexlog бÑÐ´ÐµÑ Ð±ÐµÑконеÑно повÑоÑÑÑÑ Ð¿Ð¾Ð¿ÑÑки подклÑÑÐµÐ½Ð¸Ñ Ð¸ воÑÑÑÐ°Ð½Ð¾Ð²Ð¸Ñ Ð¿ÐµÑедаÑÑ, как ÑолÑко ÑможеÑ. ЧÑÐ¾Ð±Ñ Ð¾ÑмениÑÑ ÑÑо поведение, воÑполÑзÑйÑеÑÑ Ð¿Ð°ÑамеÑÑом -n.
ÐаÑамеÑÑÑ
-DкаÑалог--directory=каÑалогÐаÑалог, в коÑоÑÑй бÑдÑÑ Ð·Ð°Ð¿Ð¸ÑÑваÑÑÑÑ Ð´Ð°Ð½Ð½Ñе.
ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ ÑвлÑеÑÑÑ Ð¾Ð±ÑзаÑелÑнÑм.
--if-not-existsÐе вÑдаваÑÑ Ð¾ÑибкÑ, когда Ñказан паÑамеÑÑ
--create-slotи ÑÐ»Ð¾Ñ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм именем Ñже ÑÑÑеÑÑвÑеÑ.-n--no-loopÐе повÑоÑÑÑÑ Ñикл пÑи оÑÐ¸Ð±ÐºÐ°Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑениÑ, а ÑÑÐ°Ð·Ñ Ð·Ð°Ð²ÐµÑÑаÑÑ ÑабоÑÑ, возвÑаÑÐ°Ñ Ð¾ÑибкÑ.
-sinterval--status-interval=intervalУказÑÐ²Ð°ÐµÑ Ð¸Ð½ÑеÑвал в ÑекÑÐ½Ð´Ð°Ñ Ð¼ÐµÐ¶Ð´Ñ Ð¾ÑпÑавкой пакеÑов ÑÑаÑÑÑа, оÑпÑавлÑемÑÑ Ð½Ð° ÑеÑвеÑ. ÐÑо позволÑÐµÑ ÑпÑоÑÑиÑÑ Ð¼Ð¾Ð½Ð¸ÑоÑинг пÑогÑеÑÑа. ЧÑÐ¾Ð±Ñ Ð²ÑклÑÑиÑÑ Ð¿ÐµÑиодиÑеÑкое обновление ÑÑаÑÑÑа, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑÑÑановиÑÑ Ð·Ð½Ð°Ñение в нолÑ. ÐÑи ÑÑом обновление бÑÐ´ÐµÑ Ð¾ÑпÑавлÑÑÑÑÑ Ð¿Ð¾ запÑоÑÑ ÑеÑвеÑа Ð´Ð»Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°Ð½Ð¸Ñ Ð¾ÑÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾ иÑÑеÑÐµÐ½Ð¸Ñ Ð²Ñемени. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ ÑоÑÑавлÑÐµÑ 10 ÑекÑнд.
-SимÑ_ÑлоÑа--slot=имÑ_ÑлоÑаУказаÑÑ pg_receivexlog иÑполÑзоваÑÑ ÑÑÑеÑÑвÑÑÑий ÑÐ»Ð¾Ñ ÑепликаÑии (Ñм. ÐодÑаздел 25.2.6). Ðогда задан ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ, pg_receivexlog бÑÐ´ÐµÑ ÑообÑаÑÑ ÑеÑвеÑÑ ÑекÑÑÑÑ Ð¿Ð¾Ð·Ð¸ÑиÑ, оÑмеÑаÑ, какой ÑÐµÐ³Ð¼ÐµÐ½Ñ Ð±Ñл ÑÐ¾Ñ ÑанÑн на диÑке, ÑÑÐ¾Ð±Ñ ÑеÑÐ²ÐµÑ Ð¼Ð¾Ð³ ÑдалиÑÑ ÑÑÐ¾Ñ ÑегменÑ, еÑли он болÑÑе не нÑжен.
Ðогда ÐºÐ»Ð¸ÐµÐ½Ñ ÑепликаÑии pg_receivexlog наÑÑÑоен на ÑеÑвеÑе как ÑÐ¸Ð½Ñ ÑоннÑй ÑезеÑвнÑй ÑеÑвеÑ, Ð´Ð»Ñ Ð¸ÑполÑзÑемого ÑлоÑа ÑепликаÑии ÑеÑвеÑÑ Ð±ÑÐ´ÐµÑ Ð¿ÐµÑедаваÑÑÑÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ ÑÐ¾Ñ ÑанÑннÑÑ Ð´Ð°Ð½Ð½ÑÑ , но ÑолÑко когда Ñайл WAL закÑÑваеÑÑÑ. Таким обÑазом, в Ñакой конÑигÑÑаÑии ÑÑанзакÑии на главном ÑеÑвеÑе бÑдÑÑ Ð¾Ð¶Ð¸Ð´Ð°ÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ Ð¿ÑодолжиÑелÑное вÑÐµÐ¼Ñ Ð¸ по ÑÑÑи бÑдÑÑ ÑабоÑаÑÑ Ð½ÐµÑдовлеÑвоÑиÑелÑно. ЧÑÐ¾Ð±Ñ ÑÑа конÑигÑÑаÑÐ¸Ñ ÑабоÑала коÑÑекÑно, нÑжно дополниÑелÑно ÑказаÑÑ Ð¿Ð°ÑамеÑÑ
--synchronous(Ñм. ниже).--synchronousÐ¡Ð¾Ñ ÑанÑÑÑ Ð´Ð°Ð½Ð½Ñе WAL на диÑк ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле Ñого, как они бÑли полÑÑенÑ. Также пеÑедаваÑÑ Ð¿Ð°ÐºÐµÑ ÑоÑÑоÑÐ½Ð¸Ñ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле ÑÐ¾Ñ ÑанениÑ, вне завиÑимоÑÑи оÑ
--status-interval.ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ ÑледÑÐµÑ ÑказÑваÑÑ, еÑли ÐºÐ»Ð¸ÐµÐ½Ñ ÑепликаÑии pg_receivexlog наÑÑÑоен на ÑеÑвеÑе как ÑÐ¸Ð½Ñ ÑоннÑй ÑезеÑвнÑй, ÑÑÐ¾Ð±Ñ Ð¾Ð±ÐµÑпеÑиÑÑ ÑвоевÑеменнÑÑ Ð¿ÐµÑедаÑÑ Ð¾ÑвеÑа ÑеÑвеÑÑ.
-v--verboseÐклÑÑÐ°ÐµÑ Ñежим подÑобнÑÑ ÑообÑений.
Ðалее опиÑÐ°Ð½Ñ Ð¿Ð°ÑамеÑÑÑ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑением.
-dÑÑÑока_подклÑÑениÑ--dbname=ÑÑÑока_подклÑÑениÑУказÑÐ²Ð°ÐµÑ Ð¿Ð°ÑамеÑÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ðº ÑеÑвеÑÑ Ð² ÑоÑмаÑе ÑÑÑоки подклÑÑениÑ. См. ÐодÑаздел 30.1.1 Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ подÑобной инÑоÑмаÑии.
ÐаÑамеÑÑ Ð½Ð°Ð·ÑваеÑÑÑ
--dbnameÐ´Ð»Ñ ÑоглаÑованноÑÑи Ñ Ð´ÑÑгими клиенÑÑкими пÑиложениÑми, но Ñак как pg_receivexlog не подклÑÑаеÑÑÑ Ðº какой-либо конкÑеÑной базе, ÑÑо Ð¸Ð¼Ñ Ð² ÑÑÑоке подклÑÑÐµÐ½Ð¸Ñ Ð¸Ð³Ð½Ð¾ÑиÑÑеÑÑÑ.-hÑеÑвеÑ--host=ÑеÑвеÑУказÑÐ²Ð°ÐµÑ Ð¸Ð¼Ñ ÐºÐ¾Ð¼Ð¿ÑÑÑеÑа, на коÑоÑом ÑабоÑÐ°ÐµÑ ÑеÑвеÑ. ÐÑли знаÑение наÑинаеÑÑÑ Ñ ÐºÐ¾Ñой ÑеÑÑÑ, оно опÑеделÑÐµÑ ÐºÐ°Ñалог Unix-ÑокеÑа. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð±ÐµÑÑÑÑÑ Ð¸Ð· пеÑеменной окÑÑжениÑ
PGHOST, еÑли она ÑÑÑановлена. РпÑоÑивном ÑлÑÑае вÑполнÑеÑÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑение к Unix-ÑокеÑÑ.-pпоÑÑ--port=поÑÑУказÑÐ²Ð°ÐµÑ TCP-поÑÑ Ð¸Ð»Ð¸ ÑаÑÑиÑение Ñайла локалÑного Unix-ÑокеÑа, ÑеÑез коÑоÑÑй ÑеÑÐ²ÐµÑ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑениÑ. ÐнаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð¿ÑеделÑеÑÑÑ Ð¿ÐµÑеменной окÑÑжениÑ
PGPORT, еÑли она ÑÑÑановлена, либо ÑиÑлом, заданнÑм пÑи компилÑÑии.-UимÑ_полÑзоваÑелÑ--username=имÑ_полÑзоваÑелÑÐÐ¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ, под коÑоÑÑм пÑоизводиÑÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑение.
-w--no-passwordÐе вÑдаваÑÑ Ð·Ð°Ð¿ÑÐ¾Ñ Ð½Ð° ввод паÑолÑ. ÐÑли ÑеÑÐ²ÐµÑ ÑÑебÑÐµÑ Ð°ÑÑенÑиÑикаÑÐ¸Ñ Ð¿Ð¾ паÑÐ¾Ð»Ñ Ð¸ паÑÐ¾Ð»Ñ Ð½Ðµ доÑÑÑпен Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð´ÑÑÐ³Ð¸Ñ ÑÑедÑÑв, ÑÐ°ÐºÐ¸Ñ ÐºÐ°Ðº Ñайл
.pgpass, попÑÑка ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ðµ ÑдаÑÑÑÑ. ÐÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½ в пакеÑнÑÑ Ð·Ð°Ð´Ð°Ð½Ð¸ÑÑ Ð¸ ÑкÑипÑÐ°Ñ , где Ð½ÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑ, коÑоÑÑй Ð²Ð²Ð¾Ð´Ð¸Ñ Ð¿Ð°ÑолÑ.-W--passwordÐÑинÑдиÑелÑно запÑаÑиваÑÑ Ð¿Ð°ÑÐ¾Ð»Ñ Ð¿ÐµÑед подклÑÑением к базе даннÑÑ .
ÐÑо неÑÑÑеÑÑвеннÑй паÑамеÑÑ, Ñак как pg_receivexlog запÑаÑÐ¸Ð²Ð°ÐµÑ Ð¿Ð°ÑÐ¾Ð»Ñ Ð°Ð²ÑомаÑиÑеÑки, еÑли ÑеÑÐ²ÐµÑ Ð¿ÑовеÑÑÐµÑ Ð¿Ð¾Ð´Ð»Ð¸Ð½Ð½Ð¾ÑÑÑ Ð¿Ð¾ паÑолÑ. Ðднако ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð½ÑÑÑ ÑÑо, pg_receivexlog лиÑний Ñаз подклÑÑаеÑÑÑ Ðº ÑеÑвеÑÑ. ÐоÑÑÐ¾Ð¼Ñ Ð¸Ð½Ð¾Ð³Ð´Ð° Ð¸Ð¼ÐµÐµÑ ÑмÑÑл ввеÑÑи
-W, ÑÑÐ¾Ð±Ñ Ð¸ÑклÑÑиÑÑ ÑÑÑ Ð½ÐµÐ½ÑжнÑÑ Ð¿Ð¾Ð¿ÑÑÐºÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑениÑ.
pg_receivexlog Ð¼Ð¾Ð¶ÐµÑ Ð²ÑполниÑÑ Ð¾Ð´Ð½Ð¾ из двÑÑ Ð´ÐµÐ¹ÑÑвий в оÑноÑении ÑлоÑов ÑизиÑеÑкой ÑепликаÑии:
--create-slotСоздаÑÑ ÑÐ»Ð¾Ñ ÑизиÑеÑкой ÑепликаÑии Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼, заданнÑм аÑгÑменÑом
--slot, и завеÑÑиÑÑÑÑ.--drop-slotУдалиÑÑ ÑÐ»Ð¾Ñ ÑепликаÑии Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼, заданнÑм аÑгÑменÑом
--slot, и завеÑÑиÑÑÑÑ.
ÐÑÑгие Ñлаги:
-V--versionСообÑиÑÑ Ð²ÐµÑÑÐ¸Ñ pg_receivexlog и завеÑÑиÑÑÑÑ.
-?--helpÐоказаÑÑ ÑпÑÐ°Ð²ÐºÑ Ð¿Ð¾ аÑгÑменÑам командной ÑÑÑоки pg_receivexlog и завеÑÑиÑÑÑÑ.
ÐеÑеменнÑе окÑÑжениÑ
Ðак и болÑÑинÑÑво дÑÑÐ³Ð¸Ñ ÑÑÐ¸Ð»Ð¸Ñ Postgres Pro, пÑиложение Ñакже иÑполÑзÑÐµÑ Ð¿ÐµÑеменнÑе окÑÑжениÑ, поддеÑживаемÑе libpq (Ñм. Раздел 30.14).
ÐамеÑаниÑ
ÐÑименÑÑ pg_receivexlog вмеÑÑо archive_command в каÑеÑÑве оÑновного ÑпоÑоба ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ WAL, наÑÑоÑÑелÑно ÑекомендÑеÑÑÑ Ð¸ÑполÑзоваÑÑ ÑлоÑÑ ÑепликаÑии. РпÑоÑивном ÑлÑÑае ÑеÑÐ²ÐµÑ Ð²Ð¿Ð¾Ð»Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð¿ÐµÑепиÑаÑÑ Ð¸Ð»Ð¸ ÑдалиÑÑ ÑÐ°Ð¹Ð»Ñ Ð¶ÑÑнала ÑÑанзакÑий, пÑежде Ñем они бÑдÑÑ ÑкопиÑованÑ, Ñак как он не полÑÑÐ°ÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð¹ инÑоÑмаÑии, ÑеÑез archive_command или ÑлоÑÑ ÑепликаÑии, о Ñом, как пÑÐ¾Ñ Ð¾Ð´Ð¸Ñ Ð°ÑÑ Ð¸Ð²Ð°ÑÐ¸Ñ Ð¿Ð¾Ñока WAL. УÑÑиÑе, однако, ÑÑо пÑи иÑполÑзовании ÑлоÑа ÑепликаÑии Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸ÑÑÑÑ Ð²ÑÑ Ð¼ÐµÑÑо на диÑке, еÑли пÑинимаÑÑÐ°Ñ ÑÑоÑона не бÑÐ´ÐµÑ ÑÑпеваÑÑ Ð¿ÑинимаÑÑ Ð´Ð°Ð½Ð½Ñе WAL.
ÐÑимеÑÑ
СледÑÑÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¶ÑÑнал ÑÑанзакÑий Ñ ÑеÑвеÑа mydbserver и ÑоÑ
ÑанÑÐµÑ ÐµÐ³Ð¾ в локалÑном каÑалоге /usr/local/pgsql/archive:
$pg_receivexlog -h mydbserver -D /usr/local/pgsql/archive