แบ็คอัพข้อมูลจากโฮส WordPress ฟรีแบบฟรีๆ บน Google Cloud Always Free Tier

Titipat
Titipat
Aug 25, 2017 · 2 min read

หลังจากเราโฮส Wordpress แบบไม่เสียเงินด้วย Google Cloud Always Free Tier กันไปแล้ว ตอนนี้เราจะแบ็คอัพข้อมูลของเว็บเรากันแบบฟรีๆ ด้วย Google Cloud Storage


นอกจากบริการ Virtual machine อย่าง Google Compute Engine แล้วกูเกิลคลาวด์ยังใจดีให้ใช้บริการเก็บข้อมูล Google Cloud Storage แบบฟรีตลอดชาติภายใน US region ถึง 5 GB แต่การจะอัพโหลดขึ้นไปแล้วต้องค่อยลบส่วนที่เกินการใช้งานก็ดูจะเสียเวลา วันนี้ผมเลยจะแนะนำการใช้ Lifecycle ในการลบไฟล์ที่เก่าเกินกว่าช่วงเวลาหนึ่งโดยอัตโนมัติ

รู้จัก Storage class

Google Cloud Storage เป็นบริการเก็บ Object file เพื่อเรียกใช้งานต่อไป แต่ว่าประเภทของการเก็บนั้นไม่ได้เหมือนกันเสมอไป บางไฟล์ใช้บ่อยควรจะเข้าถึงได้รวดเร็ว บางไฟล์ใช้น้อยหรีืออาจไม่ได้ใช้เลยถ้าต้องจ่ายราคาเดียวกับกรณีแรกก็ดูไม่ค่อยคุ้ม จึงเป็นที่มาของการแบ่ง Storage class ตามความถี่ในการเรียกใช้งานได้แก่

  1. Multi regional มีการเรียกใช้บ่อยจากผู้ใช้ทั่วโลก
  2. Regional มีการเรียกใช้บ่อยจากผู้ใช้ในภูมิภาคเดียว ค่าบริการเก็บถูกลงมา
  3. Nearline มีการเรียกใช้น้อยครั้ง ค่าบริการเก็บถูกลงอีก ประมาณหนึ่งครั้งต่อเดือน ถ้าลบก่อน 30 วันจะมีค่าใช้จ่าย การเรียกใช้มีค่าใช้จ่ายเล็กน้อย
  4. Coldline มีการเรียกใช้น้อยครั้งที่สุด ค่าบริการเก็บถูกที่สุด ประมาณหนึ่งครั้งต่อปี ถ้าลบก่อน 90 วันจะมีค่าใช้จ่าย การเรียกใช้มีค่าใช้จ่ายมากที่สุด

Ojbect class ประเภท nearline และ Coldline มักถูกนำมาใช้งานในการแบ็คอัพข้อมูล, Archive storage, Disaster recovery

รู้จัก Lifecycle

Object lifecycle เป็นลูกเล่นหนึ่งของ Google Cloud Storage ที่เราสามารถตั้งค่า Time to live (TTL) ของไฟล์ได้ว่าเมื่อครบระยะเวลาหนึ่งจะให้ทำอะไร ตัวอย่างที่พบบ่อยคือการดาวน์เกรดจาก Multi-regional หรือ regional มาเป็น Nearline หรือ Coldline เมื่อผ่านไประยะเวลาหนึ่งแล้ว และการลบไฟล์จากระบบเมื่อผ่านไปนานมากๆ เพื่อประหยัดค่าใช้จ่าย ซึ่งผมจะนำมาใช้ในการตั้งลบไฟล์เพื่อควบคุมไม่ให้เกิน Free tier

รู้จัก Access control ของ Google Cloud กันเสียก่อน

ก่อนที่จะลงมือทำผมขออธิบายเกี่ยวกับ Access control ของบริการ Google Cloud Service หน่อยครับ ปกติแล้วการจะใช้ Google Cloud Service หรือ Google API จะต้องมีการสร้างคีย์เสียก่อน แต่เนื่องจากคราวนี้เราเรียกใช้จากภายใน Google Cloud เองเลยมีการอำนวยความสะดวกให้ด้วยสิ่งที่เรียกว่า Service account

เจ้า Service account ที่ชื่อ Compute Engine default service account จะถูกสร้างมาพร้อมกับโปรเจคอยู่แล้ว เมื่อมันถูกกำหนดให้กับ Compute Engine ทุกการเรียกใช้บริการจากภายใน Compute Engine นั้นจะถูกจัดการเรื่องคีย์ให้เอง

แต่การใช้เพียง Service account อาจไม่ครอบคลุมบางกรณี ดังนั้น Compute Engine จะมี Access scope ของแต่ละ Instance คุมอยู่อีกชั้นหนึ่ง ดังนั้นลำดับการตรวจสอบสิทธิคือ (1) ตรวจจาก Service account ตามด้วย (2) ตรวจจาก Access scope อีกครั้ง

ลงไม้ลงมือ

1. สร้าง Cloud Storage bucket

ตรงนี้อย่าลืมว่าต้องตั้งเป็น US region

2. กำหนด Lifecycle

สร้างไฟล์ Lifecycle แล้วเซฟเป็นสกุล .json ตัวอย่างด้านล่างคือให้ลบไฟล์ที่เก่าเกินกว่า 90 วัน

{
"rule":
[
{
"action": {"type": "Delete"},
"condition": {"age": 90}
}
]
}

แล้วก็ทำการตั้งค่า Lifecycle ให้กับ Bucket ของเรา ทำให้ต่อจากนี้ไฟล์ที่อัพโหลดขึ้นไปจะได้รับการตั้งค่านี้ไปด้วย

$ gsutil lifecycle set myLifecycle.json gs://YOUR_BUCKET_NAME

3. กำหนดสิทธิ Service account

เข้าไปที่ IAM แล้วตั้งให้ Service account ที่ต้องการสามารถ Read, write ไปยัง Cloud Storage

4. กำหนด Access scope ของ Instance

ค่าเริ่มต้นของ Cloud Storage จะมีแค่ Read ดังนั้นเพิ่ม Write เข้าไปครับ ถ้าใครยังเปิด Instance อยู่ต้องปิดก่อนถึงจะเปลี่ยนค่าได้

5. สร้าง Cron script ง่ายๆ

ผมสร้างสคริปแล้วใส่ไว้ใน /etc/cron.daily เพื่อให้แบ็คอัพข้อมูลรายวัน เปลี่ยนชื่อ YOUR_BUCKET_NAME เป็นชื่อของตัวเองด้วยนะ

#!/bin/bash
cd /tmp
ARCHIVE_DATE=$(date +'%Y-%m-%d')
echo Back up to Google Cloud Storage $ARCHIVE_DATE
DB_FILE=$ARCHIVE_DATE.sql.gz
SRC_FILE=$ARCHIVE_DATE.gz
mysqldump wordpress | gzip > $DB_FILE
tar -zcf $SRC_FILE /var/www/wordpress
gsutil cp $DB_FILE $SRC_FILE gs://YOUR_BUCKET_NAME/
rm $SRC_FILE $DB_FILE

ถ้าไม่ผิดพลาดอะไร Instance ก็จะอัพโหลดไฟล์ WordPress และฐานข้อมูลไปไว้ที่ Cloud Storage และลบไฟล์ที่เก่าเกินกว่า 90 วันเองโดยอัตโนมัติ เนื่องจากเอนทรี่นี้ผมจากที่เคยทำไปเมื่อเดือนที่แล้วโดยไม่ได้ทดสอบทำตาม ถ้ามีพลาดตรงไหนก็ทักกันได้


แล้วนี้ก็เป็นวิธีที่ผมแบ็คอัพไฟล์โฮสฟรีแบบฟรีๆ ของผม แล้วของทุกคนทำอย่างไรกันครับ มาเล่าให้ผมฟังด้วยนะ

References

)

Titipat

Written by

Titipat

Freelance Computer Engineer who interested in highly scalable and automated system.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade