Quản lý dữ liệu

Tài liệu này hướng dẫn cách quản lý các loại dữ liệu và cơ sở dữ liệu khác nhau liên kết với ứng dụng API WhatsApp Business.

Phần dữ liệu

Phần dữ liệu là mục ưu tiên để duy trì dữ liệu mà vùng chứa Docker tạo và sử dụng. Ứng dụng API WhatsApp Business cần có một phần dữ liệu Docker cho file phương tiện. Phần dữ liệu này sẽ được tạo tự động khi bạn chạy lệnh docker-compose trong quá trình cài đặt.

Phần dữ liệu Docker hỗ trợ lưu trữ các phần dữ liệu trên máy chủ từ xa hoặc nhà cung cấp dịch vụ đám mây. Bạn có thể thiết lập phần dữ liệu file phương tiện trên bất kỳ giải pháp hiện có nào về chia sẻ file trong trung tâm dữ liệu. Đảm bảo mọi vùng chứa Webapp và Coreapp đều có quyền truy cập đọc/ghi vào phần này. Để xem hoặc chỉnh sửa đường dẫn đến phần dữ liệu này, hãy chỉnh sửa file docker-compose.yml.

TênMô tả

Phần dữ liệu file phương tiện

  • Lưu trữ các file phương tiện nhận được và gửi đi
  • Đường dẫn mặc định trong vùng chứa là /usr/local/wamedia/

Biến môi trường

Ứng dụng API WhatsApp Business có thể sử dụng MySQL hoặc PostgreSQL để lưu trữ dữ liệu.

Bạn có thể cấu hình cài đặt cơ sở dữ liệu bằng cách thiết lập các biến môi trường sau đây trong file db.env khi cài đặt ứng dụng API WhatsApp Business. Khi kết nối với cơ sở dữ liệu, Coreapp và Webapp sẽ sử dụng các biến môi trường này.

Cài đặt cơ sở dữ liệu Biến môi trường

database_engine

WA_DB_ENGINE

hostname

WA_DB_HOSTNAME

port

WA_DB_PORT

username

WA_DB_USERNAME

password

WA_DB_PASSWORD

database_name_prefix

WA_DB_NAME_PREFIX

connection_idle_timeout

WA_DB_CONNECTION_IDLE_TIMEOUT

  • WA_DB_NAME_PREFIX – Có thể dùng để tạo tiền tố cho tất cả các cơ sở dữ liệu đã tạo khi cài đặt ứng dụng API WhatsApp Business. Bạn có thể dùng biến này để chạy nhiều nhóm cơ sở dữ liệu cho API WhatsApp Business trên cùng một máy chủ.
  • WA_DB_CONNECTION_IDLE_TIMEOUT (chỉ được MySQL hỗ trợ) - Với việc cài đặt biến môi trường này (tính theo giây) khi khởi động Coreapp, bạn có thể đặt thời gian không hoạt động cho cơ sở dữ liệu MySQL. Sau đó, máy chủ MySQL sẽ đóng mọi kết nối cơ sở dữ liệu không hoạt động trong thời gian đã đặt.

Quản lý cơ sở dữ liệu

Dưới đây là các đề xuất để quản lý cơ sở dữ liệu được liên kết với ứng dụng API WhatsApp Business của bạn.

Mối lo ngạiĐề xuất

Nâng cấp khi có cơ sở dữ liệu lớn

Cơ sở dữ liệu lớn được xem là các cơ sở dữ liệu có hơn 2 triệu hàng trong bảng messages.
Dùng các đề xuất bên dưới để sử dụng điểm cuối /services/message/gc trong khi nâng cấp nhằm duy trì sự ổn định của cơ sở dữ liệu.

Bắt đầu từ v2.29.1, theo mặc định, thông số pass_through sẽ được đặt thành false. Điều này có thể làm tăng dung lượng cơ sở dữ liệu cho bảng messages.

Hãy dùng thông số thu thập dữ liệu rác để đảm bảo cơ sở dữ liệu của bạn vận hành ổn định nhờ dọn dẹp định kỳ cơ sở dữ liệu. Xem tài liệu về phần Cài đặt ứng dụng để biết thêm thông tin về các thông số pass_throughdb_garbagecollector_enable.

Cấu hình thu thập tự động dữ liệu rác

  • Bật cho các doanh nghiệp kích hoạt thông số pass_through khi nâng cấp.
  • Tắt cho các doanh nghiệp vô hiệu hóa thông số pass_through khi nâng cấp.
    • Nếu pass_through bị vô hiệu hóa trước khi nâng cấp, bạn nên bật tính năng tự động thu thập dữ liệu rác sau khi nâng cấp bằng cách dùng thông số db_garbagecollector_enable trong phần Cài đặt ứng dụng
  • Đối với doanh nghiệp có lưu lượng truy cập > 120 qps, đề xuất nên dùng tính năng thu thập dữ liệu rác dựa trên lệnh gọi API với điểm cuối /services/message/gc.

Thu thập dữ liệu rác dựa trên lệnh gọi API

  • Khiến cho doanh nghiệp phải phụ thuộc vào tiện ích tích hợp để dọn dẹp cơ sở dữ liệu. Đối với hầu hết doanh nghiệp, điều này tốt nhất nên tránh.
  • Doanh nghiệp dùng API WhatsApp Business để thu thập dữ liệu rác của cơ sở dữ liệu nên:
    • Đánh dấu các tin nhắn đến là đã đọc trước khi yêu cầu API kích hoạt quá trình dọn dẹp triệt để.
    • Chúng tôi khuyên dùng điểm cuối /services/message/gc 24 giờ một lần trong thời gian không hoạt động (nghĩa là lượng tin nhắn gửi đi thấp).
    • Đối với bảng messages có hơn 10 triệu hàng, bạn có thể cần chạy yêu cầu API nhiều lần để đảm bảo các thông báo gọi lại không trả về lỗi.

Hãy xem tài liệu về Dịch vụ để biết thêm thông tin.

Xoay vòng nhật ký

Tập lệnh xoay vòng nhật ký nằm trong vùng chứa Coreapp và Webapp.

Webapp

Tập lệnh xoay vòng nhật ký trong vùng chứa Webapp:

  • Sử dụng tiện ích Logrotate.
  • Lưu giữ 30 file nhật ký web, hoạt động truy cập và lỗi gần đây nhất.
  • Chỉ xoay vòng nếu kích thước trên 20 MB.
  • Nén những file nhật ký đã xoay vòng.
  • Lưu trữ file nhật ký cũ vào /var/log/whatsapp/archive.

Coreapp

Tập lệnh xoay vòng nhật ký trong vùng chứa Coreapp:

  • Sử dụng tập lệnh nội bộ.
  • Lưu giữ 30 file gần đây nhất.
  • Tự động xoay vòng nếu kích thước trên 15 MB.
  • Nén những file nhật ký đã xoay vòng.
  • Lưu trữ file nhật ký cũ vào /var/log/whatsapp/archive.

Trong Coreapp, file nhật ký mới chỉ được tạo khi kích thước mỗi file cũ vượt quá 15MB. File nhật ký cũ không bị gỡ tự động.

Đề xuất xóa tập lệnh

Bạn nên xóa tập lệnh dưới đây theo định kỳ (ví dụ: hàng ngày) để xoay vòng nhật ký trên tất cả các vùng chứa Webapp, Coreapp và Master (trong trường hợp thiết lập Đa kết nối). Tốt nhất bạn nên cấu hình lệnh cron trên máy chủ để chạy trên tất cả các vùng chứa API WhatsApp Business và thực thi vào giờ thấp điểm. Khi gọi lệnh xóa định kỳ, bạn sẽ kiểm soát được mức tiêu tốn dung lượng ổ đĩa của file nhật ký.

docker exec your-container-name /opt/whatsapp/bin/cleanup.sh