จัดการข้อมูลและฐานข้อมูล

เอกสารฉบับนี้กล่าวถึงวิธีจัดการข้อมูลและฐานข้อมูลประเภทต่างๆ ที่เชื่อมโยงกับไคลเอ็นต์ WhatsApp Business API

ไดรฟ์ข้อมูล

ไดรฟ์ข้อมูลเป็นกลไกที่นิยมใช้ในการเก็บข้อมูลที่คอนเทนเนอร์ Docker สร้างขึ้นและใช้งาน โดยไคลเอ็นต์ WhatsApp Business API ต้องมีไดรฟ์ข้อมูล Docker จำนวน 1 ไดรฟ์สำหรับสื่อ ไดรฟ์ข้อมูลนี้จะถูกสร้างขึ้นมาโดยอัตโนมัติเมื่อเรียกใช้คำสั่ง docker-compose ในระหว่างการติดตั้ง

ไดรฟ์ข้อมูล Docker รองรับการจัดเก็บไดรฟ์ข้อมูลบนโฮสต์ระยะไกลหรือผู้ให้บริการระบบคลาวด์ คุณสามารถตั้งค่าไดรฟ์ข้อมูลสื่อบนโซลูชั่นการแชร์ไฟล์ในศูนย์ข้อมูลที่มีอยู่ได้ ทั้งนี้ควรตรวจสอบให้แน่ใจว่าคอนเทนเนอร์ Webapp และ Coreapp ทั้งหมดมีสิทธิ์การเข้าถึงสำหรับการอ่าน/เขียนในไดรฟ์ข้อมูล หากต้องการดูหรือแก้ไขเส้นทางไปยังไดรฟ์ข้อมูล ให้แก้ไขไฟล์ docker-compose.yml

ชื่อคำอธิบาย

ไดรฟ์ข้อมูลสื่อ

  • จัดเก็บไฟล์สื่อขาเข้าและขาออก
  • ตามค่าเริ่มต้นแล้ว ไดรฟ์ข้อมูลสื่อจะติดตั้งภายในคอนเทนเนอร์ที่ /usr/local/wamedia/

ตัวแปรสภาพแวดล้อม

ไคลเอ็นต์ WhatsApp Business API สามารถใช้ MySQL หรือ PostgreSQL ในการจัดเก็บข้อมูลได้

คุณสามารถกำหนดค่าการตั้งค่าฐานข้อมูลโดยตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้ในไฟล์ db.env ได้ เมื่อติดตั้งไคลเอ็นต์ WhatsApp Business API โดย Coreapp และ Webapp จะใช้ตัวแปรสภาพแวดล้อมเหล่านี้เมื่อเชื่อมต่อกับฐานข้อมูล

การตั้งค่าฐานข้อมูล ตัวแปรสภาพแวดล้อม

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 — สามารถใช้วางไว้หน้าฐานข้อมูลทั้งหมดที่สร้างขึ้นเมื่อติดตั้งไคลเอ็นต์ WhatsApp Business API และสามารถใช้เพื่อเรียกใช้ฐานข้อมูล WhatsApp Business API หลายชุดบนโฮสต์ฐานข้อมูลเดียวกันได้
  • WA_DB_CONNECTION_IDLE_TIMEOUT (รองรับโดย MySQL เท่านั้น) — ในขณะที่เริ่มใช้งาน Coreapp คุณสามารถตั้งค่าระยะหมดเวลาเมื่อไม่ได้ใช้งานให้กับฐานข้อมูล MySQL ของคุณได้โดยตั้งค่าตัวแปรสภาพแวดล้อมนี้ (ในหน่วยมิลลิวินาที) จากนั้นเซิร์ฟเวอร์ MySQL จะปิดการเชื่อมต่อฐานข้อมูลที่ไม่ได้ใช้งานตามระยะเวลาที่ตั้งไว้

การจัดการฐานข้อมูล

ต่อไปนี้คือคำแนะนำในการจัดการฐานข้อมูลที่เชื่อมโยงกับไคลเอ็นต์ WhatsApp Business API ของคุณ

ข้อกังวลคำแนะนำ

การอัพเกรดด้วยฐานข้อมูลขนาดใหญ่

ฐานข้อมูลที่มีมากกว่า 2 ล้านแถวในตาราง messages
นับว่าเป็นฐานข้อมูลขนาดใหญ่ โปรดปฏิบัติตามคำแนะนำด้านล่างนี้เมื่อใช้ตำแหน่งข้อมูล /services/message/gc ในระหว่างการอัพเกรดเพื่อรักษาความเสถียรของฐานข้อมูล

การรวบรวมขยะตามการเรียกใช้ API

  • ทำให้การทำความสะอาดฐานข้อมูลเป็นการผสานการทำงานและไม่เป็นอิสระ ซึ่งตามหลักการแล้ว ธุรกิจส่วนใหญ่ควรหลีกเลี่ยง
  • ขอแนะนำให้ธุรกิจใช้ WhatsApp Business API ในการดำเนินการรวบรวมขยะในฐานข้อมูลดังนี้
    • ทำเครื่องหมายข้อความขาเข้าเป็นอ่านแล้ว ก่อนจะสร้างคำขอ API เพื่อเปิดใช้งานการทำความสะอาดข้อมูลอย่างจริงจัง
    • เราขอแนะนำให้ใช้ตำแหน่งข้อมูล /services/message/gc ทุกๆ 24 ชั่วโมงในช่วงเวลาหยุดทำงาน (กล่าวคือ เมื่อปริมาณข้อความขาออกอยู่ในระดับต่ำ)
    • สำหรับตาราง messages ที่มีแถวมากกว่า 10 ล้านแถว คุณอาจต้องเรียกใช้คำขอ API หลายๆ ครั้งเพื่อให้แน่ใจว่าการแจ้งเตือนการเรียกกลับจะส่งคืนมาโดยไม่มีข้อผิดพลาด

โปรดดูข้อมูลเพิ่มเติมในเอกสารประกอบเกี่ยวกับบริการ

การหมุนเวียนบันทึก

สคริปต์การหมุนเวียนบันทึกรวมอยู่ภายในคอนเทนเนอร์ Coreapp และ Webapp

Webapp

สคริปต์การหมุนเวียนบันทึกในคอนเทนเนอร์ Webapp มีดังนี้

  • ใช้โปรแกรมอรรถประโยชน์ Logrotate
  • เก็บไฟล์ของบันทึกเว็บ การเข้าถึง และข้อผิดพลาด 30 ไฟล์ล่าสุดไว้
  • หมุนเวียนก็ต่อเมื่อมีขนาดเกิน 20 MB
  • บีบอัดไฟล์บันทึกที่หมุนเวียน
  • จัดเก็บไฟล์บันทึกเก่าไว้ใน /var/log/whatsapp/archive

Coreapp

สคริปต์การหมุนเวียนบันทึกในคอนเทนเนอร์ Coreapp มีดังนี้

  • ใช้สคริปต์ภายใน
  • เก็บ 30 ไฟล์ล่าสุดไว้
  • หมุนเวียนอัตโนมัติหากมีขนาดเกิน 15 MB
  • บีบอัดไฟล์บันทึกที่หมุนเวียน
  • จัดเก็บไฟล์บันทึกเก่าไว้ใน /var/log/whatsapp/archive

ใน Coreapp ไฟล์บันทึกใหม่จะถูกสร้างขึ้นก็ต่อเมื่อไฟล์บันทึกมีขนาดเกิน 15 MB เท่านั้น ไฟล์บันทึกเก่าจะไม่ถูกลบออกโดยอัตโนมัติ

คำแนะนำเกี่ยวกับสคริปต์การทำความสะอาด

ขอแนะนำให้คุณเรียกใช้สคริปต์การทำความสะอาดด้านล่างนี้เป็นระยะๆ (กล่าวคือทุกวัน) เพื่อหมุนเวียนบันทึกในคอนเทนเนอร์ Webapp, Coreapp และ Master ทั้งหมด (ในกรณีที่มีการตั้งค่าการเชื่อมต่อหลายจุด) วิธีที่ดีที่สุดคือการกำหนดค่า cronjob บนโฮสต์ของคุณให้ทำงานบนคอนเทนเนอร์ WhatsApp Business API ที่ใช้งานอยู่ทั้งหมด และดำเนินการนอกช่วงเวลาที่มีปริมาณงานสูงสุด การเรียกใช้สคริปต์การทำความสะอาดเป็นระยะๆ จะช่วยให้สามารถควบคุมพื้นที่ดิสก์ที่ไฟล์บันทึกใช้ได้

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