我对 mysql 的整个复制过程还不太熟悉,所以这个问题可能很容易回答。我有一个主服务器和一个从服务器。我需要设置另一个从服务器,因此显然我需要从当前从服务器进行转储,因为我无法让主服务器离线一秒钟。我如何确保在转储当前从服务器数据库时不会错过在此期间新创建的任何主数据?
谢谢大家。
答案1
我有一个有趣的方法,但你必须停止复制才能做到
对于数据库服务器 M1、S1 和 S2
步骤01)在 S2 上,安装与 S1 相同版本的 MySQL
步骤02)在 S2 上,确保 /etc/my.cnf 中的 server_id 与 S1 中的 server_id 不同
STEP03) 在 S1 上,STOP SLAVE;
STEP04) 在 S1 上,SHOW SLAVE STATUS\G
STEP05) 写下STEP 04中的以下两个值
- Master_Host(MHOST)
- 主端口 (MPORT)
- 中继主站日志文件 (RMLF)
- 执行主控日志位置 (EMLP)
步骤 6)在 S1 上,mysqldump ... --all-databases > /root/MySQLDataForSlave.sql
步骤07) 在 S1 上,START SLAVE;
步骤08) 在 S1 上,scp /root/MySQLDataForSlave.sql S2:/root/.
步骤09) 在 S2 上,mysql ... < /root/MySQLDataForSlave.sql
步骤10)在 S2 上,使用步骤05 中的值在 mysql 客户端中运行此命令
CHANGE MASTER TO
master_host='MHOST',
master_port=MPORT,
master_user='repluser',
master_password='replpass',
master_log_file='RMLF',
master_log_pos=EMLP;
步骤11)在 S2 上,START SLAVE;
步骤12)在S2上,SHOW SLAVE STATUS\G
(如果Slave_IO_Running
和Slave_SQL_Running
是肯定的,恭喜!!!)
STEP13)在S2上,SHOW SLAVE STATUS\G
反复进行直到Seconds_Behind_Master
=0;
我实际上写了一个2012 年 2 月 6 日,DBA StackExchange 中自动执行此操作的脚本。
试一试 !!!
答案2
禁用从属设备上的复制在拍摄快照之前。提示 - 先停止 IO 线程,让 SQL 线程完成,然后再停止它,然后生成快照。
答案3
使用以下指南将额外的从属引入到您现有的环境中: