当前位置:嗨网首页>书籍在线阅读

17-主从库同步维护

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

在某些繁忙的 OLTP(在线事务处理)系统上,由于主库更新频繁,而从库由于各种原因(比如硬件性能较差)导致更新速度较慢,从而使得主从库之间的数据差距越来越大,最终对某些应用产生影响。在这种情况下,我们就需要定期地进行主从库的数据同步,使得主从数据差距能够减到最小。常用的方法是:在负载较低时暂时阻塞主数据库的更新,强制主从数据库更新同步。具体操作步骤如下。

(1)在主库上,执行以下语句(注意,会阻塞主数据库的所有更新操作):

mysql> FLUSH TABLES WITH READ LOCK;

Query OK, 0 rows affected (0.01 sec)

mysql> SHOW MASTER STATUS;

+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000039 | 974 | | |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

记录SHOW语句的输出的日志名和偏移量,这些是从库复制的目的坐标。

(2)在从库上,执行下面的语句,其中MASTER_POS_WAIT()函数的参数是前面步骤中得到的复制坐标值:

mysql> select MASTER_POS_WAIT('mysql-bin.000039','974');

+-------------------------------------------+

| MASTER_POS_WAIT('mysql-bin.000039','974') |

+-------------------------------------------+

| 0 |

+-------------------------------------------+

1 row in set (0.00 sec)

这个SELECT语句会阻塞直到从库达到指定的日志文件和偏移量后,返回0,如果返回-1,则表示超时退出。查询返回0时,则从库与主库同步。

(3)在主库上,执行下面的语句允许主库重新开始处理更新:

mysql> UNLOCK TABLES;

Query OK, 0 rows affected (0.00 sec)