นี่คือคำสั่ง pg_standby ที่สามารถเรียกใช้ในผู้ให้บริการโฮสติ้งฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
pg_standby - รองรับการสร้าง PostgreSQL warm standby server
เรื่องย่อ
pg_standby [ตัวเลือก... ] ที่เก็บถาวร ไฟล์ถัดไป xlogfilepath.xlog [เริ่มใหม่]
DESCRIPTION
pg_standby รองรับการสร้างเซิร์ฟเวอร์ฐานข้อมูล “สแตนด์บายที่อบอุ่น” มันถูกออกแบบให้เป็น
โปรแกรมที่พร้อมสำหรับการผลิต เช่นเดียวกับเทมเพลตที่ปรับแต่งได้หากคุณต้องการเฉพาะ
การปรับเปลี่ยน
pg_standby ถูกออกแบบมาให้รอ คำสั่ง restore_ซึ่งจำเป็นต่อการสร้างมาตรฐาน
การเก็บถาวรการกู้คืนในการดำเนินการสแตนด์บายที่อบอุ่น จำเป็นต้องมีการกำหนดค่าอื่น ๆ เช่นกัน
ซึ่งทั้งหมดได้อธิบายไว้ในคู่มือเซิร์ฟเวอร์หลัก (ดูหัวข้อ 25.2 “บันทึกการจัดส่ง
เซิร์ฟเวอร์สแตนด์บาย” ในเอกสารประกอบ)
ในการกำหนดค่าเซิร์ฟเวอร์สแตนด์บายเพื่อใช้ pg_standby ให้ใส่สิ่งนี้ลงใน recovery.conf
ไฟล์การกำหนดค่า:
restore_command = 'pg_standby แฟ้มเอกสารผบ %f %p %r'
ที่ไหน แฟ้มเอกสารผบ เป็นไดเร็กทอรีที่ควรกู้คืนไฟล์เซ็กเมนต์ WAL
If เริ่มใหม่ ถูกระบุโดยปกติโดยใช้มาโคร %r จากนั้นไฟล์ WAL ทั้งหมด
เหตุผลก่อนหน้าไฟล์นี้จะถูกลบออกจาก ที่เก็บถาวร. สิ่งนี้จะย่อขนาด
จำนวนไฟล์ที่ต้องเก็บรักษาไว้ ในขณะที่ยังคงความสามารถในการเริ่มระบบใหม่จากการหยุดทำงาน ใช้
ของพารามิเตอร์นี้มีความเหมาะสมหาก ที่เก็บถาวร เป็นพื้นที่การแสดงละครชั่วคราวสำหรับ
เซิร์ฟเวอร์สแตนด์บายนี้โดยเฉพาะ แต่ ไม่ เมื่อ ที่เก็บถาวร มีวัตถุประสงค์เพื่อเป็น
พื้นที่เก็บถาวร WAL ระยะยาว
pg_standby ถือว่า ที่เก็บถาวร เป็นไดเร็กทอรีที่สามารถอ่านได้โดยผู้ใช้ที่เป็นเจ้าของเซิร์ฟเวอร์
If เริ่มใหม่ (หรือ -k) ถูกระบุ, the ที่เก็บถาวร ไดเรกทอรีต้องเขียนได้
เกินไป
มีสองวิธีในการล้มเหลวไปยังเซิร์ฟเวอร์ฐานข้อมูล "สแตนด์บายที่อบอุ่น" เมื่อเซิร์ฟเวอร์หลัก
ล้มเหลว:
สมาร์ทเฟลโอเวอร์
ในสมาร์ทเฟลโอเวอร์ เซิร์ฟเวอร์ถูกนำขึ้นหลังจากใช้ไฟล์ WAL ทั้งหมดที่มีอยู่ใน
ไฟล์เก็บถาวร ส่งผลให้ข้อมูลสูญหายเป็นศูนย์ แม้ว่าเซิร์ฟเวอร์สำรองจะล่ม
ข้างหลังแต่ถ้ามี WAL ที่ยังไม่ได้ใช้มากก็อาจจะนานก่อน
เซิร์ฟเวอร์สำรองพร้อมแล้ว หากต้องการทริกเกอร์สมาร์ทเฟลโอเวอร์ ให้สร้างไฟล์ทริกเกอร์
ที่มีคำว่าสมาร์ทหรือเพียงแค่สร้างและปล่อยว่างไว้
ล้มเหลวอย่างรวดเร็ว
ใน failover อย่างรวดเร็ว เซิร์ฟเวอร์จะถูกนำขึ้นทันที ไฟล์ WAL ใด ๆ ในไฟล์เก็บถาวร
ที่ยังไม่ได้นำไปใช้จะถูกละเว้นและการทำธุรกรรมทั้งหมดในไฟล์เหล่านั้น
จะหายไป หากต้องการทริกเกอร์การเฟลโอเวอร์อย่างรวดเร็ว ให้สร้างไฟล์ทริกเกอร์และเขียนคำว่า fast
เข้าไปในนั้น pg_standby ยังสามารถกำหนดค่าให้ดำเนินการเฟลโอเวอร์อย่างรวดเร็วได้โดยอัตโนมัติ
หากไม่มีไฟล์ WAL ใหม่ปรากฏขึ้นภายในช่วงเวลาที่กำหนด
OPTIONS
pg_standby ยอมรับอาร์กิวเมนต์บรรทัดคำสั่งต่อไปนี้:
-c
ใช้คำสั่ง cp หรือ copy เพื่อกู้คืนไฟล์ WAL จากไฟล์เก็บถาวร นี้เท่านั้นที่รองรับ
พฤติกรรมดังนั้นตัวเลือกนี้จึงไร้ประโยชน์
-d
พิมพ์เอาต์พุตการบันทึกการดีบักจำนวนมากบน stderr
-k
ลบไฟล์จาก ที่เก็บถาวร เพื่อไม่ให้มีไฟล์ WAL มากไปกว่านี้ก่อนไฟล์
ปัจจุบันถูกเก็บไว้ในที่เก็บถาวร ศูนย์ (ค่าเริ่มต้น) หมายถึงไม่ต้องลบไฟล์ใด ๆ
รถในตำนานจากเกม ที่เก็บถาวร. พารามิเตอร์นี้จะถูกละเว้นอย่างเงียบ ๆ if เริ่มใหม่ is
กำหนดไว้ เนื่องจากวิธีการกำหนดนั้นแม่นยำกว่าในการพิจารณาความถูกต้อง
จุดตัดเก็บถาวร การใช้พารามิเตอร์นี้คือ เลิก จาก PostgreSQL 8.3; มันคือ
ปลอดภัยและมีประสิทธิภาพมากขึ้นในการระบุ a เริ่มใหม่ พารามิเตอร์. การตั้งค่าที่เล็กเกินไป
อาจส่งผลให้มีการลบไฟล์ที่ยังจำเป็นสำหรับการรีสตาร์ทสแตนด์บาย
เซิร์ฟเวอร์ ในขณะที่การตั้งค่าขนาดใหญ่เกินไปจะเปลืองพื้นที่จัดเก็บ
-r สูงสุด
ตั้งค่าจำนวนครั้งสูงสุดเพื่อลองคำสั่งคัดลอกอีกครั้งหากล้มเหลว (ค่าเริ่มต้น 3)
หลังจากล้มเหลวแต่ละครั้งเรารอ เวลานอน * num_retry เพื่อให้เวลารอ
เพิ่มขึ้นเรื่อยๆ ดังนั้นตามค่าเริ่มต้น เราจะรอ 5 วินาที 10 วินาที จากนั้น 15 วินาที
ก่อนที่จะรายงานความล้มเหลวกลับไปที่เซิร์ฟเวอร์สแตนด์บาย นี่จะถูกตีความว่า
สิ้นสุดการกู้คืนและการสแตนด์บายจะเกิดขึ้นอย่างเต็มที่
-s เวลานอน
ตั้งค่าจำนวนวินาที (สูงสุด 60 ค่าเริ่มต้น 5) เพื่อเข้าสู่โหมดสลีประหว่างการทดสอบเพื่อดูว่า
ไฟล์ WAL ที่จะกู้คืนยังมีอยู่ในไฟล์เก็บถาวร ค่าเริ่มต้นไม่ใช่
จำเป็นต้องแนะนำ; ศึกษาหัวข้อ 25.2 “เซิร์ฟเวอร์สแตนด์บายบันทึกการจัดส่ง” ใน
เอกสารสำหรับการอภิปราย
-t ทริกเกอร์ไฟล์
ระบุไฟล์ทริกเกอร์ที่ควรทำให้เกิดการเฟลโอเวอร์ ขอแนะนำว่า
คุณใช้ชื่อไฟล์ที่มีโครงสร้างเพื่อหลีกเลี่ยงความสับสนว่าเซิร์ฟเวอร์ใดกำลังเป็นอยู่
ทริกเกอร์เมื่อมีเซิร์ฟเวอร์หลายเครื่องอยู่ในระบบเดียวกัน ตัวอย่างเช่น
/tmp/pgsql.trigger.5432.
-V
--รุ่น
พิมพ์เวอร์ชัน pg_standby แล้วออก
-w เวลารอสูงสุด
ตั้งค่าจำนวนวินาทีสูงสุดเพื่อรอไฟล์ WAL ถัดไป หลังจากนั้นไฟล์จะเร็ว
จะทำการเฟลโอเวอร์ การตั้งค่าเป็นศูนย์ (ค่าเริ่มต้น) หมายถึงรอตลอดไป NS
ไม่จำเป็นต้องแนะนำการตั้งค่าเริ่มต้น ศึกษามาตรา 25.2 “บันทึกการจัดส่ง
เซิร์ฟเวอร์สแตนด์บาย” ในเอกสารประกอบสำหรับการสนทนา
-?
--ช่วยด้วย
แสดงความช่วยเหลือเกี่ยวกับอาร์กิวเมนต์บรรทัดรับคำสั่ง pg_standby และออก
หมายเหตุ
pg_standby ออกแบบมาเพื่อทำงานกับ PostgreSQL 8.2 และใหม่กว่า
PostgreSQL 8.3 มีมาโคร %r ซึ่งออกแบบมาเพื่อให้ pg_standby ทราบค่าสุดท้าย
ไฟล์ที่ต้องการเก็บไว้ ด้วย PostgreSQL 8.2 จะต้องใช้ตัวเลือก -k หากการล้างข้อมูลที่เก็บถาวร
ต้องระบุ. ตัวเลือกนี้ยังคงมีอยู่ใน 8.3 แต่เลิกใช้งานแล้ว
PostgreSQL 8.4 ให้ คำสั่ง Recovery_end_ ตัวเลือก. หากไม่มีตัวเลือกนี้ จะเป็นของเหลือ
ไฟล์ทริกเกอร์อาจเป็นอันตรายได้
pg_standby เขียนด้วยภาษา C และมีซอร์สโค้ดที่ปรับเปลี่ยนได้ง่าย โดยเฉพาะ
ส่วนที่กำหนดเพื่อปรับเปลี่ยนตามความต้องการของคุณเอง
ตัวอย่าง
บนระบบ Linux หรือ Unix คุณอาจใช้:
archive_command = 'cp %p .../archive/%f'
restore_command = 'pg_standby -d -s 2 -t /tmp/pgsql.trigger.5442 .../archive %f %p %r 2>>standby.log'
recovery_end_command = 'rm -f /tmp/pgsql.trigger.5442'
โดยที่ไดเร็กทอรีเก็บถาวรจะอยู่บนเซิร์ฟเวอร์สแตนด์บาย เพื่อให้
archive_command กำลังเข้าถึงผ่าน NFS แต่ไฟล์อยู่ในเครื่องสแตนด์บาย
(เปิดใช้งานการใช้ ln) นี่จะ:
·สร้างเอาต์พุตการดีบักใน standby.log
· สลีปเป็นเวลา 2 วินาทีระหว่างการตรวจสอบความพร้อมใช้งานของไฟล์ WAL ถัดไป
· หยุดรอเมื่อไฟล์ทริกเกอร์ชื่อ /tmp/pgsql.trigger.5442 ปรากฏขึ้นเท่านั้น และ
ดำเนินการเฟลโอเวอร์ตามเนื้อหา
· ลบไฟล์ทริกเกอร์เมื่อการกู้คืนสิ้นสุดลง
· ลบไฟล์ที่ไม่จำเป็นออกจากไดเร็กทอรีเก็บถาวร
บน Windows คุณอาจใช้:
archive_command = 'คัดลอก %p ...\\archive\\%f'
restore_command = 'pg_standby -d -s 5 -t C:\pgsql.trigger.5442 ...\archive %f %p %r 2>>standby.log'
recovery_end_command = 'เดล C:\pgsql.trigger.5442'
โปรดทราบว่าแบ็กสแลชต้องเพิ่มเป็นสองเท่าใน archive_commandแต่ ไม่ ใน
คำสั่ง restore_ or คำสั่ง Recovery_end_. นี่จะ:
· ใช้คำสั่งคัดลอกเพื่อกู้คืนไฟล์ WAL จากไฟล์เก็บถาวร
·สร้างเอาต์พุตการดีบักใน standby.log
· สลีปเป็นเวลา 5 วินาทีระหว่างการตรวจสอบความพร้อมใช้งานของไฟล์ WAL ถัดไป
· หยุดรอเมื่อไฟล์ทริกเกอร์ชื่อ C:\pgsql.trigger.5442 ปรากฏขึ้นเท่านั้น และ
ดำเนินการเฟลโอเวอร์ตามเนื้อหา
· ลบไฟล์ทริกเกอร์เมื่อการกู้คืนสิ้นสุดลง
· ลบไฟล์ที่ไม่จำเป็นออกจากไดเร็กทอรีเก็บถาวร
คำสั่งคัดลอกบน Windows กำหนดขนาดไฟล์สุดท้ายก่อนที่ไฟล์จะถูกคัดลอกอย่างสมบูรณ์
ซึ่งโดยปกติแล้วจะทำให้ pg_standby สับสน ดังนั้น pg_standby จึงรอเวลาพักเครื่องเป็นวินาที
เมื่อเห็นขนาดไฟล์ที่เหมาะสม cp ของ GNUWin32 กำหนดขนาดไฟล์ต่อจากไฟล์เท่านั้น
สำเนาเสร็จสมบูรณ์
เนื่องจากตัวอย่าง Windows ใช้การคัดลอกที่ปลายทั้งสอง เซิร์ฟเวอร์ใดหรือทั้งสองเซิร์ฟเวอร์อาจเป็น
การเข้าถึงไดเร็กทอรีเก็บถาวรทั่วทั้งเครือข่าย
ใช้ pg_standby ออนไลน์โดยใช้บริการ onworks.net