ศูนย์คู่มือ Ruk-Com PaaS

คู่มือการพัฒนา Deploy และดูแล Application บนแพลตฟอร์ม

RUK-COM PAAS / DATABASES

คู่มือ Primary-Secondary Replication สำหรับ ฐานข้อมูล

คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี

ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง

คู่มือภาษาไทย

คำสั่ง ชื่อเมนู พารามิเตอร์ และค่าตัวอย่างในกรอบ Code คงรูปแบบตามระบบเพื่อให้คัดลอกและตรวจสอบได้ถูกต้อง

การจำลองแบบฐานข้อมูล MySQL/MariaDB/Percona ระดับ Primary-Secondary

การจำลองแบบ Primary-Secondaryใช้เพื่อแก้ไขปัญหาต่างๆมากมายเกี่ยวกับประสิทธิภาพสนับสนุนการสำรองข้อมูลฐานข้อมูลที่แตกต่างกันและเป็นส่วนหนึ่งของโซลูชันที่ใหญ่กว่าเพื่อบรรเทาความล้มเหลวของระบบช่วยให้ข้อมูลจากเซิร์ฟเวอร์ฐานข้อมูลเดียว (หลักซึ่งก่อนหน้านี้เรียกว่า “มาสเตอร์”) ที่จะจำลองไปยังเซิร์ฟเวอร์ฐานข้อมูลตั้งแต่หนึ่งเซิร์ฟเวอร์ขึ้นไป (รองเดิมเรียกว่า “ทาส”) ส่วนหลักจะบันทึกการอัปเดตซึ่งจะกระจายไปยังส่วนรองส่วนรองจะแสดงข้อความระบุว่าได้รับการอัพเดตเรียบร้อยแล้วซึ่งอนุญาตให้ส่งการอัพเดตในภายหลังได้การจำลองแบบหลัก-รองอาจเป็นแบบซิงโครนัสหรือแบบอะซิงโครนัสก็ได้ความแตกต่างเป็นเพียงช่วงเวลาของการแพร่กระจายของการเปลี่ยนแปลงหากทำการเปลี่ยนแปลงกับอุปกรณ์หลักและรองในเวลาเดียวกันระบบจะซิงโครนัสหากการเปลี่ยนแปลงถูกจัดคิวและเขียนในภายหลังการเปลี่ยนแปลงนั้นจะเป็นแบบอะซิงโครนัส

Image 1: primary-secondary replication schemeด้านล่างนี้เราจะครอบคลุมหัวข้อต่อไปนี้:

กรณีการใช้งานการจำลองแบบ

การใช้งานเป้าหมายสำหรับการจำลองแบบในฐานข้อมูล MySQL/MariaDB/Percona ประกอบด้วย:

  • โซลูชันการขยายขนาด
  • ความปลอดภัยของข้อมูล
  • การวิเคราะห์
  • การกระจายข้อมูลทางไกล

คุณสามารถใช้การจำลองแบบดังกล่าวและใช้ประโยชน์จากมันได้อย่างไร:

  • การสำรองข้อมูล:เมื่อต้องการใช้การจำลองแบบเป็นโซลูชันการสำรองข้อมูลให้จำลองข้อมูลจากฐานข้อมูลหลักไปยังฐานข้อมูลรองแล้วสำรองข้อมูลรองสามารถหยุดชั่วคราวและปิดได้โดยไม่กระทบต่อการดำเนินการที่ทำงานอยู่ของข้อมูลหลักดังนั้นคุณจึงสามารถสร้างสแนปชอตที่มีประสิทธิภาพของข้อมูล "ที่ใช้งานอยู่" ซึ่งอาจจำเป็นต้องปิดระบบหลัก
  • การขยายขนาด:คุณสามารถใช้การจำลองแบบเป็นโซลูชันการขยายขนาดได้นั่นคือที่ที่คุณต้องการแยกโหลดของการสืบค้นฐานข้อมูลไปยังเซิร์ฟเวอร์ฐานข้อมูลหลายเครื่องภายในข้อจำกัดที่สมเหตุสมผลบางประการเนื่องจากการจำลองแบบทำงานจากการกระจายของหนึ่งหลักไปยังหนึ่งรองรองการใช้เพื่อขยายขนาดจะทำงานได้ดีที่สุดใน Environment ที่คุณมีจำนวนการอ่านสูงและการเขียน/อัพเดตจำนวนน้อย
  • กระจายโหลด:อาจมีสถานการณ์เมื่อคุณมีฐานข้อมูลหลักเดียวและต้องการจำลองฐานข้อมูลที่แตกต่างกันไปยังฐานข้อมูลรองที่ต่างกันตัวอย่างเช่นคุณอาจต้องการกระจายข้อมูลการขายไปยังแผนกที่จำเป็นเท่านั้นเพื่อช่วยกระจายภาระในระหว่างการวิเคราะห์ข้อมูล
  • เพิ่มประสิทธิภาพ:เมื่อจำนวนตัวรองที่เชื่อมต่อกับตัวหลักเพิ่มขึ้นโหลดแม้ว่าจะน้อยที่สุดแต่ก็เพิ่มขึ้นเช่นกันเนื่องจากตัวรองแต่ละตัวใช้การเชื่อมต่อไคลเอนต์กับตัวหลักเนื่องจากแต่ละรองจะต้องได้รับสำเนาบันทึกไบนารีหลักแบบเต็มโหลดของเครือข่ายบนหลักอาจเพิ่มขึ้นและสร้างคอขวดด้วยหากคุณใช้ตัวรองจำนวนมากที่เชื่อมต่อกับตัวหลักตัวเดียวและตัวหลักนั้นกำลังยุ่งอยู่กับการประมวลผลคำขอ (เช่นเป็นส่วนหนึ่งของโซลูชันการขยายขนาด) คุณอาจต้องการปรับปรุงประสิทธิภาพของกระบวนการจำลองแบบวิธีหนึ่งในการปรับปรุงประสิทธิภาพของกระบวนการเรพลิเคชันคือการสร้างโครงสร้างเรพลิเคชันที่ลึกขึ้นซึ่งช่วยให้ตัวหลักสามารถเรพลิเคตไปยังตัวรองเพียงตัวเดียวเท่านั้นและสำหรับตัวรองที่เหลือเพื่อเชื่อมต่อกับตัวรองหลักนี้สำหรับข้อกำหนดในการจำลอง
  • การบรรเทาความล้มเหลว:คุณสามารถตั้งค่าหลักและรอง (หรือหลายรอง) และเขียนสคริปต์ที่ตรวจสอบหลักเพื่อตรวจสอบว่ามีการใช้งานหรือไม่จากนั้นแนะนำให้แอปพลิเคชันของคุณและตัวรองเปลี่ยนหลักในกรณีที่เกิดความล้มเหลว
  • ความปลอดภัย:คุณสามารถใช้ SSL เพื่อเข้ารหัสการถ่ายโอนบันทึกไบนารีที่จำเป็นในระหว่างการจำลองแบบแต่ทั้งหลักและรองต้องรองรับการเชื่อมต่อเครือข่าย SSL ถ้าโฮสต์ใดโฮสต์หนึ่งไม่สนับสนุนการเชื่อมต่อ SSL การจำลองแบบผ่านการเชื่อมต่อ SSL จะไม่สามารถทำได้การตั้งค่าการจำลองแบบโดยใช้การเชื่อมต่อ SSL คล้ายกับการตั้งค่าเซิร์ฟเวอร์และไคลเอนต์โดยใช้ SSL คุณต้องได้รับ (หรือสร้าง) ใบรับรองความปลอดภัยที่เหมาะสมซึ่งคุณสามารถใช้กับใบรับรองหลักและใบรับรองที่คล้ายกัน (จากผู้ออกใบรับรองเดียวกัน) ในแต่ละรอง

การติดตั้งอัตโนมัติ

Ruk-Com PaaS สามารถติดตั้งคลัสเตอร์ฐานข้อมูล MySQL/MariaDB/Percona ที่พร้อมใช้งานสูงได้โดยอัตโนมัติพร้อมด้วยประเภทการจำลองที่จำเป็น (รวมถึงprimary-secondaryหนึ่ง) เพียงไม่กี่คลิกตัวเลือกนี้มีให้ใช้งานโดยตรงในตัวช่วยสร้างโทโพโลยีระหว่างการสร้าง Environment:

  • คลิกที่Environment ใหม่ปุ่มที่ด้านบนของแดชบอร์ด
  • เลือกMySQL,MariaDB, หรือPerconaฐานข้อมูลในตัวช่วยสร้างโทโพโลยี
  • เปิดใช้งานการจัดกลุ่มอัตโนมัติตัวเลือก.
  • เลือกPrimary-Secondaryประเภทการจำลองแบบจากโครงการรายการแบบเลื่อนลง
  • ปรับพารามิเตอร์อื่นๆหากจำเป็นแล้วคลิกสร้าง.

Image 4: database auto-clusteringหรือคุณสามารถสร้าง Environment เฉพาะโดยอัตโนมัติด้วยคลัสเตอร์ฐานข้อมูล MySQL/MariaDB/Percona ที่กำหนดค่าไว้ล่วงหน้าโดยใช้แพ็คเกจสำเร็จรูปMySQL/MariaDB/คลัสเตอร์ Perconaแอปพลิเคชันที่มีอยู่ในแพลตฟอร์มตลาด.

  • คลิกที่ตลาดปุ่มที่ด้านบนของแดชบอร์ด
  • ค้นหาMySQL/MariaDB/คลัสเตอร์ Perconaแอปพลิเคชันโดยใช้แถบค้นหา
  • ในกล่องโต้ตอบที่ปรากฏขึ้นให้เลือกสแต็กฐานข้อมูลและประเภทการจำลองที่ต้องการ
  • ตั้งค่าพารามิเตอร์ Environment อื่นๆแล้วคลิกติดตั้ง.

Image 5: database cluster marketplaceนั่นคือทั้งหมด! ภายในไม่กี่นาทีคลัสเตอร์ฐานข้อมูลของคุณจะถูกสร้างขึ้นและกำหนดค่าโดยอัตโนมัติตามประเภทการจำลองที่เลือก

การติดตั้งด้วยตนเอง

หากคุณต้องการควบคุมกระบวนการจำลองแบบเต็มรูปแบบและต้องการตั้งค่าและกำหนดค่าการจำลองแบบหลัก-รองด้วยตนเองคุณสามารถทำตามขั้นตอนด้านล่าง

สร้าง Environment

เคล็ดลับ:คำแนะนำด้านล่างนี้เหมาะสมอย่างยิ่งสำหรับทั้งสองอย่างMySQLและMariaDBเซิร์ฟเวอร์ฐานข้อมูล

เริ่มต้นด้วยการสร้าง Environment สองแบบสำหรับฐานข้อมูลหลักและรองของเรา

  1. เข้าสู่ระบบแดชบอร์ดแพลตฟอร์มแล้วคลิกEnvironment ใหม่ปุ่ม.

Image 8: create new environment button2. ในโทโพโลยี Environmentตัวช่วยเราจะเลือกMariaDBเป็นฐานข้อมูลของเราตั้งค่าขีดจำกัด cloudlet และตั้งชื่อ Environment แรกเช่นprimary-db.

Image 9: environment topology wizardคลิกสร้างและรอสักครู่เพื่อให้ Environment ของคุณถูกสร้างขึ้น

  1. ทำซ้ำขั้นตอนก่อนหน้าเพื่อสร้างรอง-dbEnvironment ที่มีฐานข้อมูลเดียวกันหรือเพียงแค่โคลนที่primary-dbEnvironment.

Image 10: database environments createdตอนนี้คุณมีสอง Environment ที่เหมือนกันกับฐานข้อมูล MariaDB

กำหนดค่าฐานข้อมูลหลัก

มากำหนดค่าฐานข้อมูลหลักกันตอนนี้เลย

  1. คลิกที่การกำหนดค่าปุ่มสำหรับฐานข้อมูลหลักของคุณ

Image 12: primary DB config button2. นำทางไปยังmy.cnfและเพิ่ม (หรือไม่ใส่ข้อคิดเห็นหากมีอยู่แล้ว) คุณสมบัติต่อไปนี้ตามที่แสดงด้านล่าง:

server-id = 1
log-bin = mysql-bin
binlog-format = mixed

Image 13: primary DB my.cnf

บันทึก:เราใช้รูปแบบ binlog "ผสม" (binlog-format = ผสม) เพื่ออนุญาตการจำลองแบบการดำเนินการด้วยคีย์ต่างประเทศอย่าใช้รูปแบบ "คำสั่ง" มิฉะนั้นคุณจะได้รับข้อผิดพลาดในภายหลัง!

  1. บันทึกการเปลี่ยนแปลงและรีสตาร์ทMariaDB เพื่อใช้พารามิเตอร์การกำหนดค่าใหม่

Image 14: primary DB restart node4. คลิกที่เปิดในเบราว์เซอร์ปุ่มสำหรับMariaDBและเข้าสู่ระบบphpMyAdminแผงผู้ดูแลระบบที่ใช้ข้อมูลรับรองรูทฐานข้อมูลที่ส่งถึงคุณทางอีเมล

  1. นำทางไปยังบัญชีผู้ใช้แท็บแล้วคลิกเพิ่มบัญชีผู้ใช้.

Image 15: primary DB add user6. ระบุชื่อและรหัสผ่านสำหรับผู้ใช้การจำลองข้อมูลของคุณ

Image 16: database user credentialsถัดไปเลื่อนลงและทำเครื่องหมายที่ไคลเอ็นต์การจำลองแบบและทาสการจำลองแบบสิทธิ์การบริหาร

Image 17: database user privilegesคลิกไปที่ด้านล่างของหน้าเพื่อสร้างผู้ใช้

  1. เปลี่ยนไปที่สถานะเพื่อให้แน่ใจว่ามีการกำหนดค่าการจำลองอย่างถูกต้อง

Image 18: primary DB statusให้ความสนใจกับบันทึกไฟล์และตำแหน่งเนื่องจากจำเป็นต้องใช้ในการตั้งค่าฐานข้อมูลรอง

กำหนดค่าฐานข้อมูลรอง

กลับไปที่แดชบอร์ดแพลตฟอร์มและกำหนดค่าฐานข้อมูลรองของเรา

  1. คลิกที่การกำหนดค่าปุ่มสำหรับคุณรอง-dbEnvironment ให้เปิดไฟล์my.cnfไฟล์และเพิ่มคุณสมบัติต่อไปนี้:
server-id = 2
slave-skip-errors = all

Image 20: secondary DB my.cnf configสำหรับตัวอย่างนี้เราอนุญาตให้ฐานข้อมูลรองของเราข้ามข้อผิดพลาดทั้งหมดจากฐานข้อมูลหลัก (ทาสข้ามข้อผิดพลาด = ทั้งหมด) เพื่อไม่ให้หยุดการทำงานรองตามปกติในกรณีที่เกิดข้อผิดพลาดกับฐานข้อมูลหลัก

บันทึก:โดยทั่วไปไม่แนะนำให้ข้ามเช่นนี้ในระหว่างขั้นตอนการพัฒนาสามารถช่วยคุณค้นหาและแก้ไขจุดบกพร่องได้และในการผลิต (เมื่อโค้ดของคุณได้รับการทดสอบแล้ว) จะเป็นการดีกว่าที่จะเพิกเฉยต่อข้อผิดพลาดเฉพาะมากกว่าข้อผิดพลาดทั้งหมดช่วยหลีกเลี่ยงการยกเลิกการซิงโครไนซ์กับปัญหาเล็กๆน้อยๆบน Node หลักขณะเดียวกันก็ไม่พลาดปัญหาสำคัญใดๆที่อาจทำให้ข้อมูลสูญหายได้

  1. ต่อไปให้เปิด./etc/phpMyAdmin/config.inc.phpไฟล์และต่อท้ายด้วยตัวเลือกถัดไป:

$cfg['AllowArbitraryServer'] = true;

Image 21: secondary DB allow arbitrary server4.บันทึกการเปลี่ยนแปลงและรีสตาร์ทเซิร์ฟเวอร์ฐานข้อมูลสำรองของคุณเพื่อใช้พารามิเตอร์การกำหนดค่าใหม่

  1. มากำหนดค่าเซิร์ฟเวอร์ฐานข้อมูลรองผ่านทางบิวท์อินเว็บ SSHลูกค้า. เชื่อมต่อกับฐานข้อมูลของคุณโดยใช้ข้อมูลประจำตัวจากอีเมลที่ได้รับหลังจากการสร้าง Node (หากทำการโคลนให้ใช้ข้อมูลเดียวกันกับใน DB เริ่มต้น)

ทุบตี

mysql -u root -p

Image 22: SSH access to database6. ระบุรายละเอียดแหล่งที่มาของการจำลอง (ฐานข้อมูลหลัก) อย่าลืมปรับตัวอย่างโค้ดด้านล่างด้วยข้อมูลจริงของคุณ:

  • แหล่งที่มา_HOST(มาสเตอร์_โฮสต์) - URL หรือ IP ของแหล่งการจำลอง (รับจากแดชบอร์ด)
  • SOURCE_USER(MASTER_USER) - ชื่อผู้ใช้การจำลอง (สร้างขึ้นในส่วนก่อนหน้า)
  • แหล่งที่มา_รหัสผ่าน(MASTER_รหัสผ่าน) - รหัสผ่านของผู้ใช้การจำลองแบบ (สร้างขึ้นในส่วนก่อนหน้า)
  • SOURCE_LOG_FILE(MASTER_LOG_FILE) - ไฟล์บันทึกของแหล่งที่มา (ดูขั้นตอนสุดท้ายของส่วนก่อนหน้า)
  • SOURCE_LOG_POS(MASTER_LOG_POS) - ตำแหน่งบันทึกของแหล่งที่มา (ดูขั้นตอนสุดท้ายของส่วนก่อนหน้า)

สำหรับ MariaDB ให้ใช้คำสั่งต่อไปนี้ (เลิกใช้งานแล้วแต่เข้ากันได้กับ MySQL และ Percona):

ฐานข้อมูล SQL

CHANGE MASTER TO
    MASTER_HOST='node410337-primary-db.domain.com',
    MASTER_USER='replication',
    MASTER_PASSWORD='passw0rd',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=865;

สำหรับ MySQL (เวอร์ชัน 8.0.22 และใหม่กว่า) และ Percona แนะนำให้ใช้แนวทางต่อไปนี้:

ฐานข้อมูล SQL

CHANGE REPLICATION SOURCE TO
    SOURCE_HOST='node410337-primary-db.domain.com',
    SOURCE_USER='replication',
    SOURCE_PASSWORD='passw0rd',
    SOURCE_LOG_FILE='mysql-bin.000001',
    SOURCE_LOG_POS=865;

Image 23: set replication source7. ตอนนี้คุณสามารถเริ่มการจำลองด้วยคำสั่งที่เหมาะสม:

ฐานข้อมูล SQL

START REPLICA;

บันทึก:ใน MySQL เวอร์ชันก่อน 8.0.22 และใน MariaDB ก่อน 10.5.1 คำสั่งจะเป็นดังนี้:

ฐานข้อมูล SQL

START SLAVE;

Image 24: start replication8. เพื่อให้แน่ใจว่าทุกอย่างได้รับการกำหนดค่าอย่างถูกต้องให้ล็อกอินเข้าสู่แผงผู้ดูแลระบบฐานข้อมูลรองและไปที่สถานะแท็บคุณควรเห็นว่าการจำลองกำลังทำงานอยู่ดังที่แสดงด้านล่าง

Image 25: secondary database status

ตรวจสอบผลลัพธ์

เราต้องตรวจสอบให้แน่ใจว่าการจำลองแบบระดับ Primary-Secondary ใช้ได้กับฐานข้อมูลของเราแล้ว

  1. มาสร้างฐานข้อมูลใหม่กัน (เช่นการจำลองแบบ_ทดสอบ) ในฐานหลักของเรา

Image 27: create database on primary2. เปลี่ยนไปใช้ฐานข้อมูลรองแล้วคุณจะเห็นว่าฐานข้อมูลใหม่ได้รับการจำลองแบบสำเร็จแล้ว

Image 28: replicated database on secondaryตอนนี้คุณมีการจำลองฐานข้อมูลของคุณเองในระบบคลาวด์แล้วสนุก!