ວິທີການ ສຳ ຮອງແລະເກັບຂໍ້ມູນ 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.