ฉันกำลังรันการเรพลิเคท MySQL แบบดูอัลมาสเตอร์และตอนนี้ต้องการย้ายไปยังฐานข้อมูลเดียวโดยไม่มีการจำลองแบบ ฉันจะปิดใช้งานการจำลองแบบบนฐานข้อมูลทั้งสองได้อย่างไร
ฉันกำลังรันการเรพลิเคท MySQL แบบดูอัลมาสเตอร์และตอนนี้ต้องการย้ายไปยังฐานข้อมูลเดียวโดยไม่มีการจำลองแบบ ฉันจะปิดใช้งานการจำลองแบบบนฐานข้อมูลทั้งสองได้อย่างไร
คำตอบ:
หากต้องการปิดใช้งานการจำลองแบบอย่างสมบูรณ์ด้วยการตั้งค่าต้นแบบหลักคุณควรทำสิ่งต่อไปนี้บนสลาฟแต่ละตัว:
STOP SLAVE;
RESET SLAVE;
(ใช้RESET SLAVE ALL;
สำหรับ MySQL 5.5.16 และใหม่กว่า)SLAVE STATUS
แบบสอบถามแม้หลังจากได้RESET SLAVE
รับคำสั่งแล้ว สิ่งสำคัญที่ควรทราบสำหรับการตรวจสอบหรือเครื่องมือการจัดการการกำหนดค่าระยะไกล ยืนยันพฤติกรรมกับ MySQL 5.5.38 บน CentOS 6.5
ฉันรู้ว่านี่เป็นคำถามเก่า แต่ฉันพบว่าฉันต้องรีเซ็ตตัวแปรทาส หากคุณใช้ "blah" ตามที่แนะนำเซิร์ฟเวอร์จะพยายามเริ่มต้นเพื่อค้นหาเซิร์ฟเวอร์ 'blah'
เปลี่ยน
MASTER
เป็นMASTER_HOST='',MASTER_USER='',MASTER_PASSWORD='';
คุณสามารถตรวจสอบว่าเครื่องไม่ได้เป็นทาสอีกต่อไป
SHOW SLAVE STATUS \G;
CHANGE MASTER TO MASTER_HOST=''
ขณะนี้พ่นข้อผิดพลาด
บนเซิร์ฟเวอร์ทาส:
ไม่จำเป็นต้องรีสตาร์ท MySQL ทั้งบนมาสเตอร์หรือทาส เอกสารที่สมบูรณ์สามารถพบได้ในมาตรา 19 ของคู่มืออ้างอิง MySQL
ฉันขอแนะนำให้เว้นการตั้งค่าการจำลองแบบที่เหลือไว้ในกรณีที่คุณตัดสินใจเปลี่ยนกลับเป็นการกำหนดค่าก่อนหน้า ด้วยวิธีนี้คุณเพียงแค่ต้องผลักดันข้อมูลและรีเซ็ตตำแหน่งทาส (อย่าลืมลบ skip-slave-start) แทนที่จะสร้างการตั้งค่าทั้งผ้าอีกครั้ง
ไม่ว่าจะเป็นเวอร์ชั่น MySQL วิธีที่สมบูรณ์แบบที่สุดในการทำเช่นนี้คือ
cd /var/lib/mysql
service mysql stop
rm -f master.info relay-*`
service mysql start
สิ่งนี้ต้องใช้กับเวอร์ชั่นล่าสุดเพราะการตั้งค่าการจำลองยังคงอยู่ใน RAM สำหรับ MySQL 5.5
ฉันเพิ่งตอบคำถามที่คล้ายกันในเรื่องนี้: วิธีการเปลี่ยนทาสก่อนหน้า MySQL เป็นหลักและลบข้อมูลสถานะทาส?
การแก้ไขไฟล์ my.cnf เพียงอย่างเดียวไม่เพียงพอที่จะปิดใช้งานการจำลองแบบ ความจริงแล้วมันไม่ใช่วิธีที่แนะนำในการเปิดใช้งานอีกต่อไป การใส่รายการในไฟล์ my.cnf จะมีผลเฉพาะสำหรับการเริ่มต้นครั้งถัดไปและทำงานราวกับว่าคุณได้ป้อนคำสั่งลงในไคลเอนต์ mysql:
mysql> เปลี่ยน master เป็น master_host = 'blah', master_user = 'blah', master_password = 'blah' ... ;
ทั้งสองวิธีการเหล่านี้จะสร้างไฟล์ในไดเรกทอรีข้อมูลที่เรียกว่าmaster.info ตราบใดที่ไฟล์นี้มีอยู่เซิร์ฟเวอร์จะพยายามและทำซ้ำโดยใช้รายละเอียดที่นั่น "RESET SLAVE;" คำสั่งที่ระบุไว้ในคำตอบแรกจะกำจัดไฟล์master.info (เช่นเดียวกับไฟล์relay-log.info ) ตามที่กล่าวไว้ในคำตอบแรกคุณต้องแน่ใจว่าคุณไม่มีข้อมูลการกำหนดค่าในไฟล์ my.cnf ไม่เช่นนั้นในการรีสตาร์ทเซิร์ฟเวอร์ครั้งถัดไปการบันทึกจะเปิดใช้งานอีกครั้ง
หนึ่งคำตอบอยู่ที่นี่:
http://www.oops.net.br/~bac/bam/canopy_repl_setup.htm
* แก้ไขไฟล์คอนฟิกูเรชัน MySQL: /etc/my.cnf และลบ 7 บรรทัดต่อไปนี้ไปยังส่วนที่ชื่อ [mysqld]:
port=3306
log-bin
server-id=1
master-host=10.0.0.2
master-user=server_1_repl
master-password=server_1_passwd
master-port=3306*
รีสตาร์ท MySQL
ฉันเพิ่มสิ่งนี้ในคำตอบของ Harrison Fisk:
หากคุณใช้RESET SLAVE ALL;
แล้วการรีสตาร์ทก็ไม่จำเป็น
นอกจากนี้คุณอาจต้องการเปิดใช้งานกิจกรรมที่ถูกปิดการใช้งานบนทาส:
select * from information_schema.events where status = 'SLAVESIDE_DISABLED';
สำหรับแต่ละคน:
alter event <event_name> enable;