MySQL/Windows verplaatsen naar dezelfde versie van MySQL/Linux
U kunt alle databases als volgt mysqldumpen:
C:\> mysqldump -uroot -p --routines --triggers --flush-privileges --all-databases > MySQLData.sql
Verplaats MySQLData.sql
naar Linux box en voer het herladen uit
mysql -uroot -p < MySQLData.sql
MySQL/Windows verplaatsen naar een hogere versie van MySQL/Linux
U kunt alle databases mysqldumpen BEHALVE HET mysql-SCHEMA!!! Waarom?
- MySQL heeft de rechten voor de gebruiker in een hoofdtabel genaamd
mysql.user
. - Voor elke belangrijke release van MySQL,
mysql.user
heeft het volgende aantal kolommen:- 43 kolommen in MySQL 5.6
- 42 kolommen in MySQL 5.5
- 39 kolommen in MySQL 5.1
- 37 kolommen in MySQL 5.0
- 31 kolommen in MySQL 4.0/4.1
- Ik heb
mysql.user
besproken 's kolomrangschikking voorMay 01, 2013
:Kan ik uit de gegevensbestanden achterhalen welke versie van MySQL?Dec 24, 2012
:Back-up en herstel "mysql"-databaseJun 13, 2012
:Snelste manier om een database van de ene server naar de andere te verplaatsenFeb 08, 2012
:werkt replicatie van 5.5.20 naar 5.0.XX-server?
Hier is een Windows Batch-script om alle databases behalve het mysql-schema te mysqldumpen en vervolgens het mysql-schema in pure SQL te dumpen:
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%
Zodra u de mysqldump en het Grants-bestand hebt gemaakt, kopieert u ze eenvoudig naar de Linux-server en voert u ze lokaal uit. Voer eerst de mysqldump uit. Laad vervolgens de subsidies.