在设置复制的MySQL数据库时,我查看了有关tmpdir的手册,并对tmpdir和slave_load_tmpdir这两个variables有些困惑。 我知道奴隶需要一些数据在重新启动之间持续,但我不知道是否只有设置slave_load_tmpdir是足够的,或者如果两者都应设置为一个永久目录:
关于tmpdir , 手册说 :
用于临时文件和临时表的目录。 […]
如果MySQL服务器充当复制从服务器,则不应将tmpdir设置为指向基于内存的文件系统上的目录,或者指向服务器主机重新启动时清除的目录。 复制从服务器需要一些临时文件以保证机器重新启动,以便复制临时表或LOAD DATA INFILE操作。 如果服务器重新启动时临时文件目录中的文件丢失,则复制将失败。 您可以使用slave_load_tmpdirvariables设置从站的临时目录。 在这种情况下,从站不会使用通用tmpdir值,您可以将tmpdir设置为非永久位置。
关于slave_load_tmpdir , 手册说 :
从机创build临时文件的目录名称。 该选项默认等于tmpdir系统variables的值。 当从属SQL线程复制LOAD DATA INFILE语句时,它将从中继日志中加载的文件提取到临时文件中,然后将这些文件加载到表中。 […]
由此选项指定的目录应位于基于磁盘的文件系统(而不是基于内存的文件系统)中,因为用于复制LOAD DATA INFILE的临时文件必须在机器重新启动后存在。 该目录也不应该是在系统启动过程中被操作系统清除的目录。
所以从机需要一个持久的临时目录来“复制临时表或LOAD DATA INFILE操作”,但是slave_load_tmpdir没有提到临时表,只有LOAD DATA INFILE(也反映在它的名字中)。 另一方面,手册指出,如果slave_load_tmpdir是持久的,则tmpdir可以处于非永久位置。 有没有人有任何见解?