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
ps
hoặc trực quan dùngctop
. Bạn phải cài bổ xungctop
từ web site https://github.com/bcicen/ctop
Ở hình trên{old_postgres_container_id} = 910742cdfc0b
Chạy lệnh
which pg_dumpall
bê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_dumpall
Sau khi có đường dẫn chính xác của
pg_dumpall
thì 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/dumpfile
Khở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_data
vớ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/backup
bê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/dumpfile
Khôi phục
backup/dumpfile
và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