คู่มือ 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 ของคุณสามารถพบได้ในคำแนะนำที่เชื่อมโยง
ในบทช่วยสอนนี้เราจะอธิบายวิธีกำหนดค่าการจำลองแบบหลัก-หลัก (หลายหลัก)
ด้านล่างนี้เราจะครอบคลุมหัวข้อต่อไปนี้:
กรณีการใช้งานการจำลองแบบ
โดยทั่วไปการจำลองแบบหลายหลักเป็นโซลูชันที่ซับซ้อนกว่าการจำลองแบบหลัก-รองซึ่งเป็นสาเหตุว่าทำไมจึงมีการใช้งานไม่บ่อยอย่างไรก็ตามมีบางกรณีการใช้งานที่เหมาะกว่า:
| การจำลองแบบ | 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 อื่นๆหากจำเป็นแล้วคลิกสร้าง.
หรือคุณสามารถสร้าง Environment เฉพาะโดยอัตโนมัติด้วย ClusterDatabase MySQL/MariaDB/Percona ที่กำหนดค่าไว้ล่วงหน้าโดยใช้ Package สำเร็จรูปMySQL/MariaDB/Cluster PerconaApplication ที่มีอยู่ใน Platformตลาด.
- คลิกที่ตลาดปุ่มที่ด้านบนของ Dashboard
- ค้นหาMySQL/MariaDB/Cluster PerconaApplication โดยใช้แถบค้นหา
- ในกล่องโต้ตอบที่ปรากฏขึ้นให้เลือก StackDatabase และประเภทการจำลองที่ต้องการ
- ตั้งค่า Parameter Environment อื่นๆแล้วคลิกติดตั้ง.
นั่นคือทั้งหมด! ภายในไม่กี่นาที ClusterDatabase ของคุณจะถูกสร้างขึ้นและกำหนดค่าโดยอัตโนมัติตามประเภทการจำลองที่เลือก
การติดตั้งด้วยตนเอง
หากคุณต้องการควบคุมกระบวนการจำลองแบบเต็มรูปแบบและต้องการตั้งค่าและกำหนดค่าการจำลองแบบหลัก-หลักด้วยตนเองคุณสามารถทำตามขั้นตอนด้านล่าง
สร้าง Environment
สิ่งแรกที่คุณต้องการเพื่อกำหนดค่าการจำลอง Database คือ ServerDatabase อย่างน้อยสอง Server สำหรับตัวอย่างของเราเรามาสร้าง Environment สองรายการด้วย Instance MySQL กัน
เคล็ดลับ:คำแนะนำด้านล่างนี้เหมาะสำหรับทั้งสองอย่างMariaDBและPerconaServerDatabase ที่มีการปรับเปลี่ยนเพียงเล็กน้อย
- เข้าสู่ระบบ DashboardPlatform แล้วคลิกEnvironment ใหม่ปุ่ม.
2. ในTopology Environmentตัวช่วยเราจะเลือกMySQLเป็น Database ของเราตั้งค่าขีดจำกัด cloudlet และตั้งชื่อ Environment แรกเช่นfirst-primary.
คลิกสร้างและรอสักครู่เพื่อให้ Environment ของคุณถูกสร้างขึ้น
- ทำซ้ำขั้นตอนก่อนหน้าเพื่อสร้างsecond-primaryEnvironment ที่มี Database เดียวกันหรือเพียงแค่Cloneที่first-primaryEnvironment.
ตอนนี้คุณมีสอง Environment ที่เหมือนกันกับ Database MySQL มาดำเนินการกำหนดค่าการจำลองต่อ
กำหนดค่า Primary ตัวแรก
- เริ่มต้นด้วยfirst-primary. คลิกที่การกำหนดค่าปุ่มสำหรับ Environment แรกของคุณ
2. ไปที่/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
มาพิจารณาในรายละเอียดว่าเรากำลังกำหนดค่าอะไรกับตัวเลือกเหล่านี้:
- รหัส 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 ตัวหนึ่งเพื่อหลีกเลี่ยงข้อขัดแย้งในการจำลอง
- บันทึกการเปลี่ยนแปลงและRestartNode MySQL
กำหนดค่า Primary ตัวที่สอง
เรามาต่อกันที่second-primaryEnvironment. ขั้นตอนจะคล้ายกับขั้นตอนที่เราเพิ่งดำเนินการกับ Server เครื่องแรก
-
วางเมาส์เหนือแล้วคลิกการกำหนดค่าเพื่อเปิดตัวจัดการไฟล์สำหรับ Node MySQL
-
เปิดเหมือนกันครับ/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
3. อีกครั้งหนึ่งบันทึกการเปลี่ยนแปลงและRestartNode MySQL
เปิดใช้งานการจำลองแบบหลัก-หลัก
- คลิกที่เปิดใน Browserปุ่มสำหรับMySQLNode ในfirst-primaryEnvironment และเข้าสู่ระบบphpMyAdminแผงผู้ดูแลระบบที่ใช้ข้อมูลรับรองรูท Database ที่ส่งถึงคุณทางอีเมล
2. นำทางไปยังบัญชีผู้ใช้แท็บแล้วคลิกเพิ่มบัญชีผู้ใช้.
3. ระบุชื่อและรหัสผ่านสำหรับผู้ใช้การจำลองข้อมูลของคุณ
ถัดไปเลื่อนลงและทำเครื่องหมายที่Client การจำลองแบบและทาสการจำลองแบบสิทธิ์การบริหาร
คลิกไปที่ด้านล่างของหน้าเพื่อสร้างผู้ใช้
- เปลี่ยนไปที่สถานะเพื่อให้แน่ใจว่ามีการกำหนดค่าการจำลองอย่างถูกต้อง
ให้ความสนใจกับบันทึกไฟล์และตำแหน่งเนื่องจากจำเป็นสำหรับการตั้งค่า Database หลักที่สอง
- ทำซ้ำขั้นตอนที่ 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 ใหม่จะถูกสร้างขึ้นโดยอัตโนมัติ
- ตอนนี้เราสามารถเปิดใช้งานการจำลองแบบได้แล้วคุณมีหลายวิธีในการดำเนินการนี้:
- ใช้เฉพาะการจำลองแบบแท็บในแผง 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) - ตำแหน่งบันทึกของแหล่งที่มา (ดูในสถานะแท็บหลักอื่นๆ )
คุณสามารถเพิกเฉยต่อ “ประเภทคำสั่งที่ไม่รู้จัก” คำเตือนในตัวแก้ไขคำสั่งของคุณจะถูกดำเนินการต่อไป
- คุณสามารถตรวจสอบสถานะการจำลองของคุณได้ในสถานะแท็บหรือใช้
SHOW REPLICA STATUS;(SHOW SLAVE STATUS;) สั่งการ.
7. ทำซ้ำ 6-7 ขั้นตอนสำหรับ Server MySQL อื่นของคุณ (first-primaryในกรณีของเรา) อย่าลืมแทนที่ค่า Parameter ด้วยข้อมูลที่ถูกต้องจากsecond-primaryServer
ยินดีด้วย! การจำลองแบบได้รับการเปิดใช้งานบน Server ทั้งสองเรียบร้อยแล้ว
ตรวจสอบการจำลองแบบ
สุดท้ายนี้เรามาดูกันว่าทุกอย่างทำงานได้อย่างมีเสน่ห์
- เข้าสู่ระบบ ServerDatabase แรกและสร้างใหม่ตัวอย่างDatabase:
อย่างที่คุณเห็นมันถูกทำเครื่องหมายว่าจำลองแบบแล้วในการจำลองแบบหลักคอลัมน์.
บันทึก:ชื่อของ Database ใหม่นี้สอดคล้องกับชื่อที่เราระบุไว้ในไฟล์กำหนดค่าของ Server (binlog-do-db = ตัวอย่าง). สำหรับการใช้งานเพิ่มเติมคุณสามารถสร้าง Database ของคุณเองและทดแทนได้binlog-do-dbค่าของ Parameter พร้อมชื่อ
- ตอนนี้เปลี่ยนไปใช้ Server ตัวที่สองใน Cluster MySQL ของคุณและตรวจสอบว่า Database ที่สร้างขึ้นใหม่ได้รับการจำลองแบบหรือไม่หากต้องการตรวจสอบว่าการจำลองแบบทำงานได้ทั้งสองวิธีให้เพิ่มตารางใหม่ลงใน Database นี้
3. สุดท้ายเปลี่ยนกลับไปที่แผงผู้ดูแลระบบของ Server MySQL เครื่องแรกและตรวจสอบให้แน่ใจว่า Database ที่จำลองแบบนั้นมีตารางใหม่ทันที
คุณยังสามารถดำเนินการอื่นๆบางอย่างได้ (ดำเนินการกับบันทึกทริกเกอร์ดัชนีฯลฯ) เพื่อตรวจสอบว่าข้อมูลทั้งหมดได้รับการจำลองแบบทันทีภายใน Cluster MySQL ของคุณ
นั่นง่ายมาก! เพลิดเพลินกับความปลอดภัยของข้อมูลอย่างสมบูรณ์ด้วย PlatformHosting

