Hướng dẫn Backup và Restore PostgreSQL

Chào các bạn, bài viết hôm nay mình sẽ hướng dẫn các bạn thực hiện Backup và Restore PostgreSQL.

Chúng ta sẽ sử dụng công cụ pg_dump, psqlpg_restore của PostgreSQL để dump và restore các database bằng lệnh sau:

Backup trực tiếp

[root@localhost ~]# su - postgres
-bash-4.2$ pg_dump [database_name] > backup_file.dump
Restore -> -bash-4.2$ psql [database_name] < backup_file.dump

Hoặc sử dụng lệnh pg_dumpall để dump toàn bộ database trên Node

-bash-4.2$ pg_dumpall >backup_file_all.dump

Backup từ xa

[root@localhost ~]# pg_dump -h 198.168.1.1 -p 5432 -U postgres  [database_name] > backup_file.dump
Restore -> psql -h 198.168.1.1 -p 5432 -U postgres [database_name] < backup_file.dump

Nếu database quá lớn, chúng ta có thể dùng gzip để nén database ngay khi dump

-bash-4.2$ pg_dump [database_name] | gzip > backup_file.dump.gz
Restore -> -bash-4.2$ gunzip -c backup_file.dump.gz | psql [database_name]

Backup sử dụng compress và parallel

Hoặc chúng ta có thể áp dụng custom-format dump của PostgreSQL, khi dump bằng custom-format, PostgreSQL sẽ dùng thư viện zlib có sẵn để nén database, dung lượng của file dump sẽ tương tự với cách dùng gzip ở trên, tuy nhiên sử dụng custom-format khi dump giúp chúng ta có thể restore linh động một hoặc toàn bộ các tables, data hoặc tables schema của database

-bash-4.2$ pg_dump -Fc [database_name] > custom.backup_file.dump

Restore Tables Schema

-bash-4.2$ pg_restore -U postgres --schema-only -d [database_name] < custom.backup_file.dump

Restore data của 1 table

-bash-4.2$ pg_restore -U postgres --data-only -d[database_name] -t [table_name] < custom.backup_file.dump

Để tăng tốc quá trình dump và restore của các database lớn, PostgreSQL có hỗ trợ tính năng Parallel Dump, pg_dump sẽ mở nhiều connections cùng lúc để dump nhiều tables song song với nhau, ví dụ:

-bash-4.2$ pg_dump -j [num] -Fd -f [folder_name] [database_name]

-j : Số lượng connection tới database để dump = num + 1

-Fd : Dump database ra dưới dạng folder-format

-f : folder destination

Các bạn cũng có thể dùng pg_restore với option -j tương tự để tăng tốc quá trình restore database

-bash-4.2$ pg_restore -j [num] -Fd -f [folder_name] [database_name]

Rate This Article

Leave A Comment?