Преместване на MySQL/Windows към същата версия на MySQL/Linux
Можете да mysqldump всички бази данни, както следва:
C:\> mysqldump -uroot -p --routines --triggers --flush-privileges --all-databases > MySQLData.sql
Преместете MySQLData.sql
в кутията на Linux и стартирайте презареждане
mysql -uroot -p < MySQLData.sql
Преместване на MySQL/Windows към по-висока версия на MySQL/Linux
Можете да mysqldump всички бази данни ОСВЕН СХЕМАТА mysql !!! Защо?
- MySQL има разрешения за потребителя в основна таблица, наречена
mysql.user
. - За всяка основна версия на MySQL,
mysql.user
има следния брой колони:- 43 колони в MySQL 5.6
- 42 колони в MySQL 5.5
- 39 колони в MySQL 5.1
- 37 колони в MySQL 5.0
- 31 колони в MySQL 4.0/4.1
- Обсъдих
mysql.user
подреждане на колоните предиMay 01, 2013
:Мога ли да разбера коя версия на MySQL от файловете с данни?Dec 24, 2012
:Архивиране и възстановяване на база данни "mysql"Jun 13, 2012
:Най-бързият начин за преместване на база данни от един сървър на другFeb 08, 2012
:ще работи ли репликацията от 5.5.20 към 5.0.XX сървър?
Ето един пакетен скрипт на Windows за изхвърляне на mysqldump всички бази данни с изключение на mysql схемата и след това изхвърляне на mysql схемата в чист SQL:
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%
След като създадете mysqldump и файла Grants, просто ги копирайте на Linux сървъра, изпълнете ги локално. Първо изпълнете mysqldump. След това заредете безвъзмездните средства.