Android

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

MariaDB HA WIth MaxScale

MariaDB HA WIth MaxScale

สารบัญ:

Anonim

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

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

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

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

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

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

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

Master IP: 192.168.121.190 Slave IP: 192.168.121.236

ติดตั้ง MySQL

ค่าเริ่มต้นคลังเก็บ Ubuntu 18.04 ประกอบด้วย MySQL รุ่น 5.7 เพื่อหลีกเลี่ยงปัญหาใด ๆ ที่ดีที่สุดคือการติดตั้ง MySQL รุ่นเดียวกันบนเซิร์ฟเวอร์ทั้งสอง

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

sudo apt-get update sudo apt-get install mysql-server

ติดตั้ง MySQL บนเซิร์ฟเวอร์ Slave โดยใช้คำสั่งเดียวกัน:

sudo apt-get update sudo apt-get install mysql-server

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

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

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

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

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf ต้นแบบ: /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address = 192.168.121.190 server-id = 1 log_bin = /var/log/mysql/mysql-bin.log

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

sudo systemctl restart mysql

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

sudo mysql

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

CREATE USER 'replica'@'192.168.121.236' IDENTIFIED BY 'replica_password';

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

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

SHOW MASTER STATUS\G

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

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

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

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

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

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

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf ทาส: /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address = 192.168.121.236 server-id = 2 log_bin = /var/log/mysql/mysql-bin.log

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

sudo systemctl restart mysql

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

sudo mysql

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

STOP SLAVE;

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

CHANGE MASTER TO MASTER_HOST='192.168.121.190', MASTER_USER='replica', MASTER_PASSWORD='replica_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=629;

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

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

START SLAVE;

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

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

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

sudo mysql

CREATE DATABASE replicatest;

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

sudo mysql

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

SHOW DATABASES;

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

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

ข้อสรุป

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

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

ubuntu mysql mariadb