LOAD DATA FROM MASTER的说明

说明1:

LOAD DATA FROM MASTER是在建立主从服务器以后,在从服务器上发起的命令,目的是将主服务器中的数据复制到从服务器,只对MyISAM表有效,该命令需要远程用户在master上有RELOAD和SUPER权限,实验发现此命令只有master.info和mysql-relay.info改变,改为了master最新的状态(也就是binlog_file和binlog_pos改为了最新的),其他数据库文件和表都没有改变。(原因:没有对于装载的表授予select权限,只有授予select权限后,才可以讲表和数据库复制过来)。


一般不使用此命令,而在同步数据时直接拷贝var中的数据文件,在拷贝之前必须停止数据库的更新(read_only置为1),对于MyISAM表,在拷贝之前,应使用flush tables命令将所有打开的表(正在读或写的表)关闭,否则myisam表会出现错误,需要使用myisamchk检查并修复一下(这一步可以使用select count(*) from table代替,因为myisam表的行数是存储在一个固定区域,如果表没有出错的话这个命令返回值很快,这样可以验证myisam表是否损坏)


说明2:
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 DATA FROM MASTER的说明)