ฉันกำลังจะเริ่มทดสอบการตั้งค่าหลักโดยใช้การจำลองแบบกลุ่ม MySQL ฉันได้ตั้งค่าเครื่องจักร 2 (จนถึง) น่าจะเป็นหนึ่งในสาม พวกเขาทั้งสองมี 2 นิคส์หนึ่งสำหรับการเข้าถึงแอปพลิเคชันและหนึ่งที่มีเพียง LAN IP สำหรับการสื่อสารระหว่างโหนด
ฉันเห็นในเอกสารบางฉบับที่กล่าวถึงโดยใช้ NIC สองรายการหนึ่งรายการสำหรับการส่งระหว่างโหนดและอีกรายการสำหรับการสื่อสารกับแอป ฉันมาถึงจุดที่ฉันแก้ไขไฟล์ /etc/mysql/my.cnf แล้ว ฉันต้องเข้าใจการตั้งค่าเหล่านี้:
สมมติว่าแอปพลิเคชันของฉันมี ip เท่ากับ 10.3.0.4 และ LAN เท่านั้น NIC มี 10.3.1.4 การตั้งค่าเดียวกันบนเครื่อง 2
bind-address = "10.3.0.4"
report_host = "10.3.??" ??
loose-group_replication_local_address = "10.3.1.4:33061"
IP ของโฮสต์รายงานรายใดเป็นของใคร ฉันรวบรวมว่า Loose-group_replication_local_address นั้นเป็นที่อยู่อื่นที่เชื่อมโยง แต่สำหรับการสื่อสารระหว่างโหนด แต่ฉันไม่สามารถหาตัวอย่างของการตั้งค่าแบบ Multi-Nic ที่จัดการกับการตั้งค่าเหล่านี้ได้ บทเรียนทั้งหมดที่มีบรรทัดเหล่านี้แสดงการใส่ ip เดียวกันเนื่องจากมีเพียงนิคเดียว
สภาพแวดล้อม: Ubuntu 16.04 ใน Azure
ฉันทำตามคำแนะนำนี้เพื่อติดตั้ง: https://www.digitalocean.com/community/tutorials/how-to-configure-mysql-group-replication-on-ubuntu-16-04
บิตเกี่ยวกับนิคส์คู่มาจากส่วนต่าง ๆ ประมาณ 6 หน้า
แก้ไข: @roothann ทำให้ฉันตรงกับสิ่งที่โฮสต์รายงานควรทำ ตอนนี้ฉันมีปัญหาใหม่เมื่อ mysql รีสตาร์ทพอร์ต 33061 จะไม่แสดงขึ้นใน netstat และฉันได้รับข้อผิดพลาดนี้ในบันทึก: "การรับชื่อเพื่อนล้มเหลวขณะเชื่อมต่อกับเซิร์ฟเวอร์ 10.3.1.5 โดยมีข้อผิดพลาด 111 - การเชื่อมต่อปฏิเสธ [GCS] ข้อผิดพลาดในการเปิดการเชื่อมต่อกับ 10.3.1.5:33061 บนพอร์ตในเครื่อง: 33061. ข้อผิดพลาด = 0 "ความคิดใด ๆ ฉันได้เพิ่มปลั๊กอิน group_replication แต่เมื่อฉันทำคำสั่งนี้: mysql> เริ่ม GROUP_REPLICATION; ข้อผิดพลาด 3096 (HY000): คำสั่ง START GROUP_REPLICATION ล้มเหลวเนื่องจากมีข้อผิดพลาดเมื่อเริ่มต้นเลเยอร์การสื่อสารกลุ่ม
นั่นคือสิ่งที่ทำให้ฉันตรวจสอบบันทึกและดูที่ netstat
แก้ไขอีก: ตามที่ระบุไว้ด้านล่างด้วยเหตุผลบางอย่างคำสั่งติดตั้งที่ปลอดภัยไม่ได้ลบคำสั่งที่จะใช้การเชื่อมต่อในประเทศเท่านั้น นั่นคือการแก้ไข ปัญหาใหม่คือข้อมูลไม่ได้ซิงค์ โหนดที่สองดึงตัวเองออกจากกลุ่มเนื่องจากไม่สามารถกู้คืนได้สำเร็จ
mysql> SELECT * FROM performance_schema.replication_group_members;
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
| group_replication_applier | f0bcfc98-4255-11e8-b39f-000d3a1db637 | 10.3.1.4 | 3306 | ONLINE |
+---------------------------+--------------------------------------+-------------+-------------+--------------+
ดังนั้นด้วยเหตุผลบางอย่างการจำลองแบบกำลังพยายามที่จะเกิดขึ้นในส่วนต่อประสาน LAN แต่บนพอร์ต mysql ปกติแทนที่จะเป็น 33061 ฉันพยายามแก้ไขปัญหานี้และได้รับสิ่งนี้:
mysql> CHANGE MASTER TO MASTER_USER='repl', MASTER_PORT=33061, MASTER_PASSWORD='the password' FOR CHANNEL 'group_replication_recovery';
ERROR 3139 (HY000): CHANGE MASTER with the given parameters cannot be performed on channel 'group_replication_recovery'.
แก้ไข 17 พฤษภาคม: ฉันสร้างคลัสเตอร์ใหม่อีกครั้งตั้งแต่เริ่มต้นคราวนี้ด้วย 3 เครื่อง ยังคงเป็นปัญหาเดียวกัน โหนดแรกเกิดขึ้น เพิ่มอีกสองรายการเช่นกัน แต่แสดงเฉพาะการกู้คืนจากนั้นจะถูกลบออกจากคลัสเตอร์
บนโหนดแรกฉันจะได้รับสิ่งนี้ในบันทึก:
2018-05-17T14:37:21.859153Z 27 [System] [MY-010597] [Repl] 'CHANGE MASTER TO FOR CHANNEL 'group_replication_recovery' executed'. Previous state master_host='', master_port= 3306, master_log_file='', master_log_pos= 4, master_bind=''. New state master_host='', master_port= 3306, master_log_file='', master_log_pos= 4, master_bind=''.
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
| group_replication_applier | 38d4aa76-592f-11e8-814a-000d3a60e580 | 10.7.1.11 | 33061 | RECOVERING | PRIMARY | 8.0.11 |
| group_replication_applier | 3dbbb30f-592f-11e8-8fc7-000d3a603364 | 10.7.1.12 | 33061 | RECOVERING | PRIMARY | 8.0.11 |
| group_replication_applier | b0ff0148-592e-11e8-aa03-000d3a60e4cc | 10.7.1.10 | 33061 | ONLINE | PRIMARY | 8.0.11 |
+---------------------------+--------------------------------------+-------------+-------------+--------------+-------------+----------------+
3 rows in set (0.00 sec)
ฉันได้รับสิ่งนี้ในบันทึกจากเซิร์ฟเวอร์อื่น:
2018-05-17T14:57:17.970789Z 18 [ERROR] [MY-011583] [Repl] Plugin group_replication reported: 'For details please check performance_schema.replication_connection_status table and error log messages of Slave I/O for channel group_replication_recovery.'
2018-05-17T14:58:18.023898Z 18 [System] [MY-010597] [Repl] 'CHANGE MASTER TO FOR CHANNEL 'group_replication_recovery' executed'. Previous state master_host='10.7.1.10', master_port= 33061, master_log_file='', master_log_pos= 4, master_bind=''. New state master_host='10.7.1.10', master_port= 33061, master_log_file='', master_log_pos= 4, master_bind=''.
ฉันสังเกตเห็นว่าในโหนดแรกตัวแปร master_host ว่างเปล่าในขณะที่สองมันเต็มไปด้วย ip ของหลัก ตอนนี้เนื่องจากพวกเขาทุกคนควรจะเป็นปรมาจารย์หลักไม่ควรมีบางอย่างเช่นกัน?
ขอบคุณล่วงหน้า!