start' >&2 ;; esac

เพิ่ม mysqld_multi บริการเป็นค่าเริ่มต้น runlevels ด้วยคำสั่งต่อไปนี้:

update-rc.d mysqld_multi defaults

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

mysqld_multi report

ตั้งค่า Master-slave Replication

ตอนนี้เมื่อเรามีอินสแตนซ์ MySQL สองอินสแตนซ์ที่ทำงานบนเครื่องเดียวกันเราจะตั้งค่าอินสแตนซ์แรกเป็นมาสเตอร์และอันที่สองเป็นทาส

ส่วนหนึ่งของการกำหนดค่าได้ดำเนินการไปแล้วในบท“ การตั้งค่า mysqld_multi” การเปลี่ยนแปลงเดียวที่เหลืออยู่ใน my.cnf ไฟล์คือการตั้งค่าการบันทึกไบนารีบนต้นแบบ ในการดำเนินการนี้ให้แก้ไข my.cnf ไฟล์ที่มีการเปลี่ยนแปลงและเพิ่มเติมต่อไปนี้ใน [mysqld1] กลุ่ม:

log_bin = /var/log/mysql/mysql-bin.log innodb_flush_log_at_trx_commit = 1 sync_binlog = 1 binlog-format = ROW

รีสตาร์ทอินสแตนซ์ MySQL หลักเพื่อให้การเปลี่ยนแปลงเหล่านี้มีผล:

mysqld_multi stop 1 mysqld_multi start 1

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

mysql -uroot -p --host=127.0.0.1 --port=3306

สร้างผู้ใช้ใหม่สำหรับการจำลองแบบ:

mysql> CREATE USER 'replication'@'%' IDENTIFIED BY 'replication'; mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';

ออกจากไคลเอนต์ MySQL

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

mysqldump -uroot -p --host=127.0.0.1 --port=3306 --all-databases --master-data=2 > replicationdump.sql

ที่นี่เราใช้ตัวเลือก --master-data=2 เพื่อให้มีความคิดเห็นที่มี CHANGE MASTER คำสั่งภายในไฟล์สำรอง ความคิดเห็นนั้นระบุพิกัดการจำลองในขณะที่ทำการสำรองข้อมูลและเราจะต้องใช้พิกัดเหล่านั้นในภายหลังสำหรับการอัปเดตข้อมูลหลักในอินสแตนซ์ทาส นี่คือตัวอย่างของความคิดเห็นนั้น:

-- -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=349;

อิมพอร์ตดัมพ์ที่คุณสร้างในขั้นตอนก่อนหน้าลงในอินสแตนซ์ทาส:

mysql -uroot -p --host=127.0.0.1 --port=3307

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

เชื่อมต่อกับอินสแตนซ์ทาสโดยใช้ไคลเอนต์ MySQL กับโฮสต์และพอร์ตที่เหมาะสม:

วิธีการเรียกใช้การจำลองมอนติคาร์โล
mysql -uroot -p --host=127.0.0.1 --port=3307

ดำเนินการคำสั่งต่อไปนี้เพื่ออัปเดตข้อมูลหลัก (ใช้พิกัดการจำลองแบบจากไฟล์ดัมพ์ replicationdump.sql ตามที่อธิบายไว้ข้างต้น):

mysql> CHANGE MASTER TO -> MASTER_HOST='127.0.0.1', -> MASTER_USER='replication', -> MASTER_PASSWORD='replication', -> MASTER_LOG_FILE='mysql-bin.000001', -> MASTER_LOG_POS=349;

ดำเนินการคำสั่งต่อไปนี้เพื่อเริ่มทาส:

mysql> START SLAVE;

ดำเนินการคำสั่งต่อไปนี้เพื่อตรวจสอบว่าการจำลองแบบพร้อมใช้งาน:

mysql> SHOW SLAVE STATUS G

ยินดีด้วย. การจำลอง MySQL master-slave ของคุณบนเครื่องเดียวกันได้รับการตั้งค่าเรียบร้อยแล้ว

การจำลองแบบ Master-Slave MySQL

สรุป

การมีการจำลองแบบ Master-Slave ที่กำหนดค่าไว้ในสภาพแวดล้อมการพัฒนาของคุณจะมีประโยชน์หากคุณต้องการสำหรับโซลูชันแบบขยายขนาดในสภาพแวดล้อมการผลิต ด้วยวิธีนี้คุณจะมีแหล่งข้อมูลแยกต่างหากที่กำหนดค่าสำหรับการเขียนและการอ่านเพื่อให้คุณสามารถทดสอบในเครื่องได้ว่าทุกอย่างทำงานตามที่คาดไว้ก่อนที่จะนำไปใช้งานต่อ

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