Se você estiver pensando em migrar para outro servidor de banco de dados com a mesma versão exata do MySQL, talvez queira rsync
the datadir
do servidor antigo para o novo servidor.
Isso funcionará independentemente do layout do arquivo InnoDB ou até mesmo da presença de tabelas MyISAM.
- instala a mesma versão do mysql no ServerB que o ServerA possui
- No ServerA, execute
RESET MASTER;
para apagar todos os logs binários antes do processo rsycn. Se o log binário não estiver ativado, você pode pular esta etapa. - No ServerA, execute
SET GLOBAL innodb_max_dirty_pages_pct = 0;
do mysql e cerca de 10 minutos (Isso limpa páginas sujas do Buffer Pool do InnoDB. Também ajuda a executar um desligamento do mysql mais rápido) Se seu banco de dados for todo MyISAM, você pode pular esta etapa. / li> - rsync / var / lib / mysql do ServerA para / var / lib / mysql no ServerB
- Repita a Etapa 3 até que um rsync demore menos de 1 minuto
-
service mysql stop
no ServerA - Execute mais um rsync
- scp ServerA: /etc/my.cnf para ServerB: / etc /.
-
service mysql start
no servidorB -
service mysql start
no ServerA (opcional)
Essencialmente, aqui está o que tal script gostaria que fosse
mysql -u... -p... -e"RESET MASTER;"
mysql -u... -p... -e"SET GLOBAL innodb_max_dirty_pages_pct = 0;"
RSYNCSTOTRY=10
cd /var/lib/mysql
X=0
while [ ${X} -lt ${RSYNCSTOTRY} ]
do
X='echo ${X}+1|bc'
rsync -r * targetserver:/var/lib/mysql/.
sleep 60
done
service mysql stop
rsync -r * targetserver:/var/lib/mysql/.
service mysql start
Um colega do DBA StackExchange disse que eu deveria ficar longe de FLUSH TABLES WITH READ LOCK;
baseado em algo no mysqlperformanceblog.com
Eu li e aprendi que SELECTs contra tabelas InnoDB no meio de um FLUSH TABLES WITH READ LOCK;
ainda podem permitir que as gravações ocorram de alguma forma. Como apontado no comentário de Arlukin , o LVM trabalharia com FLUSH TABLES WITH READ LOCK
no InnoDB (1 para o seu comentário ).
Para todos os usuários não-LVM, você está OK com um banco de dados all-MyISAM para uso com FLUSH TABLES WITH READ LOCK;
. Para o InnoDB, fique com --single-tranaction
usage no mysqldumps, por favor.