Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách tạo bản sao lưu tự động hàng ngày cho cơ sở dữ liệu Odoo của bạn. Odoo là hệ thống ERP mã nguồn mở phổ biến nhất được viết bằng Python và sử dụng PostgreSQL làm cơ sở dữ liệu.
Odoo đang lưu trữ dữ liệu của mình trong cơ sở dữ liệu PostgreSQL. Thường xuyên sao lưu cơ sở dữ liệu sẽ bảo vệ bạn khỏi nguy cơ mất dữ liệu nghiêm trọng và điều này hoàn toàn quan trọng đối với bất kỳ ai và tất cả những người có cài đặt Odoo.
Giao diện quản lý cơ sở dữ liệu Odoo
Giao diện quản lý cơ sở dữ liệu Odoo cung cấp các công cụ để sao lưu, nhân bản, xóa, tạo và khôi phục cơ sở dữ liệu. Tạo một bản sao lưu bằng giao diện quản lý cơ sở dữ liệu là điều không cần bàn cãi. Chỉ cần mở trình duyệt của bạn và truy cập: http://your_server_ip:8069/web/database/manager.
Bạn sẽ thấy màn hình sau:

Nhấp vào Backup và một cửa sổ bật lên mới sẽ được hiển thị.

Nhập Mật khẩu chính của cơ sở dữ liệu Odoo của bạn và tạo bản sao lưu bằng cách nhấp vào Backup nút màu xanh lam .
Tùy thuộc vào kích thước cơ sở dữ liệu, việc sao lưu có thể mất một khoảng thời gian trước khi sẵn sàng.
Tạo bản sao lưu cơ sở dữ liệu từ command line
Bây giờ chúng ta đã biết cách tạo bản sao lưu thông qua giao diện quản lý cơ sở dữ liệu Odoo, làm thế nào chúng ta có thể sử dụng cùng một công cụ để tạo bản sao lưu từ dòng lệnh? Đáp án đơn giản. Sử dụng wget hoặc curl. Cả hai công cụ đều có thể gửi dữ liệu bằng POST mà chúng ta có thể sử dụng để chuyển các biến cần thiết đến công cụ cơ sở dữ liệu Odoo.
Trong ví dụ bên dưới, Mật khẩu chính của chúng ta là ADMIN_PASSWORD và chúng ta đang tạo một tệp sao lưu back_up_filename.zip của cơ sở dữ liệu có tên DB_NAME sẽ được lưu trong thư mục backup_dir.
curl -X POST -F 'master_pwd=ADMIN_PASSWORD' -F 'name=DB_NAME' -F 'backup_format=zip' -o /backup_dir/back_up_filename.zip http://localhost:8069/web/database/backup
Nếu thích wget hơn curl, bạn có thể sử dụng lệnh sau:
wget --post-data 'master_pwd=ADMIN_PASSWORD&name=DB_NAME&backup_format=zip' -O /backup_dir/back_up_filename.zip http://localhost:8069/web/database/backup
Nếu bạn muốn tạo bản sao lưu từ một vị trí từ xa thay vì localhost bạn cần nhập URL vào phiên bản Odoo của mình. Trong trường hợp này, bạn nên sử dụng HTTPS vì bạn không muốn mật khẩu của mình được gửi qua Internet dưới dạng văn bản thuần túy.
Bạn có thể tìm thêm thông tin về cách định cấu hình Odoo với Nginx làm reverse proxy tại đây .
Thiết lập sao lưu Odoo tự động
Để tự động hóa quá trình sao lưu và sao lưu cơ sở dữ liệu Odoo của chúng ta theo định kỳ, chúng ta có thể tạo một cronjob.
Giả sử rằng chúng ta muốn sao lưu cơ sở dữ liệu Odoo của mình mỗi ngày 01:30 am và giữ 7 bản sao lưu mới nhất.
Chúng ta sẽ tạo một tập lệnh bash đơn giản mà bạn có thể đặt tên nó như bạn muốn: ~/backup_odoo.sh
#!/bin/bash
# vars
BACKUP_DIR=~/odoo_backups
ODOO_DATABASE=db1
ADMIN_PASSWORD=superadmin_passwd
# create a backup directory
mkdir -p ${BACKUP_DIR}
# create a backup
curl -X POST \
-F "master_pwd=${ADMIN_PASSWORD}" \
-F "name=${ODOO_DATABASE}" \
-F "backup_format=zip" \
-o ${BACKUP_DIR}/${ODOO_DATABASE}.$(date +%F).zip \
http://localhost:8069/web/database/backup
# delete old backups
find ${BACKUP_DIR} -type f -mtime +7 -name "${ODOO_DATABASE}.*.zip" -delete
Làm cho tập lệnh có thể thực thi được với chmod:
sudo chmod +x ~/backup_odoo.sh
Đừng quên thay đổi các biến BACKUP_DIR, ODOO_DATABASE và ADMIN_PASSWORD theo mong muốn của bạn.
Bước cuối cùng là tạo một job cron mới sẽ chạy mỗi ngày tại 01:30 am:
crontab -e
30 1 * * * /home/<yourusername>/backup_odoo.sh
Đừng quên đặt đúng tên và đường dẫn đến tập lệnh sao lưu.
Bạn có thể sửa đổi tập lệnh và triển khai giải pháp sao lưu mạnh mẽ hơn như sử dụng bộ lưu trữ sao lưu từ xa, giữ các bản sao lưu hàng tuần và hàng tháng ..v.v.
Khôi phục cơ sở dữ liệu Odoo
Để khôi phục bản sao lưu cơ sở dữ liệu bằng giao diện quản lý cơ sở dữ liệu, hãy mở trình duyệt của bạn và điều hướng đến: http://your_server_ip:8069/web/database/manager.

Nhấp vào nút Restore Database và một cửa sổ bật lên mới sẽ được hiển thị.

Nhập Mật khẩu chính của cơ sở dữ liệu Odoo của bạn, chọn Tệp sao lưu, nhập Tên cơ sở dữ liệu mới và khôi phục cơ sở dữ liệu bằng cách nhấp vào nút màu xanh lam Continue .Trước khi khôi phục cơ sở dữ liệu, bạn sẽ cần phải xóa cơ sở dữ liệu hoặc sử dụng tên cơ sở dữ liệu khác.
Tùy thuộc vào kích thước cơ sở dữ liệu và tốc độ Internet của bạn, quá trình khôi phục có thể mất một chút thời gian.
Chúng ta cũng có thể khôi phục cơ sở dữ liệu từ dòng lệnh:
curl -F 'master_pwd=superadmin_passwd' -F backup_file=@/opt/odoo/odoo_backups/db1.2018-04-14.zip -F 'copy=true' -F 'name=db3' http://localhost:8069/web/database/restore
Tất nhiên bạn sẽ cần điều chỉnh lệnh bằng mật khẩu Odoo Master của mình, đường dẫn đến bản sao lưu cơ sở dữ liệu và tên cơ sở dữ liệu.
Nếu khôi phục thành công, output sẽ giống như sau:
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <title>Redirecting...</title> <h1>Redirecting...</h1> <p>You should be redirected automatically to target URL: <a href="/web/database/manager">/web/database/manager</a>. If not click the link.
Phần kết luận
Hướng dẫn này đã hướng dẫn bạn cách tạo bản sao lưu tự động hàng ngày cho cơ sở dữ liệu Odoo của bạn bằng cách sử dụng cronjob.
Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, hãy để lại bình luận.
