2008-12-10 36 views
6

在MySQL中,使用基於語句的複製我假定每個SQL語句都在從服務器上執行,與在主服務器上的執行方式完全相同。然而,當我運行該語句:'LOAD DATA INFILE'如何在基於語句的複製中工作?

LOAD DATA INFILE 'filename' INTO SomeTable; 

我不知道如果文件需要對從存在於它的主人一樣。有人可以指點我這個功能的文檔嗎?

回答

5

看起來您在主服務器上加載LOAD DATA INFILE的文件會自動通過複製日誌從主服務器傳輸到從服務器。從站在基於語句的複製隊列中到達LOAD DATA INFILE時加載這些文件。

我從一對夫婦的語句在文檔中推斷出這一點:

16.1:Backing Up Replication Slaves

如果你的MySQL服務器是一個從屬 複製服務器,則無論 的備份方法,你選擇, 還應備份master.info 和relay-log.info文件,當您返回 上的奴隸的數據。這些文件是 總是需要恢復複製 後恢復從站的數據。如果您的從服務器需要複製 LOAD DATA INFILE命令,則您應該使用--slave-load-tmpdir選項備份任何SQL_LOAD- *文件,這些文件可能位於 指定的目錄中。

16.1.2.3:Replication Slave Options and Variables

當從SQL線程複製一個 LOAD DATA INFILE語句時,它 提取從 加載的中繼日誌到臨時文件, 然後將該文件將這些加載到表中。 如果加載在主文件上的文件爲 巨大,則從屬文件 上的臨時文件也很大。因此,可能是 建議使用此選項告訴 從服務器將臨時文件放入位於某個文件系統 中的 目錄中,該目錄有很多可用空間。在 的情況下,中繼日誌很大,因爲 以及,所以你可能還想使用 --relay-log選項將 中繼日誌放入該文件系統。