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!

 

SaKuRai

Xin chào, Mình là Sakurai. Blog này là nơi để note lại và chia sẻ những kiến thức, kinh nghiệm mà mình và anh em trong Team. Cảm ơn các bạn đã quan tâm theo dõi!

You may also like...

1 Response

  1. admin says:

    pg_dump -h 127.0.0.1 -p 5432 gitlab_production > /opt/backup/DB/gitlabproduction.20200115.10h15.bak

Leave a Reply

Your email address will not be published. Required fields are marked *