Docker ep.2 — Backup

mfinity168
3 min readNov 17, 2016

หลังจากที่ได้ลอง Install Docker คงจะได้ทดลองใช้งานกันบ้างแล้วนะครับ ครั้งนี้จะมาเล่าวิธีการสำรองข้อมูลในส่วนของเว็บไซต์และฐานข้อมูล(MySQL) แบบง่าย ๆครับ เพื่อให้เป็นแนวทางในการนำไปใช้งานครับ ซึงการสำรองข้อมูลนั้นเป็นส่วนสำคัญมาก หากระบงานหรือเว็บไซต์นั้นเสียหาย ก็จะมีไฟล์ที่สำรองไว้ นำกลับมาใช้งานได้ครับ

การ Backup บทความนี้จะหลีกเลี่ยงการใช้งาน phpMyadmin ครับ ซึ่งจะเป็นการเปิดช่องทางเข้าถึงการจัดการฐานข้อมูลได้อย่างง่ายสะดวกผ่านทางเบราเซอร์ แต่ก็เสี่ยงต่อการโดนแฮก เพื่อเข้าถึงฐานข้อมูลครับ

ความรู้พื้นฐานที่ต้องมีครับ
- Ubuntu Server 16.04 (x64) & Basic Command
- Docker Command

เตรียมให้พร้อมก่อนนะครับ
- เซิร์ฟเวอร์ Path ที่ใช้งานนั้นคือ /home/ (Ubuntu Server Path)
- ติดตั้ง Package สำหรับบีบอีดไฟล์ 7-zip เพื่อใช้บีบอัดไฟล์ข้อมูล
sudo apt-get install -y p7zip

เริ่มเลยครับ…

- Website (File Demo) เตรียมพื้นที่และไฟล์เว็บไซต์
พิมพ์คำสั่ง
sudo mkdir -p /home/test_web

sudo echo “<center><h1>Hello Test Web.</h1></center>” > /home/test_web/index.html

ตรวจสอบความถูกต้องครับ
ls /home/
จะมีแฟ้ม test_web ครับ

ls /home/test_web
จะมีไฟล์ index.html ครับ

-MySQL (Container) เตรียมพื้นที่จัดเก็บฐานข้อมูล
พิมพ์คำสั่ง
sudo mkdir -p /home/db

ls /home/
จะมีแฟ้ม db เพิ่มมาครับ

-สร้างแฟ้มเพื่อสำรองข้อมูล
พิมพ์คำสั่ง
sudo mkdir -p /home/backup

ls /home/
จะมีแฟ้ม backup เพิ่มมาครับ

เตรียมความพร้อมกันแล้ว มาต่อกันเลยครับ.. ^^.

1. สร้างสภาพแวดล้อมของ เว็บไซต์และฐานข้อมูล

  • Website จะใช้ Docker Image httpd version 2.4 ครับ

พิมพ์คำสั่ง
sudo docker run -it — name test_web — restart=always -d -p 80:80 -v /home/test_web:/usr/local/apache2/htdocs/ httpd:2.4

อธิบายเพิ่ม
-v = กำหนดเซิร์ฟเวอร์ path ที่ได้เตรียมไว้ /home/test_web/ ไฟล์เว็บไซต์จะอยู่ในนี้ครับ

ทดสอบเข้าผ่าเบราเซอร์ http://SERVER_IP เช่น http://127.0.0.1

  • MySQL ใช้งาน docker image mysql:5.5 ครับ

พิมพ์คำสั่ง
sudo docker run -it — name db — restart=always -v /home/db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d -p 3333:3306 mysql:5.5

อธิบายเพิ่ม
-v = กำหนดเซิร์ฟเวอร์ path ที่ได้เตรียมไว้ /home/db/ ไฟล์ฐานข้อมูล
-e MYSQL_ROOT_PASSWORD = กำหนดรหัสผ่านของ root

สร้างฐานข้อมูลใน db Container
sudo docker exec -it db mysql -u root -p
Enter Password : password

สร้างฐานข้อมูล ชื่อ my_db
CREATE DATABASE my_db;

ดูฐานข้อมูล
SHOW DATABASES;

ออกจาก mysql (container)
exit;

ตรวจสอบว่า Container ถูกสร้างเรียบร้อยแล้วหรือยัง
STATUS จะต้อง Up …

docker ps -a

เป็นอันเสร็จขั้นตอนที่เตรียมไฟล์และฐานข้อมูลครับ Yahooooo……

2. Backup Website Files (7-zip)

ใช้คำสั่ง 7rz (7-zip) ทำการบีบอัดไฟล์เว็บไซต์ เพื่อใช้สำรองข้อมูลครับ

sudo 7zr a -v8m -t7z /home/backup/myweb.7z /home/test_web/

อธิบายเพิ่ม
-v8m = กำหนดขนาดไฟล์หากเกิน 8MB จะทำการแบ่งไฟล์เป็น part1 , part2 …….
-t7z = บีบอัดไฟล์เป็นประเภท .7z
/home/backup/myweb.7z = ชื่อไฟล์และพื้นที่ ในการสำรองข้อมูล
/home/test_web/ = แฟ้มต้นฉบับ ที่ต้องการสำรองข้อมูล

3. Backup MySQL (.sql)

ขั้นตอนการสำรองฐานข้อมูล จะเป็นไปในลักษณะใช้คำสั่ง docker จากเซิร์ฟเวอร์ สั่งไปยัง db (container) เพื่อ dump ฐานข้อมูลออกมา เก็บไว้ในแฟ้มที่ต้องการของเซิร์ฟเวอร์

ใช้คำสั่ง
sudo docker exec db sh -c ‘exec mysqldump my_db -u root — password=password’ | 7zr a -v32m -t7z -mx0 -simy_db.sql /home/backup/my_db.sql.7z

ขอฝากไว้… ^^

คงจะเห็นภาพรวมของขั้นตอนและวิธีการสำรองข้อมูลกันแล้วนะครับ ซึ่งสามารถนำไปประยุกต์ใช้งานและต่อยอดกับระบบงานอื่นๆได้นะครับ

ขอบคุณ ที่ติดตามและอ่านบทความครับ

สนับสนุนเป็นกำลังใจได้ที่ลิงก์นี้ครับ
https://www.buymeacoffee.com/mfinity168

Name : Aussadayut (M)
E-Mail : mfinity168@gmail.com
Don’t hesitate to ask me

--

--