4.1 Phương pháp cơ bản để backup và khôi phục dữ liệu
Nếu bạn đã từng mất dữ liệu quan trọng, chắc chắn bạn hiểu tại sao backup lại quan trọng như vậy. Trong bài giảng này, tụi mình sẽ xem qua các phương pháp và công cụ khác nhau để tạo backup và khôi phục dữ liệu trong Docker, bao gồm volumes và thư mục liên kết.
Phương pháp cơ bản để backup và khôi phục dữ liệu
- Backup volumes của Docker
- Sử dụng utility tar để backup
- Backup cơ sở dữ liệu bên trong container
- Khôi phục dữ liệu từ backup
4.2 Sao lưu volume Docker
Volumes trong Docker cung cấp một cách tiện lợi để lưu trữ dữ liệu ngoài các container. Để tạo sao lưu volumes, bạn có thể sử dụng nhiều cách khác nhau.
Ví dụ sử dụng lệnh docker run để sao lưu volume
Tạo sao lưu volume
Tạo một container gắn kết volume và sử dụng công cụ tar để tạo file nén chứa dữ liệu:
docker run --rm -v my_volume:/data -v /path/to/backup:/backup busybox tar czf
/backup/my_volume_backup.tar.gz -C /data .
Trong ví dụ này, nội dung của volume my_volume
được nén vào file my_volume_backup.tar.gz
, và file này được lưu trong thư mục /path/to/backup
trên host.
Ví dụ khôi phục volume từ bản sao lưu
Khôi phục dữ liệu vào volume
Tạo một container gắn kết volume cùng với thư mục chứa bản sao lưu và sử dụng công cụ tar
để giải nén dữ liệu:
docker run --rm -v my_volume:/data -v /path/to/backup:/backup busybox tar xzf
/backup/my_volume_backup.tar.gz -C /data
Trong ví dụ này, dữ liệu từ file nén my_volume_backup.tar.gz
được giải nén vào volume my_volume
.
4.3 Sử dụng utility tar
cho backup
Utility tar
là công cụ mạnh mẽ để tạo backup và phục hồi dữ liệu. Nó có thể được sử dụng cả bên trong container và trên hệ thống host.
Ví dụ tạo backup dữ liệu trong container
Chạy container với dữ liệu cần thiết và tạo file archive bằng tar
:
docker exec -t my_container tar czf /backup/my_container_backup.tar.gz -C /data .
Trong ví dụ này, dữ liệu từ thư mục /data
bên trong container my_container
được đóng gói vào file my_container_backup.tar.gz
.
Ví dụ phục hồi dữ liệu từ archive
Chạy container và sử dụng tar để giải nén dữ liệu từ file archive:
docker exec -t my_container tar xzf /backup/my_container_backup.tar.gz -C /data
4.4 Sao lưu cơ sở dữ liệu trong container
Đối với cơ sở dữ liệu, thường sử dụng các công cụ chuyên dụng để sao lưu và phục hồi.
Ví dụ sao lưu cơ sở dữ liệu PostgreSQL
Sử dụng tiện ích pg_dump
để tạo sao lưu cơ sở dữ liệu:
docker exec -t my_postgres_container pg_dump -U myuser mydb > /path/to/backup/mydb_backup.sql
Trong ví dụ này, cơ sở dữ liệu mydb
được xuất ra file mydb_backup.sql
.
Ví dụ phục hồi cơ sở dữ liệu PostgreSQL
Sử dụng tiện ích psql
để phục hồi cơ sở dữ liệu từ sao lưu:
cat /path/to/backup/mydb_backup.sql | docker exec -i my_postgres_container psql -U myuser mydb
4.5 Khôi phục dữ liệu từ backup
Khôi phục dữ liệu — là quá trình lấy lại dữ liệu từ những backup đã tạo trước đó.
Ví dụ khôi phục dữ liệu từ backup volume
Sử dụng lệnh docker run
để lấy lại dữ liệu trong volume:
docker run --rm -v my_volume:/data -v /path/to/backup:/backup busybox tar xzf
/backup/my_volume_backup.tar.gz -C /data
Ví dụ khôi phục database MySQL
Sử dụng utility mysqldump
để tạo backup cho database:
docker exec my_mysql_container mysqldump -u myuser -p mypassword mydb >
/path/to/backup/mydb_backup.sql
Sử dụng utility mysql để khôi phục database:
cat /path/to/backup/mydb_backup.sql | docker exec -i my_mysql_container mysql -u myuser -p
mypassword mydb
GO TO FULL VERSION