Di chuyển MySQL / Windows sang cùng một phiên bản MySQL / Linux
Bạn có thể mysqldump tất cả các cơ sở dữ liệu như sau:
C:\> mysqldump -uroot -p --routines --triggers --flush-privileges --all-databases > MySQLData.sql
Di chuyển MySQLData.sql
sang hộp Linux và chạy tải lại
mysql -uroot -p < MySQLData.sql
Chuyển MySQL / Windows lên phiên bản MySQL / Linux cao hơn
Bạn có thể mysqldump tất cả các cơ sở dữ liệu NGOẠI TRỪ SCHEMA mysql !!! Tại sao?
- MySQL có các khoản cấp cho người dùng trong bảng chính có tên là
mysql.user
. - Đối với mỗi bản phát hành chính của MySQL,
mysql.user
có số cột sau:- 43 cột trong MySQL 5.6
- 42 cột trong MySQL 5.5
- 39 cột trong MySQL 5.1
- 37 cột trong MySQL 5.0
- 31 cột trong MySQL 4.0 / 4.1
- Tôi đã thảo luận về
mysql.user
sắp xếp cột của trước-
May 01, 2013
: Tôi có thể tìm hiểu phiên bản MySQL nào từ các tệp dữ liệu không? -
Dec 24, 2012
: Sao lưu và khôi phục cơ sở dữ liệu "mysql" -
Jun 13, 2012
: Cách nhanh nhất để di chuyển cơ sở dữ liệu từ máy chủ này sang máy chủ khác -
Feb 08, 2012
: máy chủ sao chép từ 5.5.20 lên 5.0.XX có hoạt động không?
-
Đây là một Tập lệnh hàng loạt của Windows để mysqldump tất cả cơ sở dữ liệu ngoại trừ lược đồ mysql và sau đó kết xuất lược đồ mysql trong SQL thuần túy:
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%
Sau khi bạn tạo mysqldump và Tệp Grants, chỉ cần sao chép chúng vào Máy chủ Linux để thực thi chúng cục bộ. Thực hiện mysqldump trước. Sau đó, tải các khoản tài trợ.