- 步骤:
- 步骤一:停止从库复制
在从库上执行以下命令停止复制:
STOP SLAVE;
- 步骤二:记录主库状态
在主库上执行
SHOW MASTER STATUS;
命令,记录下 File
和 Position
的值,这两个值标识了主库当前的二进制日志位置。
- 步骤三:确保主库数据稳定
为了确保主库数据不再变化(如果可以暂停业务写入的话),可以使用
FLUSH TABLES WITH READ LOCK;
命令,这会锁定所有表,阻止写入操作,但仍允许读取。不过要注意,此操作会阻塞主库的写操作,所以执行时间应尽量短。
- 步骤四:获取主库二进制日志
从主库导出二进制日志文件。例如,如果主库的二进制日志文件名为
mysql-bin.000001
,位置为 1234
,可以使用 mysqlbinlog
工具导出相关日志:
mysqlbinlog --start-position=1234 /var/lib/mysql/mysql - bin.000001 > master - log.sql
- 步骤五:传输日志文件到从库
将导出的
master - log.sql
文件通过安全的方式(如 scp
等工具)传输到从库。
- 步骤六:在从库应用日志
在从库上,先确保复制停止(如果之前停止后未再次启动),然后使用
mysql
命令应用日志:
mysql < master - log.sql
- 步骤七:重新配置从库复制
在从库上根据主库记录的
File
和 Position
值重新配置复制。执行如下命令:
CHANGE MASTER TO
MASTER_HOST='主库IP',
MASTER_USER='复制用户',
MASTER_PASSWORD='复制用户密码',
MASTER_LOG_FILE='记录的File值',
MASTER_LOG_POS=记录的Position值;
- 步骤八:启动从库复制
在从库上执行
START SLAVE;
命令启动复制。
- 步骤九:检查复制状态
执行
SHOW SLAVE STATUS \G;
命令,确保 Slave_IO_Running
和 Slave_SQL_Running
都为 Yes
,且 Seconds_Behind_Master
为 0
,表明从库已与主库数据一致且复制正常运行。
- 可能用到的工具或命令:
- mysql命令:用于执行SQL语句,如停止/启动从库复制、配置从库复制等操作。
- mysqlbinlog:用于解析和导出主库的二进制日志。
- scp:用于在主库和从库之间安全传输二进制日志文件。