Dump postgres RDS DB bằng cách sử dụng Docker
Trong 1 số dự án đặc biệt, không có postgres trong máy, nhưng lại cần chạy lệnh pg_dump để dump dữ liệu, hoặc pg_dump version không match. Nếu không match thì chạy lệnh sẽ bị lỗi:
pg_dump: error: aborting because of server version mismatch
Cần nâng cấp Postgres, nhưng cài đặt pg thì chưa chắc cài được, vì có thể bị network firewall rules chặn các repo cài đặt.
\=> Sử dụng thông qua Docker:
Pull và chạy image dưới quyền root:
docker pull postgres
docker run -it --rm \
--user root \
postgres bash
Bên trong docker container chạy:
pg_dump -h <rds_endpoint> -U <db_username> -f <dbname>.sql <dbname>
pg_dump -Fc -v -h <rds_endpoint> -U <db_username> <dbname> > <dbname>.dump
Nhập password đúng, thì sẽ tạo ra được file <dbname>.sql và <dbname>.dump trong thư mục / của container.
Sau đó copy ra ngoài host:
docker cp <containerId>:/file/path/within/container /host/path/target
Lúc này bạn đã có file dumps ở host, bạn có thể lấy ra sử dụng.
Thực ra thì: P.S trong ảnh sau là điều mình muốn nói ở tình huống này =))))