sql >> Base de Datos >  >> RDS >> Mysql

Mover MySql del servidor de Windows a Linux

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é?

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.

Pruébalo!!!