9 bước đơn giản nâng cấp từ Postgresql phiên bản cũ lên Postgresql 14 chạy trong Docker
Ngày 30/9/2021, Postgresl 14 ra mắt với nhiều tính năng cải tiến. Giả sử bạn đang có một hệ CSDL Postgresql phiên bản cũ (gọi tắt là Postgresql cũ) chạy trong Docker, vậy làm sao để nâng cấp hệ CSDL này lên Postgresql 14? Tôi sẽ sử dụng công cụ pg_dumpall để backup dữ liệu ở Postgresql cũ rồi khôi phục vào Postgresql 14.
Sử dụng Pgadmin hoặc Dbeaver hoặc psql kết nối vào hệ CSDL hiện giờ truy vấn thông tin phiên bản bằng lệnh
SELECT version();
Kết quảPostgreSQL 12.8 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424, 64-bit
Lấy container id của Postgresql cũ bằng lệnh
pshoặc trực quan dùngctop. Bạn phải cài bổ xungctoptừ web site https://github.com/bcicen/ctop
Ở hình trên{old_postgres_container_id} = 910742cdfc0bChạy lệnh
which pg_dumpallbên trong postgresql container để biết đường dẫn đến công cụ này.$ docker exec -it {old_postgres_container_id} which pg_dumpall /usr/local/bin/pg_dumpallSau khi có đường dẫn chính xác của
pg_dumpallthì sao lưu tất cả database trong Postgresql cũ$ docker exec -it {old_postgres_container_id} /usr/local/bin/pg_dumpall -U postgres > backup/dumpfileKhởi động container Postgresql14 mới hoàn toàn.
$ docker run --name pg14 -d -p 5432:5432 -e POSTGRES_PASSWORD=123 -v db_data:/var/lib/postgresql/data -v $(pwd)/backup:/backup postgres:14-alpine3.14
Chú ý chúng ta map 2 volume:
db_data:/var/lib/postgresql/data: map docker volumedb_datavới thư mục dữ liệu của Postgresql$(pwd)/backup:/backup: map thư mục chứa dumpfile vào thư mục/backupbên trong container
Lấy id của container Postgresql 14 tạm gọi là
{new_postgres_container_id}Exec vào trong container Postgresql 14, rồi thử list
/backup/dumpfile$ docker exec -it {new_postgres_container_id} /bin/ash $ ls -all /backup/dumpfile -rw-r--r-- 1 root root 543444597 Oct 3 03:10 /backup/dumpfileKhôi phục
backup/dumpfilevào Postgresql 14 container mới
Thực hiện$ psql -U postgres -d postgres < backup/dumpfile
Dùng DBeaver kết nối vào Postgresql 14 kiểm tra version bằng lệnh
SELECT version();
Kết quả trả vềPostgreSQL 14.0 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424, 64-bit
Đánh giá chung
- Tốc độ ở những câu lệnh truy vấn đơn giản, Postgresql 14 không nhanh hơn 12, thậm chí chậm hơn chút xíu
- Postgresql 14 hỗ trợ thao tác trên kiểu dữ liệu JSON rất tốt. Nhiều lệnh mới hoàn toàn, không có trong Postgresql Thử copy những lệnh ở link này jsonb Containment and Existence

Bình luận