LOAD DATA FROM MASTER
本命令用于对主服务器进行快照,并拷贝到从属服务器上。它可以更新MASTER_LOG_FILE和MASTER_LOG_POS的值,这样,从属服务器就可以从正确的位置开始进行复制。使用--replicate-*-do-*和--replicate-*-ignore-*选项指定的表和数据库排除规则均被兑现。--replicate-rewrite-db没有被考虑。这是因为使用本选项,用户就可以设置一个例如--replicate-rewrite-db=db1->db3和--replicate-rewrite-db=db2->db3的非唯一映射。当从主服务器载入表时,该映射会使从属服务器发生混淆。
本语句的使用受以下条件的制约:
· 只对MyISAM表起作用。如果试图载入一个非MyISAM表,会导致以下错误:
· ERROR 1189 (08S01): Net error reading from master
· 当拍摄快照时,会获得对主服务器的全局读取锁定。在载入操作期间,该锁定会阻止对主服务器的更新。
如果您正在载入大表,您可能必须对主服务器和从属服务器均增加net_read_timeout和net_write_timeout值。请参见5.3.3节,“服务器系统变量”。
注意,LOAD DATA FROM MASTER不从mysql数据库拷贝任何表。这可以更容易地让主服务器和从属服务器拥有不同的用户和权限。
LOAD DATA FROM MASTER语句要求用于连接主服务器的复制帐户,以便让主服务器拥有RELOAD和SUPER权限,并让所有您想要载入的主服务器表拥有SELECT权限。所有的用户不拥有SELECT权限的主服务器表均被LOAD DATA FROM MASTER忽略。这是因为主服务器会对用户隐藏它们:LOAD DATA FROM MASTER会调用SHOW DATABASES以了解要载入的主服务器数据库,但是SHOW DATABASES只会返回用户有部分权限的数据库。请参见13.5.4.6节,“SHOW DATABASES语法”。在从属服务器方面,发布LOAD DATA FROM MASTER的用户应拥有授权,以取消或创建被复制的数据库和表。
LOAD TABLE tbl_name FROM MASTER
用于把表的拷贝从主服务器转移到从属服务器。本语句的主要作用是调试LOAD DATA FROM MASTER。它要求用于连接主服务器的帐户拥有对主服务器的RELOAD和SUPER权限,并拥有对要载入的主服务器表的SELECT权限。在从属服务器方面,发布LOAD TABLE FROM MASTER的用户应拥有取消和创建表的权限。
用于LOAD DATA FROM MASTER的条件也适用于这里。举例说明,LOAD TABLE FROM MASTER仅对于MyISAM表起作用。对LOAD DATA FROM MASTER的暂停注意也适用。