Hướng dẫn Backup và Restore PostgreSQL
Hướng dẫn Backup và Restore PostgreSQL
Backup và Restore Database là việc vô cùng cần thiết trong quá trình quản trị. Khi DB bị lỗi ít nhất cũng còn 1 chỗ để bấu víu vào
A./ Backup và Restore PostgreSQL dạng file text (nên sử dụng)
1./ Backup PostgreSQL
#tạo folder lưu trữ backup và chown quyền
mkdir -p /opt/backup/DB/
chown -R postgres:postgres /opt/backup/DB/
#chuyển sang user postgres
su - postgres
# backup database gitlab_production đến file /opt/backup/DB/gitlab_production02.sql
pg_dump gitlab_production > /opt/backup/DB/gitlab_production.sql -h 127.0.0.1 -p 5432
# hoặc dùng lệnh sau:
pg_dump gitlab_production -f /opt/backup/DB/gitlab_production.sql -h 127.0.0.1 -p 5432
2./ Restore PostgreSQL
# để restore sử dụng lệnh sau
psql gitlab_production < /opt/backup/DB/gitlab_production.sql -h 127.0.0.1 -p 5432
Lệnh trên cũng có thể ghi đè (overide) DB khi restore
B./ Backup và Restore PostgreSQL dạng nén file tar
1./ Backup PostgreSQL dạng tar
pg_dump -U db_user -W -F t db_name > /path/to/your/file/dump_name.tar
2./ Restore PostgreSQL dạng tar
psql -U db_user db_name < dump_name.sql
hoặc
pg_restore -d db_name /path/to/your/file/dump_name.tar -c -U db_user
3./ Các bước Restore PostgreSQL dạng nén Tar cách khác
Bước 1: Restore
Giải nén file
tar -xzvf dump_name.tar
Sau khi giải nén xong sẽ được thư mục
folder-after-extract-db
/opt/postgres/bin/pg_restore -Fd -j $(cat /proc/cpuinfo | grep Xeon | wc -l) --dbname='db_name_new' --host localhost --port 5432 --verbose "/where-store-db/folder-after-extract-db]"
option -j để lấy ra thông số lượng cpu để restore nhiều số lượng job cùng lúc
-j, --jobs=NUM use this many parallel jobs to restore
Nếu thấy có Error trong quá trình restore có thể bỏ qua vì DB vẫn được restore đầy đủ.
Bước 2: Phân quyền
GRANT ALL on DATABASE db_name_new to db_user;
\c db_name_new
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO db_user;
Lưu ý:
Mình có test backup dạng nén tar và dạng text thì không thấy sự khác biệt về dung lượng và thời gian backup. Và việc backup dạng text khi restore thì không thấy bị lỗi, với dạng nén tar thì khi restore có lỗi. vì vậy lời khuyên là sử dụng backup dạng text.
Cảm ơn các bạn đã theo dõi!