Movendo o MySQL/Windows para a mesma versão do MySQL/Linux
Você pode mysqldump todos os bancos de dados da seguinte forma:
C:\> mysqldump -uroot -p --routines --triggers --flush-privileges --all-databases > MySQLData.sql
Mover
MySQLData.sql
para a caixa Linux e execute o reload mysql -uroot -p < MySQLData.sql
Movendo o MySQL/Windows para uma versão superior do MySQL/Linux
Você pode mysqldump todos os bancos de dados EXCETO O ESQUEMA mysql !!! Por quê?
- O MySQL tem as concessões para o usuário em uma tabela principal chamada
mysql.user
. - Para cada versão principal do MySQL,
mysql.user
tem o seguinte número de colunas:- 43 colunas no MySQL 5.6
- 42 colunas no MySQL 5.5
- 39 colunas no MySQL 5.1
- 37 colunas no MySQL 5.0
- 31 colunas no MySQL 4.0/4.1
- Eu discuti
mysql.user
's arranjo de colunas antes deMay 01, 2013
:Posso descobrir qual versão do MySQL a partir dos arquivos de dados?Dec 24, 2012
:Fazer backup e restaurar o banco de dados "mysql"Jun 13, 2012
:A maneira mais rápida de mover um banco de dados de um servidor para outroFeb 08, 2012
:a replicação do servidor 5.5.20 para 5.0.XX funcionará?
Aqui está um Windows Batch Script para mysqldump todos os bancos de dados, exceto o esquema mysql e, em seguida, despeje o esquema mysql em SQL puro:
rem
rem Startup Settings
rem
set MYSQL_CONN=-uroot -prootpassword
set MYSQLDUMP_OUTPUT=C:\LocalDump.sql
set MYSQL_USERGRANTS=C:\LocalGrants.sql
set MYSQL_TEMPGRANTS=C:\TempGrants.sql
rem
rem Get MySQL User Data
rem
set MYSQLDUMP_OPTIONS=--routines --triggers --databases
set SQLSTMT=SELECT CONCAT('mysqldump %MYSQL_CONN% %MYSQLDUMP_OPTIONS% ',DBList)
set SQLSTMT=%SQLSTMT% FROM (SELECT GROUP_CONCAT(schema_name SEPARATOR ' ') DBList
set SQLSTMT=%SQLSTMT% FROM information_schema.schemata WHERE schema_name NOT IN
set SQLSTMT=%SQLSTMT% ('information_schema','mysql','performance_schema')) A
echo echo off > C:\RunLocalDump.bat
mysql %MYSQL_CONN% -ANe"%SQLSTMT%" >> C:\RunLocalDump.bat
C:\RunLocalDump.bat > %MYSQLDUMP_OUTPUT%
rem
rem Get MySQL User Grants
rem
set SQLSTMT=SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';')
set SQLSTMT=%SQLSTMT% FROM mysql.user WHERE LENGTH(user)
echo %SQLSTMT%
mysql %MYSQL_CONN% -ANe"%SQLSTMT%" > %MYSQL_TEMPGRANTS%
mysql %MYSQL_CONN% -AN < %MYSQL_TEMPGRANTS% > %MYSQL_USERGRANTS%
del %MYSQL_TEMPGRANTS%
Depois de criar o mysqldump e o arquivo Grants, basta copiá-los para o servidor Linux e executá-los localmente. Execute o mysqldump primeiro. Em seguida, carregue as concessões.