如何强制master在slave赶上全部更新之前阻止更新?
答:执行以下步骤:
1. 在master上,执行以下语句:
mysql> FLUSH TABLES WITH READ LOCK;(阻止所有的更新)
mysql> SHOW MASTER STATUS;
记录下结果中的日志文件名以及偏移位置,它们是同步的坐标值。
2. 在slave上,提交以下语句,MASTER_POS_WAIT() 函数的参数的值就是前面取得的同步坐标值:
mysql> SELECT MASTER_POS_WAIT('log_name', log_offset);
SELECT 语句会阻止更新,直到slave同步到了上述日志文件及位置。在这个时候,slave就和master保持同步了,并且这个语句就会返回。
3. 在master上,执行以下语句允许master重新处理更新操作:
mysql> UNLOCK TABLES;
答:执行以下步骤:
1. 在master上,执行以下语句:
mysql> FLUSH TABLES WITH READ LOCK;(阻止所有的更新)
mysql> SHOW MASTER STATUS;
记录下结果中的日志文件名以及偏移位置,它们是同步的坐标值。
2. 在slave上,提交以下语句,MASTER_POS_WAIT() 函数的参数的值就是前面取得的同步坐标值:
mysql> SELECT MASTER_POS_WAIT('log_name', log_offset);
SELECT 语句会阻止更新,直到slave同步到了上述日志文件及位置。在这个时候,slave就和master保持同步了,并且这个语句就会返回。
3. 在master上,执行以下语句允许master重新处理更新操作:
mysql> UNLOCK TABLES;