Khi bạn chạy lệnh thực thi pg_restore xuất hiện lỗi như bên dưới này:
-bash-4.2$ pg_restore -U postgres -n duongdb -f /pgbackup/backup_duongdb.sql
pg_restore: server version: 15.7; pg_restore version: 9.2.24
pg_restore: aborting because of server version mismatch
Nguyên nhân: đây là lỗi postgresql server và pg_restore không sử dụng cùng phiên bản, không tương thích với nhau nên không tiến hành thực hiện backup được.
Khắc phục: thực hiện symlink version
Kiểm tra đường dẫn cài đặt pg_dumpall:
find / -name pg_restore -type f 2>/dev/null
[root@localhost data]# find / -name pg_restore
/usr/bin/pg_restore
/usr/pgsql-15/bin/pg_restore
=> pg_restore hiện có 2 đường dẫn => có 2 version khác nhau cùng thực hiện, hệ thống không hiểu sử dụng version nào? => chúng ta cần chỉ ra cho postgresql biết được là sử dụng dump nào
Link 2 directory lại với nhau:
sudo ln -s /usr/pgsql-15/bin/pg_restore /usr/bin/pg_restore --force
Tiến hành bachkup bình thường: (giả sử có DB là duongdb)
login vào user postgres và thực hiện lệnh sau: đường dẫn file: /pgbackup/backup_duongdb.sql, thư mục phải được tạo sẵn trước và user phải có quyền ghi.
su postgres
pg_restore -d duongdb /pgbackup/backup_duongdb.tar;
drwxr-xr-x. 2 postgres postgres 32 May 16 21:16 .
dr-xr-xr-x. 19 root root 4.0K May 13 14:47 ..
-rw-r–r–. 1 postgres postgres 137M May 16 21:16 backup_duongdb.sql
=> backup thành công không có lỗi.