将 MySQL/Windows 迁移到相同版本的 MySQL/Linux
您可以按如下方式 mysqldump 所有数据库:
C:\> mysqldump -uroot -p --routines --triggers --flush-privileges --all-databases > MySQLData.sql
Move MySQLData.sql
到 Linux 盒子并运行 reload
mysql -uroot -p < MySQLData.sql
将 MySQL/Windows 迁移到更高版本的 MySQL/Linux
您可以 mysqldump 除了 mysql 架构之外的所有数据库!为什么?
- MySQL 在名为的主表中拥有用户的授权
mysql.user
.
- For each major release of MySQL,
mysql.user
has the following number of columns:
- MySQL 5.6 中有 43 列
- MySQL 5.5 中的 42 列
- MySQL 5.1 中的 39 列
- MySQL 5.0 中的 37 列
- MySQL 4.0/4.1 中的 31 列
- I have discussed
mysql.user
's column arrangement before
-
May 01, 2013
: 我可以从数据文件中找出MySQL的版本吗? https://dba.stackexchange.com/a/41350/877
-
Dec 24, 2012
: 备份和恢复“mysql”数据库 https://dba.stackexchange.com/a/31023/877
-
Jun 13, 2012
: 将数据库从一台服务器移动到另一台服务器的最快方法 https://dba.stackexchange.com/a/19220/877
-
Feb 08, 2012
: 从 5.5.20 到 5.0.XX 服务器的复制是否有效? https://dba.stackexchange.com/a/12511/877
下面是一个 Windows 批处理脚本,用于 mysqldump 除 mysql 架构之外的所有数据库,然后以纯 SQL 方式转储 mysql 架构:
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。然后,加载补助金。
试一试 !!!