รู้ไว้ใช่ว่า ใส่บ่าแบกหาม 💥💥
Database ถ้ามีผู้ใช้งานไม่กี่คน
ก็คงไม่มีทางล่มง่ายๆ
และข้อมูลคงไม่สูญหายง่ายๆ เช่นกัน
.
แต่ทว่าเวลาใช้งานจริง ในบางระบบ เช่น เว็บแอพพลิเคชั่น
โอ้วแม่เจ้า จะมีผู้ใช้เยอะมากมาย
ก็ย่อมมีการติดต่อไปยัง database เป็นปริมาณเยอะมาก
ซึ่งฮอตไม่แพ้กับเนตไอดอลชื่อดังเลยทีเดียว
.
ซึ่งอาจทำให้ database ล่มได้
ส่งผลให้ฝั่งหน้าเว็บแจ้ง error บอกโจร 500 ขึ้นบ้าน
เป็นอันรู้กันว่าระบบหลังบ้าน มีอะไรซักอย่างที่ตายแหละ 🥶
.
นี้แค่บทลงโทษเบาะๆ
แต่ถ้าเกิดโชคร้ายซวยสุดสุด ข้อมูลหายไป
บทลงโทษคือคอขาดคนทำแน่ๆ
.
ด้วยเหตุนี้จึงต้องใช้วิชานินแยกเงาพันร่างอย่างนารูโตะ
ทำให้ database โคลนนิ่งตัวเอง แยกออกเป็นหลายๆ ตัว
แล้วกระจายไปตาม Node ต่าง ๆ
(กระจายไปตามเครื่อง server ต่างๆ หรือจะ virtual machine ก็ได้)
.
วิธีนี้จะทำให้ database บริหารเสน่ห์ได้ดีเลยทีเดียว
เพราะถ้าเกิด database ก้อนหนึ่งตายไป
ก้อนที่เหลือก็ยังทำงานได้อยู่ ไม่ล่มหายตายจากง่ายๆ
อีกทั้งก็มีข้อมูล backup มีเก็บสำรองไว้หลายก้อน
แลดูปลอดภัยดีออก
.
คำถาม ในเมื่อมี database แยกร่างเป็นหลายก้อน 🤔
แล้วแต่ละก้อนมันสื่อสารระหว่างกันยังไงหว้า?
พวกเขามีข้อมูลตรงกันได้อย่างไร?
.
คำตอบ 😁
1. โดยปกติเขาจะกำหนดให้ database ก้อนใดก้อนหนึ่ง
ทำหน้าที่เป็นหัวหน้าแก๊ง เรียกว่า master
.
2. ส่วนก้อนที่เหลือจะเป็นลูกสมุน เรียกว่า slave หรือ secondary
.
3. เวลา database ถูกเขียนจากโลกภายนอก (write) เช่น ถูกเขียนจากเว็บแอพลิเคชั่น ก็จะต้องมาเขียน (write) ที่หัวหน้าแก๊ง (master) คนเดียว
ส่วนลูกสมุนนะเหรอ เอ็งไม่มีสิทธิ
.
4. จากนั้นหัวหน้าแก๊งก็จะถ่ายสำเนาตัวเอง (replicate)
ก็อปปี้ข้อมูลไปให้ลูกสมุน (slave) ทุกตัว
เพียงเท่านี้ลูกน้องก็จะมีข้อมูลตรงกันกับลูกพี่เด๊ะ
.
5. แต่ทว่าเวลาพวกเขาเหล่า database ถูกอ่าน (read) จากโลกภายนอก เช่น ถูกอ่านจากเว็บแอพลิเคชั่น
ก็เข้ามาอ่านได้ทั้งกับหัวหน้าแก๊ง (master)
หรือจะอ่านที่ลูกสมุน (slave) ก็ได้นะ
.
🖋 ด้วยเหตุนี้ database ทุกก้อน (master กับ slave)
ก็จะมีจังหวะหัวใจตรงกัน ข้อมูลสอดประสานตรงกัน 💓
.
แล้วถ้าวันดีคืนดี เกิดดวงซวย ราหูเข้าเรือนมรณะ ชะตาขาด
อยู่ดีๆ หัวหน้าแก๊ง (master) ตายหรือมีอันเป็นไปซักอย่าง
เมื่อนั้นตัวลูกสมุน (slave) ตัวใดตัวหนึ่ง
ก็จะถูกแต่งตั้งให้ดำรงตำแหน่งหัวหน้าแก๊ง (master) คนต่อไปแทน
.
หมายเหตุ ✍️
คอนเซ็ปต์แยกร่าง database แล้วแบ่งเป็น master กับ slave
ก็จะมี database หลายยี่ห้อที่เอาวิธีนี้ไปใช้งาน เช่น
MariaDB, MySQL, Microsoft SQL, MongoDB เป็นต้น
.
ส่วน Database ยี่ห้ออื่นเช่น Oracle ก็จะใช้วิธีอื่น
อันนี้เล่าเฉพาะวิธี master กับ slave ง่ายสุดแหละ
.
😜 หมายเหตุ ในมุม #โปรแกรมเมอร์ ก็ไม่ต้องรู้หรอกว่าจะเซท database แบบ master กับ slave ทำยังไง
เพราะทำงานจริงเขาจะมีทีมงานดูแลเรื่องนี้ให้แหละ
แยกทีมกัน
อันนี้เล่าสู้กันฟังเฉยๆ
.....จบ
.
.
.
✍เขียนโดย โปรแกรมเมอร์ไทย thai programmer
「mariadb backup」的推薦目錄:
- 關於mariadb backup 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最佳解答
- 關於mariadb backup 在 tiredofit/docker-mariadb-backup - GitHub 的評價
- 關於mariadb backup 在 mariadb-backup (restore) basics questions -- which DBs are ... 的評價
- 關於mariadb backup 在 Maria DB (Windows) backup - Database Administrators Stack ... 的評價
- 關於mariadb backup 在 Backup and recovery test of MariaDB on arm64 platform 的評價
mariadb backup 在 Maria DB (Windows) backup - Database Administrators Stack ... 的推薦與評價
One way to automate the backup process would be to create a scheduled task on your database server that runs once every week (or how often ... ... <看更多>
mariadb backup 在 tiredofit/docker-mariadb-backup - GitHub 的推薦與評價
Docker MariaDB Backup Container w/ S6 Overlay, Zabbix Monitoring based on Alpine - GitHub - tiredofit/docker-mariadb-backup: Docker MariaDB Backup Container ... ... <看更多>