สำรองข้อมูลอัตโนมัติ postgres


คำตอบ:


11

คุณสามารถใช้pg_dumpสิ่งนี้:

$ pg_dump -h db_host -U user_name db_name > dump_file.sql

โปรดคิดก่อนตั้งค่า.pgpassไฟล์ที่มีรหัสผ่านที่จะใช้หากการเชื่อมต่อต้องใช้รหัสผ่าน ไฟล์นี้ควรมีบรรทัดของรูปแบบต่อไปนี้:

hostname:port:database:username:password

และเขตข้อมูลสี่แห่งแรกแต่ละแห่งอาจเป็นค่าตัวอักษรหรือ * ซึ่งตรงกับทุกอย่าง ตัวอย่างเช่น*:*:*:postgres:pg_password.

.pgpassไฟล์นี้จะต้องอยู่ในโฮมไดเร็กตอรี่ ~ / และสิทธิ์ในการใช้งานจะต้องไม่อนุญาตการเข้าถึงโลกหรือกลุ่ม chmod 0600 ~/.pgpassบรรลุนี้โดยคำสั่ง


สำรองข้อมูลโดยอัตโนมัติทุกวันหรือไม่?
Anuj Patel

@indyaah: ไม่คุณจะต้องเรียกใช้ทุกวันจาก cron (หรือคล้ายกัน)
Bill Weiss

12

เรียกใช้ pg_dumpall จาก cron


7
pg_dumpall ดีกว่าคำตอบอื่น ๆ เพราะสิ่งนี้สำรองข้อมูลวัตถุฐานข้อมูลส่วนกลางของคุณ (เช่นผู้ใช้และอื่น ๆ ) คุณจะต้องใช้สิ่งเหล่านี้เพื่อกู้คืนฐานข้อมูลของคุณอย่างสมบูรณ์และหากคุณมีจำนวนมากเกินกว่าที่จะไม่สามารถสร้างใหม่ได้ อย่างไรก็ตาม pg_dumpall อาจ overkill สำหรับคุณหากคุณต้องการสำรองข้อมูลอินสแตนซ์ฐานข้อมูลเดียวภายในคลัสเตอร์ฐานข้อมูลหลายแห่งเนื่องจาก pg_dumpall จะสำรองข้อมูลทุกอินสแตนซ์ ดังนั้น ... เช่นเดียวกับคำถามและคำตอบด้านเทคนิคส่วนใหญ่มันขึ้นอยู่กับ
KevinRae

1
ฉันมักจะทำให้ "ฐานข้อมูล" และ "เซิร์ฟเวอร์ฐานข้อมูล" เป็นคู่กันนี่เป็นตัวอย่างที่ดี ฉันคิดว่าโปสเตอร์ต้องการสำรองจุดดีทั้งหมด
Bill Weiss

6

ลองAutoPostgreSQLBackup มันเป็นไฟล์สคริปต์เดียวสามารถกำหนดค่าได้อย่างง่ายดายตามความต้องการของคุณไม่ว่าจะเป็นรายวันรายสัปดาห์และรายเดือนบันทึกต่ออีเมลไฟล์บันทึกหรือ stdout ฯลฯ


ฉันยังใช้ AutoPostgreSQLBackup และก็ทำงานได้เป็นอย่างดีสำหรับฉัน ;-)
Matthieu

4

หากเป็นฐานข้อมูลขนาดเล็กและความต้องการต่ำในการสำรองข้อมูลเพียงวันละครั้งเพียงรัน pg_dump จาก cron เพื่อถ่ายโอนไปยังไฟล์โลคัลจากนั้นใช้สิ่งที่คุณต้องสำรองไฟล์บนเครื่องเพื่อเก็บถาวร .


4

pg_rmanเป็นเครื่องมือใหม่ที่ให้การสำรองข้อมูลเพิ่มเติมซึ่งทำงานกับ PostgreSQL 8.4 หรือใหม่กว่า


2

ลองastrails ปลอดภัย มันรู้วิธีสำรอง mysql (mysqldump), postgres (pg_dump) หรือเพียงแค่ไฟล์ธรรมดา (tar) ที่มีการเข้ารหัส (gnupg) และอัปโหลดไปยัง S3 / Sftp


1

pg_dump เป็นทางออกที่ดี แต่ถ้าคุณพยายามสำรองข้อมูลจำนวนมากบางทีนี่อาจช่วยได้:

http://www.postgresql.org/docs/8.1/static/backup-online.html

ซึ่งอันที่จริงแล้วเป็นชนิดของการบันทึก 'ดิบ' แต่อาจมีประโยชน์ในฐานะวิธีสำรองข้อมูลเพิ่มเติม ...


1

นี่คือสคริปต์ที่จะสำรองข้อมูลแต่ละฐานข้อมูลเช่นเดียวกับ PostgreSQL GLOBALS และข้อมูลการเข้าสู่ระบบของผู้ใช้ที่สำคัญ แต่มักจะลืม

ความสำคัญของสิ่งนี้คือการใช้ประโยชน์จากการบีบอัดที่ pg_dumpall ไม่ได้จัดเตรียมไว้และข้อมูลที่ลืมที่ pg_dump ข้ามไป

สิ่งนี้จะต้องใช้ pgpass หรือการตั้งค่าที่คล้ายกันตามที่อธิบายไว้ที่นี่http://wiki.postgresql.org/wiki/Pgpass

นี่คือการตั้งค่าสำหรับ OSX แต่เพียงเปลี่ยนเส้นทางของโปรแกรมและมันจะทำงานได้ดี

สำรองข้อมูล / sqlbackups สคริปต์จะส่งคืนขนาดไดเรกทอรี / และมีจุดพักที่จะส่งกลับสถานะที่ไม่ใช่ศูนย์ถ้ามันล้มเหลว ฉันใช้ร่วมกับ pgAgent เพื่อสำรองข้อมูลรายวัน

สคริปต์แก้ไขแล้วขอโทษที่ :(


1

ชำระทำไมลงด้วยการสำรองข้อมูลทุกวันเมื่อคุณสามารถมีการกู้คืนจุดในเวลาที่มีบาร์เทนเด ?


ฉันจะให้ผู้ดูแลตัดสินใจ แต่ฉันเชื่อว่าการคืนคำถามอายุ 5 ปีเพื่อเสียบผลิตภัณฑ์เพื่อการค้าเป็นรูปแบบที่ไม่ดีที่นี่
gparent

เอ๊ะมันเป็นโอเพ่นซอร์ส: sourceforge.net/projects/pgbarman/files
Giovanni Toraldo

คุณพูดถูกฉันทำผิดสิ่ง ความกังวลหลักของฉันไม่ได้เป็นเช่นนั้นมันเกี่ยวกับการแนะนำคำตอบที่ไม่จริงสิ่งที่ผู้ใช้ถาม 5 ปีหลังจากนั้น อย่างไรก็ตามหลังจากอ่านคำตอบอื่น ๆ พวกเขาดูเหมือนจะแนะนำวิธีการสำรองข้อมูลที่คล้ายกันดังนั้นฉันเดาว่ามันไม่เลว ธงของฉันอาจจะถูกปฏิเสธและเราจะเรียกมันว่าวัน: D
ชัดเจน

0

ตามที่คนอื่นพูด: pg_dumpall

นอกจากนี้ดูที่บันทึกการจัดส่ง จากนั้นคุณจะได้รับการสำรองข้อมูล ณ เวลาที่มากขึ้นซึ่งคุณสามารถเล่นได้: http://www.postgresql.org/docs/8.3/static/runtime-config-wal.html

หรือวิธีการเกี่ยวกับการสำรองข้อมูลในคู่มือ:

http://www.postgresql.org/docs/8.3/static/backup.html

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.