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

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

RUK-COM PAAS / DATABASES

คู่มือ Multi-Primary Replication สำหรับ Database

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

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

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

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

การทำ Replication แบบ Multi-Primary สำหรับ MySQL/MariaDB/Percona

Platform นี้ช่วยให้คุณตั้งค่าการจำลอง Database สองประเภทที่แตกต่างกันได้อย่างง่ายดาย -primary-secondaryและprimary-primary- เพื่อแก้ไขปัญหาต่างๆหลายประการเกี่ยวกับประสิทธิภาพเพื่อรองรับการสำรอง Database บรรเทาความล้มเหลวของระบบและอื่นๆอีกมากมายข้อมูลเกี่ยวกับวิธีการกำหนดค่ากการจำลองแบบระดับ Primary-Secondaryสำหรับ Database MySQL/MariaDB/Percona ของคุณสามารถพบได้ในคำแนะนำที่เชื่อมโยง

ในบทช่วยสอนนี้เราจะอธิบายวิธีกำหนดค่าการจำลองแบบหลัก-หลัก (หลายหลัก)

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

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

โดยทั่วไปการจำลองแบบหลายหลักเป็นโซลูชันที่ซับซ้อนกว่าการจำลองแบบหลัก-รองซึ่งเป็นสาเหตุว่าทำไมจึงมีการใช้งานไม่บ่อยอย่างไรก็ตามมีบางกรณีการใช้งานที่เหมาะกว่า:

การจำลองแบบ Primary-Secondary หลายประถมศึกษา
ประโยชน์ ความเรียบง่ายความง่ายในการติดตั้งและบำรุงรักษา ความพร้อมใช้งานที่สูงขึ้น Load Balancing การกระจายทางภูมิศาสตร์
ข้อเสีย จุดเดียวของความล้มเหลวการดำเนินการเขียนจำกัดไว้ที่หลัก ความซับซ้อนโอกาสที่จะเกิดข้อขัดแย้งระหว่างการเขียนพร้อมกัน
ใช้กรณี ปริมาณงานที่ต้องอ่านข้อมูลจำนวนมากการสำรองข้อมูลและการกู้คืนระบบ Application ที่มีข้อกำหนดด้านความสอดคล้องที่เข้มงวด ปริมาณงานที่เขียนหนักความพร้อมใช้งานสูงและความสามารถในการปรับขนาด Application ที่กระจายตามภูมิศาสตร์ (การเขียนในเครื่อง)

เราขอแนะนำให้เลือกประเภทการจำลองตามความต้องการ Application เฉพาะและข้อกำหนดโครงสร้างพื้นฐานของคุณ:

  • Primary-Secondaryเพื่อความเรียบง่ายความสม่ำเสมอสูงและปริมาณงานที่มีการอ่านจำนวนมาก
  • Primary-Primaryสำหรับความพร้อมใช้งานสูงความสามารถในการปรับขนาดการเขียนและระบบแบบกระจายที่ต้องการการเขียนในเครื่อง

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

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

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

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

  • คลิกที่ตลาดปุ่มที่ด้านบนของ Dashboard
  • ค้นหาMySQL/MariaDB/Cluster PerconaApplication โดยใช้แถบค้นหา
  • ในกล่องโต้ตอบที่ปรากฏขึ้นให้เลือก StackDatabase และประเภทการจำลองที่ต้องการ
  • ตั้งค่า Parameter Environment อื่นๆแล้วคลิกติดตั้ง.

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

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

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

สร้าง Environment

สิ่งแรกที่คุณต้องการเพื่อกำหนดค่าการจำลอง Database คือ ServerDatabase อย่างน้อยสอง Server สำหรับตัวอย่างของเราเรามาสร้าง Environment สองรายการด้วย Instance MySQL กัน

เคล็ดลับ:คำแนะนำด้านล่างนี้เหมาะสำหรับทั้งสองอย่างMariaDBและPerconaServerDatabase ที่มีการปรับเปลี่ยนเพียงเล็กน้อย

  1. เข้าสู่ระบบ DashboardPlatform แล้วคลิกEnvironment ใหม่ปุ่ม.

Image 8: create new environment button2. ในTopology Environmentตัวช่วยเราจะเลือกMySQLเป็น Database ของเราตั้งค่าขีดจำกัด cloudlet และตั้งชื่อ Environment แรกเช่นfirst-primary.

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

  1. ทำซ้ำขั้นตอนก่อนหน้าเพื่อสร้างsecond-primaryEnvironment ที่มี Database เดียวกันหรือเพียงแค่Cloneที่first-primaryEnvironment.

Image 10: two database environmentsตอนนี้คุณมีสอง Environment ที่เหมือนกันกับ Database MySQL มาดำเนินการกำหนดค่าการจำลองต่อ

กำหนดค่า Primary ตัวแรก

  1. เริ่มต้นด้วยfirst-primary. คลิกที่การกำหนดค่าปุ่มสำหรับ Environment แรกของคุณ

Image 12: config first primary2. ไปที่/etc/my.cnfในตัวจัดการไฟล์ที่เปิดอยู่ค้นหาไฟล์รหัส ServerParameter และแทนที่ด้วยค่าต่อไปนี้:

อินี่

server-id = 1
binlog-do-db = example
binlog-do-db = teste
log-bin = /var/log/mysql/mysql-bin.log
auto_increment_increment = 1
auto_increment_offset = 1

Image 13: edit my.cnf fileมาพิจารณาในรายละเอียดว่าเรากำลังกำหนดค่าอะไรกับตัวเลือกเหล่านี้:

  • รหัส Server- ตัวเลือกทั่วไปที่ใช้โดย Server การจำลองเพื่อระบุตัวเองควรจะไม่ซ้ำกันสำหรับแต่ละ Server
  • bin-log-do-db = ตัวอย่างและbin-log-do-db = ทดสอบ- บอกให้ Server จำกัดการบันทึกไบนารีเพื่ออัพเดต Database ที่ระบุบันทึก:จะต้องไม่สร้าง Database เหล่านี้เมื่อคุณพอใจกับการจำลองแบบหลายหลักแล้วคุณสามารถรวม Database ของคุณเองได้
  • log-bin = /var/log/mysql/mysql-bin.log- กำหนดว่าเปิดใช้งานบันทึกไบนารีหรือไม่ค่าตัวเลือกหากกำหนดไว้จะเป็นชื่อฐานสำหรับลำดับบันทึก
  • การเพิ่มขึ้นอัตโนมัติ_การเพิ่มขึ้น = 1- ใช้เพื่อควบคุมช่วงเวลาระหว่างค่าคอลัมน์ที่ต่อเนื่องกัน
  • auto_increation_offset = 1- ในบริบทของการจำลองแบบหลายหลักสามารถใช้เพื่อหลีกเลี่ยงข้อขัดแย้งในการจำลองในบทความนี้เราได้ตั้งค่า1มูลค่าสำหรับfirst-primaryServer และ2สำหรับsecond-primary.

ทั้งคู่การเพิ่มขึ้นอัตโนมัติ_การเพิ่มขึ้นและauto_increation_offsetตัวเลือกต่างๆมีไว้สำหรับใช้กับการจำลองแบบหลายหลักและควรตั้งค่าตามความต้องการในการใช้งานของคุณเราขอแนะนำให้คุณตั้งค่าauto_increation_offsetค่าตัวเลือกให้เหมือนกับรหัส ServerParameter ตัวหนึ่งเพื่อหลีกเลี่ยงข้อขัดแย้งในการจำลอง

  1. บันทึกการเปลี่ยนแปลงและRestartNode MySQL

Image 14: restart first MySQL

กำหนดค่า Primary ตัวที่สอง

เรามาต่อกันที่second-primaryEnvironment. ขั้นตอนจะคล้ายกับขั้นตอนที่เราเพิ่งดำเนินการกับ Server เครื่องแรก

  1. วางเมาส์เหนือแล้วคลิกการกำหนดค่าเพื่อเปิดตัวจัดการไฟล์สำหรับ Node MySQL

  2. เปิดเหมือนกันครับ/etc/my.cnfไฟล์และแทนที่ไฟล์รหัส ServerParameter เช่นเดียวกับที่คุณทำกับ Server แรก:

อินี่

server-id = 2
binlog-do-db = example
binlog-do-db = teste
log-bin = /var/log/mysql/mysql-bin.log
auto_increment_increment = 1
auto_increment_offset = 2

บันทึก:เราได้เปลี่ยนค่าของรหัส Serverและauto_increation_offsetตัวเลือกต่างๆเนื่องจากควรจะไม่ซ้ำกันสำหรับแต่ละ Server

Image 16: second my.cnf file3. อีกครั้งหนึ่งบันทึกการเปลี่ยนแปลงและRestartNode MySQL

เปิดใช้งานการจำลองแบบหลัก-หลัก

  1. คลิกที่เปิดใน Browserปุ่มสำหรับMySQLNode ในfirst-primaryEnvironment และเข้าสู่ระบบphpMyAdminแผงผู้ดูแลระบบที่ใช้ข้อมูลรับรองรูท Database ที่ส่งถึงคุณทางอีเมล

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

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

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

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

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

Image 22: first primary statusให้ความสนใจกับบันทึกไฟล์และตำแหน่งเนื่องจากจำเป็นสำหรับการตั้งค่า Database หลักที่สอง

  1. ทำซ้ำขั้นตอนที่ 1-4 สำหรับ Server MySQL ตัวที่สองโดยสร้างผู้ใช้ที่มีชื่อเดียวกันและจดบันทึก Parameter ของ Log File

บันทึก:ในกรณีที่คุณใช้การ Clone สำหรับการสร้าง Environment ที่สอง:

  • ข้อมูลประจำตัวสำหรับ Server MySQL จะเหมือนกับ Node เริ่มต้น
  • คุณต้องตั้งค่า UUID ที่ไม่ซ้ำกันสำหรับ ServerDatabase ที่ถูก Clone ตัวอย่างเช่นคุณสามารถเปลี่ยนได้จากตัวแปรแท็บในแผง phpMyAdmin (ค้นหาและแก้ไขไฟล์server_uuidตัวแปร). หรือคุณสามารถลบ/var/lib/mysql/auto.cnfไฟล์และ Restart Node MySQL - UUID ใหม่จะถูกสร้างขึ้นโดยอัตโนมัติ
  1. ตอนนี้เราสามารถเปิดใช้งานการจำลองแบบได้แล้วคุณมีหลายวิธีในการดำเนินการนี้:
  • ใช้เฉพาะการจำลองแบบแท็บในแผง phpMyAdmin (มีตั้งแต่เวอร์ชัน MySQL 8.0.22 และ MariaDB 10.5.1)
  • เรียกใช้คำสั่ง SQL ที่จำเป็นในไฟล์SQLแท็บของแผง phpMyAdmin
  • เชื่อมต่อกับ Database ผ่าน SSH (เช่นเว็บ SSH) และดำเนินการคำสั่ง SQL ในเชลล์ MySQL

สำหรับตัวอย่างของเราเราจะใช้ตัวเลือกที่สองและเริ่มต้นด้วยsecond-primaryEnvironment. เปิดSQLแท็บในแผง phpMyAdmin และเรียกใช้คำสั่งต่อไปนี้:

Database SQL

STOP REPLICA;
CHANGE REPLICATION SOURCE TO SOURCE_HOST = 'first-primary', SOURCE_USER = 'replicator', SOURCE_PASSWORD = 'passw0rd', SOURCE_LOG_FILE = 'binlog_file_name', SOURCE_LOG_POS = binlog_file_position;
START REPLICA;

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

Database SQL

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST = 'first-primary', MASTER_USER = 'replicator', MASTER_PASSWORD = 'passw0rd', MASTER_LOG_FILE = 'binlog_file_name', MASTER_LOG_POS = binlog_file_position;
START SLAVE;

ที่นี่คุณจะต้องแทนที่ค่าสำหรับ Parameter ต่อไปนี้:

  • แหล่งที่มา_HOST(มาสเตอร์_Host) - URL หรือ IP ของรายการหลักอื่น (รับจาก Dashboard)
  • SOURCE_USER(MASTER_USER) - ชื่อผู้ใช้การจำลอง (สร้างขึ้นที่จุดเริ่มต้นของส่วน)
  • แหล่งที่มา_รหัสผ่าน(MASTER_รหัสผ่าน) - รหัสผ่านของผู้ใช้การจำลองแบบ (สร้างขึ้นที่จุดเริ่มต้นของส่วน)
  • SOURCE_LOG_FILE(MASTER_LOG_FILE) - Log File ของแหล่งที่มา (ดูในสถานะแท็บหลักอื่นๆ )
  • SOURCE_LOG_POS(MASTER_LOG_POS) - ตำแหน่งบันทึกของแหล่งที่มา (ดูในสถานะแท็บหลักอื่นๆ )

Image 23: start replication on second primaryคุณสามารถเพิกเฉยต่อ “ประเภทคำสั่งที่ไม่รู้จัก” คำเตือนในตัวแก้ไขคำสั่งของคุณจะถูกดำเนินการต่อไป

  1. คุณสามารถตรวจสอบสถานะการจำลองของคุณได้ในสถานะแท็บหรือใช้SHOW REPLICA STATUS;(SHOW SLAVE STATUS;) สั่งการ.

Image 24: second primary status7. ทำซ้ำ 6-7 ขั้นตอนสำหรับ Server MySQL อื่นของคุณ (first-primaryในกรณีของเรา) อย่าลืมแทนที่ค่า Parameter ด้วยข้อมูลที่ถูกต้องจากsecond-primaryServer

Image 25: start replication on first primaryยินดีด้วย! การจำลองแบบได้รับการเปิดใช้งานบน Server ทั้งสองเรียบร้อยแล้ว

ตรวจสอบการจำลองแบบ

สุดท้ายนี้เรามาดูกันว่าทุกอย่างทำงานได้อย่างมีเสน่ห์

  1. เข้าสู่ระบบ ServerDatabase แรกและสร้างใหม่ตัวอย่างDatabase:

Image 27: create example databaseอย่างที่คุณเห็นมันถูกทำเครื่องหมายว่าจำลองแบบแล้วในการจำลองแบบหลักคอลัมน์.

บันทึก:ชื่อของ Database ใหม่นี้สอดคล้องกับชื่อที่เราระบุไว้ในไฟล์กำหนดค่าของ Server (binlog-do-db = ตัวอย่าง). สำหรับการใช้งานเพิ่มเติมคุณสามารถสร้าง Database ของคุณเองและทดแทนได้binlog-do-dbค่าของ Parameter พร้อมชื่อ

  1. ตอนนี้เปลี่ยนไปใช้ Server ตัวที่สองใน Cluster MySQL ของคุณและตรวจสอบว่า Database ที่สร้างขึ้นใหม่ได้รับการจำลองแบบหรือไม่หากต้องการตรวจสอบว่าการจำลองแบบทำงานได้ทั้งสองวิธีให้เพิ่มตารางใหม่ลงใน Database นี้

Image 28: add table to database3. สุดท้ายเปลี่ยนกลับไปที่แผงผู้ดูแลระบบของ Server MySQL เครื่องแรกและตรวจสอบให้แน่ใจว่า Database ที่จำลองแบบนั้นมีตารางใหม่ทันที

Image 29: table replicated in first primaryคุณยังสามารถดำเนินการอื่นๆบางอย่างได้ (ดำเนินการกับบันทึกทริกเกอร์ดัชนีฯลฯ) เพื่อตรวจสอบว่าข้อมูลทั้งหมดได้รับการจำลองแบบทันทีภายใน Cluster MySQL ของคุณ

นั่นง่ายมาก! เพลิดเพลินกับความปลอดภัยของข้อมูลอย่างสมบูรณ์ด้วย PlatformHosting