如何“LOAD DATA INFILE” 在基于语句的复制中工作?

发布于 2024-07-09 10:03:41 字数 210 浏览 4 评论 0原文

在 MySQL 中,使用基于语句的复制,我假设每个 SQL 语句在从属服务器上的执行方式与在主服务器上的执行方式完全相同。 但是,当我运行该语句时:

LOAD DATA INFILE 'filename' INTO SomeTable;

我不确定该文件是否需要像在主服务器上那样存在于从服务器上。 有人可以指点我这个功能的文档吗?

In MySQL, using statement based replication I assume that every SQL statement gets executed on the slave exactly the same way as on the master. However, when I run the statement:

LOAD DATA INFILE 'filename' INTO SomeTable;

I'm not sure if the file needs to exist on the slave the same way at it does on the master. Can someone point me to the documentation of this feature?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

偏爱自由 2024-07-16 10:03:41

看来您在主服务器上使用 LOAD DATA INFILE 加载的文件会通过复制日志自动从主服务器传输到副本服务器。 当副本到达基于语句的复制队列中的 LOAD DATA INFILE 时,副本会加载这些文件。

我从文档中的几个语句推断出这一点:

16.1: 备份复制从站

如果你的MySQL服务器是从属服务器
复制服务器,然后不管
您选择的备份方法,您
还应该备份master.info
和您返回时的relay-log.info 文件
增加你奴隶的数据。 这些文件是
总是需要恢复复制
恢复从属数据后。 如果
你的奴隶需要复制
LOAD DATA INFILE 命令,你应该
还备份任何 SQL_LOAD-* 文件
可能存在于指定的目录中
通过 --slave-load-tmpdir 选项。

16.1.2.3:复制从选项和变量

当从属 SQL 线程复制一个
LOAD DATA INFILE 语句,它
提取要加载的文件
将中继日志写入临时文件,
然后将它们加载到表中。
如果master上加载的文件是
巨大,从站上的临时文件
也很大。 因此,可能是
建议使用此选项来告诉
从站将临时文件放入
位于某个文件系统中的目录
有很多可用空间。 在
在这种情况下,中继日志很大
好吧,所以你可能还想使用
--relay-log 选项放置
该文件系统中的中继日志。

It appears that the file you load with LOAD DATA INFILE on the master are automatically transferred via the replication log from the master to the replica. The replica loads these files when it gets to the LOAD DATA INFILE in the statement-based replication queue.

I'm inferring this from a couple of statements in the docs:

16.1: Backing Up Replication Slaves

If your MySQL server is a slave
replication server, then regardless of
the backup method you choose, you
should also back up the master.info
and relay-log.info files when you back
up your slave's data. These files are
always needed to resume replication
after you restore the slave's data. If
your slave is subject to replicating
LOAD DATA INFILE commands, you should
also back up any SQL_LOAD-* files that
may exist in the directory specified
by the --slave-load-tmpdir option.

16.1.2.3: Replication Slave Options and Variables

When the slave SQL thread replicates a
LOAD DATA INFILE statement, it
extracts the file to be loaded from
the relay log into temporary files,
and then loads these into the table.
If the file loaded on the master is
huge, the temporary files on the slave
are huge, too. Therefore, it might be
advisable to use this option to tell
the slave to put temporary files in a
directory located in some filesystem
that has a lot of available space. In
that case, the relay logs are huge as
well, so you might also want to use
the --relay-log option to place the
relay logs in that filesystem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文