Android

วิธีการกำหนดค่า mysql master

Webinar replay: Galera Cluster for MySQL vs MySQL (NDB) Cluster: A High Level Comparison - part 3

Webinar replay: Galera Cluster for MySQL vs MySQL (NDB) Cluster: A High Level Comparison - part 3

สารบัญ:

Anonim

การเรพลิเคท MySQL เป็นกระบวนการที่อนุญาตให้คุณคัดลอกข้อมูลจากเซิร์ฟเวอร์ฐานข้อมูลหนึ่งไปยังเซิร์ฟเวอร์หนึ่งเซิร์ฟเวอร์ขึ้นไปโดยอัตโนมัติ

MySQL รองรับโทโพโลยีการจำลองแบบจำนวนมากด้วยโทโพโลยีโทโพโลยี / Slave เป็นหนึ่งในโทโพโลยีที่รู้จักกันดีที่สุดซึ่งเซิร์ฟเวอร์ฐานข้อมูลหนึ่งทำหน้าที่เป็นมาสเตอร์ในขณะที่หนึ่งหรือมากกว่าหนึ่งเซิร์ฟเวอร์ทำหน้าที่เป็นทาส โดยค่าเริ่มต้นการจำลองแบบไม่ตรงกันที่ต้นแบบส่งเหตุการณ์ที่อธิบายถึงการปรับเปลี่ยนฐานข้อมูลเพื่อเข้าสู่ระบบไบนารีและทาสขอกิจกรรมเมื่อพวกเขาพร้อม

ในบทช่วยสอนนี้เราจะอธิบายวิธีตั้งค่าการจำลองแบบ MySQL Master / Slave ด้วยหนึ่งมาสเตอร์และสลาฟเซิร์ฟเวอร์หนึ่งรายการบน CentOS 7 ขั้นตอนเดียวกันนี้ใช้กับ MariaDB

โทโพโลยีการจำลองแบบชนิดนี้เหมาะที่สุดสำหรับการปรับใช้แบบจำลองการอ่านสำหรับการปรับขนาดการอ่านการสำรองฐานข้อมูลสดสำหรับการกู้คืนจากความเสียหายและสำหรับงานการวิเคราะห์

ข้อกำหนดเบื้องต้น

ในตัวอย่างนี้เราสมมติว่าคุณมีเซิร์ฟเวอร์สองเครื่องที่ใช้งาน CentOS 7 ซึ่งสามารถสื่อสารระหว่างกันผ่านเครือข่ายส่วนตัว หากผู้ให้บริการโฮสต์ของคุณไม่ได้ให้ที่อยู่ IP ส่วนตัวคุณสามารถใช้ที่อยู่ IP สาธารณะและกำหนดค่าไฟร์วอลล์ของคุณเพื่ออนุญาตการรับส่งข้อมูลบนพอร์ต 3306 จากแหล่งที่เชื่อถือได้เท่านั้น

เซิร์ฟเวอร์ในตัวอย่างนี้มี IP ดังต่อไปนี้:

Master IP: 192.168.121.59 Slave IP: 192.168.121.14

ติดตั้ง MySQL

ค่าเริ่มต้นที่เก็บ CentOS 7 ไม่มีแพ็คเกจ MySQL ดังนั้นเราจะติดตั้ง MySQL จาก Yum Repository อย่างเป็นทางการ เพื่อหลีกเลี่ยงปัญหาใด ๆ เราจะติดตั้ง MySQL เวอร์ชั่น 5.7 เดียวกันบนเซิร์ฟเวอร์ทั้งสอง

ติดตั้ง MySQL บนเซิร์ฟเวอร์ Master และ Slave:

sudo yum localinstall sudo yum install mysql-community-server

เมื่อการติดตั้งเสร็จสิ้นให้เริ่มบริการ MySQL และเปิดใช้งานการบู๊ตอัตโนมัติโดยเริ่มจาก:

sudo systemctl enable mysqld sudo systemctl start mysqld

เมื่อเซิร์ฟเวอร์ MySQL เริ่มขึ้นเป็นครั้งแรกจะมีการสร้างรหัสผ่านชั่วคราวสำหรับผู้ใช้รูท MySQL ในการค้นหารหัสผ่านให้ใช้คำสั่ง grep ต่อไปนี้:

sudo grep 'temporary password' /var/log/mysqld.log

รันคำสั่ง mysql_secure_installation เพื่อตั้งค่ารหัสผ่านรูทใหม่ของคุณและปรับปรุงความปลอดภัยของอินสแตนซ์ MySQL:

mysql_secure_installation

ป้อนรหัสผ่านรูทชั่วคราวและตอบ Y (ใช่) สำหรับคำถามทั้งหมด

รหัสผ่านใหม่จะต้องมีความยาวอย่างน้อย 8 ตัวอักษรและต้องมีตัวอักษรตัวพิมพ์ใหญ่อย่างน้อยหนึ่งตัวอักษรตัวพิมพ์เล็กหนึ่งตัวหมายเลขหนึ่งตัวและอักขระพิเศษหนึ่งตัว

กำหนดค่าเซิร์ฟเวอร์หลัก

อันดับแรกเราจะกำหนดค่าเซิร์ฟเวอร์ MySQL หลักและทำการเปลี่ยนแปลงต่อไปนี้:

  • ตั้งค่าเซิร์ฟเวอร์ MySQL ให้ฟังบน IP ส่วนตัวตั้งรหัสเซิร์ฟเวอร์ที่ไม่ซ้ำกันเปิดใช้งานการบันทึกแบบไบนารี

ให้เปิดไฟล์การตั้งค่า MySQL และเพิ่มบรรทัดต่อไปนี้ใน มาตรา:

sudo nano /etc/my.cnf ต้นแบบ: /etc/my.cnf

bind-address = 192.168.121.59 server-id = 1 log_bin = mysql-bin

เมื่อเสร็จแล้วให้เริ่มบริการ MySQL เพื่อให้การเปลี่ยนแปลงมีผล

sudo systemctl restart mysqld

ขั้นตอนต่อไปคือการสร้างผู้ใช้การจำลองแบบใหม่ เข้าสู่ระบบเซิร์ฟเวอร์ MySQL ในฐานะผู้ใช้รูท:

mysql -uroot -p

จากภายใน MySQL prompt ให้รันเคียวรี SQL ต่อไปนี้ที่จะสร้างผู้ใช้เร replica และให้สิทธิ์ REPLICATION SLAVE แก่ผู้ใช้:

CREATE USER 'replica'@'192.168.121.14' IDENTIFIED BY 'strong_password';

GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.14'; ตรวจสอบให้แน่ใจว่าคุณเปลี่ยน IP ด้วยที่อยู่ IP สลาฟของคุณ คุณสามารถตั้งชื่อผู้ใช้ตามที่คุณต้องการ

ในขณะที่อยู่ในพรอมต์ MySQL ให้ใช้คำสั่งต่อไปนี้เพื่อพิมพ์ชื่อไฟล์ไบนารีและตำแหน่ง

SHOW MASTER STATUS\G

*************************** 1. row *************************** File: mysql-bin.000001 Position: 1427 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0.00 sec)

จดชื่อไฟล์ 'mysql-bin.000001' และตำแหน่ง '1427' คุณจะต้องมีค่าเหล่านี้เมื่อกำหนดค่าเซิร์ฟเวอร์ทาส ค่าเหล่านี้อาจแตกต่างกันไปในเซิร์ฟเวอร์ของคุณ

กำหนดค่าเซิร์ฟเวอร์ Slave

เช่นเดียวกับเซิร์ฟเวอร์หลักด้านบนเราจะทำการเปลี่ยนแปลงต่อไปนี้กับเซิร์ฟเวอร์ทาส:

  • ตั้งค่าเซิร์ฟเวอร์ MySQL ให้ฟังบน IPSet ส่วนตัวเซิร์ฟเวอร์ที่ไม่ซ้ำ IDEnable การบันทึกแบบไบนารี

เปิดไฟล์คอนฟิกูเรชัน MySQL และแก้ไขบรรทัดต่อไปนี้:

sudo nano /etc/my.cnf ทาส: /etc/my.cnf

bind-address = 192.168.121.14 server-id = 2 log_bin = mysql-bin

เริ่มบริการ MySQL ใหม่:

sudo systemctl restart mysqld

ขั้นตอนต่อไปคือการกำหนดค่าพารามิเตอร์ที่เซิร์ฟเวอร์ทาสจะใช้เพื่อเชื่อมต่อกับเซิร์ฟเวอร์หลัก เข้าสู่ระบบไปยังเปลือก MySQL:

mysql -uroot -p

ขั้นแรกหยุดเธรดสลาฟ:

STOP SLAVE;

รันเคียวรีต่อไปนี้ที่จะตั้งค่า slave เพื่อทำซ้ำมาสเตอร์:

CHANGE MASTER TO MASTER_HOST='192.168.121.59', MASTER_USER='replica', MASTER_PASSWORD='strong_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1427;

ตรวจสอบให้แน่ใจว่าคุณใช้ที่อยู่ IP ชื่อผู้ใช้และรหัสผ่านที่ถูกต้อง ชื่อไฟล์บันทึกและตำแหน่งจะต้องเหมือนกับค่าที่คุณได้รับจากเซิร์ฟเวอร์หลัก

เมื่อเสร็จแล้วเริ่มหัวข้อทาส

START SLAVE;

ทดสอบการกำหนดค่า

ณ จุดนี้คุณควรมีการตั้งค่าการจำลองแบบ Master / Slave ที่ใช้งานได้

หากต้องการตรวจสอบว่าทุกอย่างทำงานได้ตามที่คาดหวังเราจะสร้างฐานข้อมูลใหม่บนเซิร์ฟเวอร์หลัก:

mysql -uroot -p

CREATE DATABASE replicatest;

เข้าสู่ระบบไปยังเปลือก MySQL ทาส:

mysql -uroot -p

รันคำสั่งต่อไปนี้เพื่อแสดงรายการฐานข้อมูลทั้งหมด:

SHOW DATABASES;

คุณจะสังเกตเห็นว่าฐานข้อมูลที่คุณสร้างขึ้นบนเซิร์ฟเวอร์หลักได้รับการจำลองแบบบนสลาฟ:

+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | replicatest | | sys | +--------------------+ 5 rows in set (0.00 sec)

ข้อสรุป

ในบทช่วยสอนนี้เราได้แสดงให้คุณสร้างการจำลองแบบ MySQL Master / Slave บน CentOS 7

อย่าลังเลที่จะแสดงความคิดเห็นหากคุณมีคำถามใด ๆ

centos mysql mariadb