ວິທີການ ສຳ ຮອງແລະເກັບຂໍ້ມູນ PostgreSQL


ໃນສະພາບແວດລ້ອມການຜະລິດ, ບໍ່ວ່າຈະເປັນຖານຂໍ້ມູນ PostgreSQL ຂອງທ່ານຂະ ໜາດ ໃຫຍ່ຫລືນ້ອຍປານໃດ, ການກັບມາເປັນປົກກະຕິແມ່ນລັກສະນະ ສຳ ຄັນຂອງການຈັດການຖານຂໍ້ມູນ. ໃນບົດຂຽນນີ້, ທ່ານຈະໄດ້ຮຽນຮູ້ວິທີການ ສຳ ຮອງແລະສ້າງຖານຂໍ້ມູນ PostgreSQL.

ພວກເຮົາສົມມຸດວ່າທ່ານໄດ້ຕິດຕັ້ງລະບົບຖານຂໍ້ມູນ PostgreSQL ແລ້ວ. ຖ້າບໍ່, ອ່ານບົດຄວາມຕໍ່ໄປນີ້ຂອງພວກເຮົາເພື່ອຕິດຕັ້ງ PostgreSQL ໃນການແຈກຈ່າຍ Linux ຂອງທ່ານ.

  • ວິທີການຕິດຕັ້ງ PostgreSQL ແລະ pgAdmin4 ໃນ Ubuntu 20.04
  • ວິທີການຕິດຕັ້ງ PostgreSQL ແລະ pgAdmin ໃນ CentOS 8
  • ວິທີການຕິດຕັ້ງ PostgreSQL ແລະ pgAdmin ໃນ RHEL 8

ເລີ່ມຕົ້ນ…

ສຳ ຮອງຖານຂໍ້ມູນ PostgreSQL ດຽວ

PostgreSQL ໃຫ້ປະໂຫຍດ pg_dump ເພື່ອຊ່ວຍໃຫ້ທ່ານ ສຳ ຮອງຖານຂໍ້ມູນ. ມັນສ້າງເອກະສານຖານຂໍ້ມູນດ້ວຍ ຄຳ ສັ່ງ SQL ໃນຮູບແບບທີ່ສາມາດຟື້ນຟູໄດ້ງ່າຍໃນອະນາຄົດ.

ເພື່ອ ສຳ ຮອງ, ຖານຂໍ້ມູນ PostgreSQL, ເລີ່ມຕົ້ນໂດຍການເຂົ້າສູ່ລະບົບຖານຂໍ້ມູນເຊີຟເວີຂອງທ່ານ, ຫຼັງຈາກນັ້ນປ່ຽນໄປທີ່ບັນຊີຜູ້ໃຊ້ Postgres, ແລະແລ່ນ pg_dump ດັ່ງຕໍ່ໄປນີ້ (ທົດແທນ tecmintdb ໂດຍຊື່ຂອງຖານຂໍ້ມູນທີ່ທ່ານຕ້ອງການ ສຳ ຮອງ). ໂດຍຄ່າເລີ່ມຕົ້ນ, ຮູບແບບຜົນຜະລິດແມ່ນເອກະສານສະຄິບ SQL-plain.

$ pg_dump tecmintdb > tecmintdb.sql

pg_dump ສະຫນັບສະຫນູນຮູບແບບຜົນຜະລິດອື່ນໆເຊັ່ນກັນ. ທ່ານສາມາດລະບຸຮູບແບບຜົນຜະລິດໂດຍໃຊ້ຕົວເລືອກ -F, ບ່ອນທີ່ c ໝາຍ ເຖິງເອກະສານການຈັດເກັບຮູບແບບທີ່ຖືກຕ້ອງ, d ໝາຍ ຄວາມວ່າການຈັດເກັບຮູບແບບຂອງເອກະສານ, ແລະ ໝາຍ ຄວາມວ່າຮູບແບບເອກະສານ tar format.

ຍົກຕົວຢ່າງ:

$ pg_dump -F c tecmintdb > tecmintdb.dump
OR
$ pg_dump -F t tecmintdb > tecmintdb.tar

ເພື່ອຖິ້ມຜົນຜະລິດອອກໃນຮູບແບບຜົນຜະລິດຂອງໄດເລກະທໍລີ, ໃຫ້ໃຊ້ທຸງ -f (ເຊິ່ງໃຊ້ເພື່ອ ກຳ ນົດເອກະສານຜົນຜະລິດ) ເພື່ອ ກຳ ນົດທິດທາງຂອງເປົ້າ ໝາຍ ແທນທີ່ຈະເປັນເອກະສານ. ໄດເລກະທໍລີທີ່ຈະຖືກສ້າງຂື້ນໂດຍ pg_dump ບໍ່ຕ້ອງມີ.

$ pg_dump -F d tecmintdb -f tecmintdumpdir	

ເພື່ອ ສຳ ຮອງຖານຂໍ້ມູນ PostgreSQL ທັງ ໝົດ, ໃຫ້ໃຊ້ pg_dumpall tool ດັ່ງທີ່ເຫັນ.

$ pg_dumpall > all_pg_dbs.sql

ທ່ານສາມາດຟື້ນຟູສິ່ງເສດເຫຼືອໂດຍໃຊ້ psql ດັ່ງທີ່ສະແດງໄວ້.

$ pgsql -f all_pg_dbs.sql postgres

ການຟື້ນຟູຖານຂໍ້ມູນ PostgreSQL

ເພື່ອຟື້ນຟູຖານຂໍ້ມູນ PostgreSQL, ທ່ານສາມາດໃຊ້ເຄື່ອງໃຊ້ໄຟຟ້າ psql ຫຼື pg_restore. psql ຖືກໃຊ້ໃນການຟື້ນຟູເອກະສານຂໍ້ຄວາມທີ່ຖືກສ້າງຂື້ນໂດຍ pg_dump ໃນຂະນະທີ່ pg_restore ຖືກ ນຳ ໃຊ້ເພື່ອຟື້ນຟູຖານຂໍ້ມູນ PostgreSQL ຈາກບ່ອນເກັບຂໍ້ມູນທີ່ສ້າງຂື້ນໂດຍ pg_dump ໃນ ໜຶ່ງ ຮູບແບບທີ່ບໍ່ ທຳ ມະດາ (custom, tar, ຫຼື directory).

ນີ້ແມ່ນຕົວຢ່າງຂອງວິທີການກູ້ຄືນຂໍ້ມູນແບບ ທຳ ມະດາ:

$ psql tecmintdb < tecmintdb.sql

ດັ່ງທີ່ໄດ້ກ່າວມາຂ້າງເທິງ, ການຖີ້ມຂີ້ເຫຍື້ອທີ່ມີຮູບແບບຕາມຮີດຄອງປະເພນີບໍ່ແມ່ນສະຄິບ ສຳ ລັບ pgsql, ສະນັ້ນມັນຕ້ອງໄດ້ຮັບການຟື້ນຟູດ້ວຍ pg_restore ຕາມທີ່ສະແດງໄວ້.

$ pg_restore -d tecmintdb tecmintdb.dump
OR
$ pg_restore -d tecmintdb tecmintdb.tar
OR
$ pg_restore -d tecmintdb tecmintdumpdir	

ຖານຂໍ້ມູນ PostgreSQL ຂະ ໜາດ ໃຫຍ່ ສຳ ຮອງ

ຖ້າຖານຂໍ້ມູນທີ່ທ່ານ ກຳ ລັງ ສຳ ຮອງແມ່ນມີຂະ ໜາດ ໃຫຍ່ແລະທ່ານຕ້ອງການສ້າງເອກະສານຜົນຜະລິດທີ່ນ້ອຍກວ່າພໍສົມ, ຫຼັງຈາກນັ້ນທ່ານກໍ່ສາມາດເອີ້ນເອົາບ່ອນຖິ້ມທີ່ຖືກບີບອັດບ່ອນທີ່ທ່ານຕ້ອງກັ່ນຕອງຜົນຜະລິດຂອງ pg_dump ຜ່ານເຄື່ອງມືອັດເຊັ່ນ gzip ຫຼືສິ່ງທີ່ທ່ານມັກ:

$ pg_dump tecmintdb | gzip > tecmintdb.gz

ຖ້າຖານຂໍ້ມູນມີຂະ ໜາດ ໃຫຍ່ທີ່ສຸດ, ທ່ານສາມາດຖີ້ມພ້ອມກັນໂດຍການຖິ້ມຕາຕະລາງ number_of_jobs ພ້ອມໆກັນໂດຍໃຊ້ແທັບ -j, ດັ່ງທີ່ສະແດງໄວ້.

$ pg_dump -F d -j 5 -f tecmintdumpdir

ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະສັງເກດວ່າຕົວເລືອກການຖິ້ມຂະຫນານຊ່ວຍຫຼຸດຜ່ອນເວລາຂອງການຖິ້ມ, ແຕ່ໃນທາງກົງກັນຂ້າມ, ມັນຍັງຊ່ວຍເພີ່ມພາລະໃນຖານຂໍ້ມູນ.

ຖານຂໍ້ມູນ PostgreSQL Backup ຫ່າງໄກສອກຫຼີກ

pg_dump ແມ່ນເຄື່ອງມືລູກຄ້າ PostgreSQL ປົກກະຕິ, ມັນສະຫນັບສະຫນູນການດໍາເນີນງານໃນເຄື່ອງແມ່ຂ່າຍຖານຂໍ້ມູນຫ່າງໄກສອກຫຼີກ. ເພື່ອລະບຸເຄື່ອງແມ່ຂ່າຍຖານຂໍ້ມູນຫ່າງໄກສອກຫຼີກ pg_dump ຄວນຕິດຕໍ່, ໃຊ້ຕົວເລືອກເສັ້ນ ຄຳ ສັ່ງ -h ເພື່ອ ກຳ ນົດໂຮດຫ່າງໄກສອກຫຼີກແລະ -p ກຳ ນົດພອດຫ່າງໄກສອກຫຼີກທີ່ server ເກັບຂໍ້ມູນຢູ່. ນອກຈາກນັ້ນ, ໃຊ້ທຸງ -U ເພື່ອລະບຸຊື່ບົດບາດຂອງຖານຂໍ້ມູນເພື່ອເຊື່ອມຕໍ່ເປັນ.

ຈືຂໍ້ມູນການປ່ຽນແທນ 10.10.20.10 ແລະ 5432 ແລະ tecmintdb ກັບທີ່ຢູ່ IP ຂອງເຈົ້າພາບຫລື hostname, ພອດຖານຂໍ້ມູນແລະຊື່ຖານຂໍ້ມູນຕາມ ລຳ ດັບ.

$ pg_dump -U tecmint -h 10.10.20.10 -p 5432 tecmintdb > tecmintdb.sql

ຮັບປະກັນວ່າຜູ້ໃຊ້ເຊື່ອມຕໍ່ຫ່າງໄກສອກຫຼີກມີສິດທິພິເສດທີ່ ຈຳ ເປັນໃນການເຂົ້າເຖິງຖານຂໍ້ມູນ, ແລະວິທີການກວດສອບຖານຂໍ້ມູນທີ່ ເໝາະ ສົມແມ່ນຖືກ ກຳ ນົດໄວ້ໃນເຊີບເວີຖານຂໍ້ມູນ, ຖ້າບໍ່ດັ່ງນັ້ນ, ທ່ານຈະໄດ້ຮັບຂໍ້ຜິດພາດຄືກັບທີ່ສະແດງຢູ່ໃນພາບ ໜ້າ ຈໍຕໍ່ໄປນີ້.

ມັນກໍ່ເປັນໄປໄດ້ທີ່ຈະຖີ້ມຖານຂໍ້ມູນໂດຍກົງຈາກເຊີບເວີໄປຫາເຄື່ອງອື່ນ, ໃຊ້ pg_dump ແລະ psql utilities ຕາມທີ່ສະແດງ.

$ pg_dump -U tecmint -h 10.10.20.10 tecmintdb | pqsl -U tecmint -h 10.10.20.30 tecmintdb

ຖານຂໍ້ມູນ PostgreSQL Backup ໂດຍອັດຕະໂນມັດໂດຍໃຊ້ວຽກ Cron

ທ່ານສາມາດປະຕິບັດການ ສຳ ຮອງຂໍ້ມູນໃນຊ່ວງເວລາປົກກະຕິໂດຍໃຊ້ວຽກ cron. ວຽກ Cron ແມ່ນວິທີທີ່ໃຊ້ທົ່ວໄປໃນການຈັດຕາຕະລາງວຽກງານຕ່າງໆເພື່ອເຮັດວຽກໃນ server.

ທ່ານສາມາດຕັ້ງຄ່າວຽກ cron ເພື່ອອັດຕະໂນມັດການ ສຳ ຮອງຖານຂໍ້ມູນ PostgreSQL ດັ່ງຕໍ່ໄປນີ້. ໃຫ້ສັງເກດວ່າທ່ານ ຈຳ ເປັນຕ້ອງ ດຳ ເນີນການ ຄຳ ສັ່ງດັ່ງຕໍ່ໄປນີ້ໃນຖານະຜູ້ ນຳ ໃຊ້ PostgreSQL superuser:

$ mkdir -p /srv/backups/databases

ຕໍ່ໄປ, ດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປນີ້ເພື່ອແກ້ໄຂ crontab ເພື່ອເພີ່ມວຽກ cron ໃຫມ່.

$ crontab -e

ຄັດລອກແລະວາງສາຍຕໍ່ໄປນີ້ຢູ່ປາຍ crontab. ທ່ານສາມາດໃຊ້ຮູບແບບໃດ ໜຶ່ງ ທີ່ໄດ້ອະທິບາຍຂ້າງເທິງ.

0 0 * * *  pg_dump  -U postgres tecmintdb > /srv/backups/postgres/tecmintdb.sql

ບັນທຶກເອກະສານແລະອອກ.

ບໍລິການ cron ຈະເລີ່ມເຮັດວຽກ ໃໝ່ ໂດຍອັດຕະໂນມັດໂດຍບໍ່ຕ້ອງເລີ່ມຕົ້ນ ໃໝ່. ແລະວຽກ cron ນີ້ຈະເຮັດວຽກທຸກໆມື້ໃນເວລາທ່ຽງຄືນ, ມັນແມ່ນການແກ້ໄຂຂັ້ນຕ່ ຳ ສຸດ ສຳ ລັບວຽກ ສຳ ຮອງ.

ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບວິທີການຈັດຕາຕະລາງວຽກ cron, ເບິ່ງ: ວິທີການສ້າງແລະຈັດການ Cron Jobs ໃນ Linux

ນັ້ນແມ່ນ ສຳ ລັບດຽວນີ້! ມັນເປັນຄວາມຄິດທີ່ດີທີ່ຈະເຮັດການ ສຳ ຮອງຂໍ້ມູນເປັນສ່ວນ ໜຶ່ງ ຂອງວຽກງານການຄຸ້ມຄອງຖານຂໍ້ມູນຂອງທ່ານ. ເພື່ອເຂົ້າຫາພວກເຮົາ ສຳ ລັບ ຄຳ ຖາມຫຼື ຄຳ ເຫັນໃດໆ, ໃຫ້ໃຊ້ແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້. ສຳ ລັບຂໍ້ມູນເພີ່ມເຕີມ, ເບິ່ງ ໜ້າ pg_dump ແລະ pg_restore.