หากคุณมีสถานการณ์ต่อไปนี้
- ข้อมูลทั้งหมดของคุณคือ innodb
- คุณเปิดใช้งานการบันทึกแบบไบนารีบน RDS
คุณสามารถสร้างผู้ใช้ใน RDS เช่นนี้
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'leopd'@'%' IDENTIFIED BY 'repl_password';
หาก Amazon ไม่อนุญาตให้ใช้ชื่อโฮสต์คุณจะต้องมีที่อยู่ IP สาธารณะที่เฉพาะเจาะจง
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'leopd'@'xxx.xx.xx.xxx';
ถัดไป mysqldump ข้อมูลจาก RDS เป็นธุรกรรมเดียว
mysqldump -u... -p... --single-transaction --master-data=1 --all-databases --routines --triggers > /root/MySQLData.sql
รันคำสั่ง CHANGE MASTER TO โดยใช้ leopd@'xxx.xx.xx.xxxx 'ในฐานะผู้ใช้ (xxx.xx.xx.xxxx เป็นที่อยู่ IP ของ RDS)
CHANGE MASTER TO
master_host = 'xxx.xx.xx.xxxx',
master_port = 3306,
master_user = 'leopd',
master_passwowrd = 'repl_pass'
master_log_file='slsnbj',
master_log_pos=1;
โหลดข้อมูลลงในเซิร์ฟเวอร์ใหม่ ไม่ต้องกังวลกับ master_log_file = 'slsnbj' และ master_log_pos = 1 บรรทัดที่ 22 ของดัมพ์จะมีไฟล์บันทึกและตำแหน่งที่ถูกต้อง
เรียกใช้ START SLAVE บนเซิร์ฟเวอร์ใหม่
มันควรเริ่มทำงาน คุณอาจต้องกังวลเกี่ยวกับข้อควรพิจารณาของไฟร์วอลล์
ให้มันลอง !!!
อัพเดท 2012-03-23 17:11 EDT
คุณเหลือโอกาสเดียว ดูว่าคุณสามารถตั้งค่าสิทธิพิเศษล่าสุดนี้ได้ไหม
UPDATE mysql.user SET Repl_slave_priv = 'Y' WHERE user='root' AND host='%';
FLUSH PRIVILEGES;
บางทีนี่อาจถูกบล็อคสำหรับผู้ใช้ที่มี% ในคอลัมน์โฮสต์ของ mysql.user
คุณอาจต้องสร้างผู้ใช้คนอื่นด้วย IP สาธารณะที่ยากอย่างที่ฉันแนะนำไว้ก่อนหน้านี้
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'leopd'@'xxx.xx.xx.xxx';
เป็นไปได้ว่าทาสจำลองใน RDS จะต้องเป็น RDS ด้วยเช่นกัน