Mover MySQL/Windows a la misma versión de MySQL/Linux
Puede mysqldump todas las bases de datos de la siguiente manera:
C:\> mysqldump -uroot -p --routines --triggers --flush-privileges --all-databases > MySQLData.sql
Mover MySQLData.sql
a la caja de Linux y ejecuta la recarga
mysql -uroot -p < MySQLData.sql
Mover MySQL/Windows a una versión superior de MySQL/Linux
¡Puede mysqldump todas las bases de datos EXCEPTO EL ESQUEMA mysql! ¿Por qué?
- MySQL tiene las concesiones para el usuario en una tabla principal llamada
mysql.user
. - Para cada versión principal de MySQL,
mysql.user
tiene el siguiente número de columnas:- 43 columnas en MySQL 5.6
- 42 columnas en MySQL 5.5
- 39 columnas en MySQL 5.1
- 37 columnas en MySQL 5.0
- 31 columnas en MySQL 4.0/4.1
- He discutido
mysql.user
disposición de las columnas antes deMay 01, 2013
:¿Puedo averiguar qué versión de MySQL de los archivos de datos?Dec 24, 2012
:Copia de seguridad y restauración de la base de datos "mysql"Jun 13, 2012
:La forma más rápida de mover una base de datos de un servidor a otroFeb 08, 2012
:¿funcionará la replicación del servidor 5.5.20 al 5.0.XX?
Aquí hay un Windows Batch Script para mysqldump todas las bases de datos excepto el esquema mysql y luego volcar el esquema mysql en 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%
Una vez que haya creado mysqldump y el archivo de subvenciones, simplemente cópielos en el servidor Linux y ejecútelos localmente. Ejecute mysqldump primero. Luego, cargue las subvenciones.