Durante a configuração de um banco de dados MySQL replicado, examinei o manual sobre o tmpdir e fiquei um pouco confuso sobre as duas variáveis tmpdir
e slave_load_tmpdir
. Eu sei que o escravo precisa de alguns dados para ser persistente entre as reinicializações, mas não tenho certeza se definir slave_load_tmpdir
é suficiente ou se ambos devem ser definidos para um diretório persistente:
Sobre tmpdir
, o manual diz :
The directory used for temporary files and temporary tables. [...]
If the MySQL server is acting as a replication slave, you should not set tmpdir to point to a directory on a memory-based file system or to a directory that is cleared when the server host restarts. A replication slave needs some of its temporary files to survive a machine restart so that it can replicate temporary tables or LOAD DATA INFILE operations. If files in the temporary file directory are lost when the server restarts, replication fails. You can set the slave's temporary directory using the slave_load_tmpdir variable. In that case, the slave will not use the general tmpdir value and you can set tmpdir to a nonpermanent location.
Sobre o slave_load_tmpdir
, o manual diz :
The name of the directory where the slave creates temporary files. This option is by default equal to the value of the tmpdir system variable. 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. [...]
The directory specified by this option should be located in a disk-based file system (not a memory-based file system) because the temporary files used to replicate LOAD DATA INFILE must survive machine restarts. The directory also should not be one that is cleared by the operating system during the system startup process.
Portanto, um escravo precisa de um diretório temporário persistente para "replicar tabelas temporárias ou operações LOAD DATA INFILE", mas slave_load_tmpdir
não diz nada sobre tabelas temporárias, apenas LOAD DATA INFILE (também refletido em seu nome). Por outro lado, o manual informa que, se slave_load_tmpdir
for persistente, tmpdir
poderá estar em um local não permanente. Alguém tem alguma idéia sobre isso?
Tags mysql linux mysql-replication