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, psql và pg_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]
Leave A Comment?