将Win Server 2003切换到Win Server 2008 – MySQL会好吗?

我正尝试将运行MySQL 4.1的旧Windows Server 2003 32位计算机迁移到运行MySQL 5.1的新Windows Server 2008 R2 64位计算机,并刚到数据库部分。 我有一个沉重的数据库坐在旧的服务器上,在我尝试下载表格然后重新上传到新的站点之前,我想确保我不必先进行转换。 旧的服务器没有运行最新的MySQL或PHP,所以使用PhpMyAdmin是没有问题的,我没有任何改变这样的东西,我只是有一个垃圾,基本,错误的WebFusion控制面板。

任何帮助感激地赞赏。

你应该mysqldump整个MySQL数据库到一个文本文件,因为mysqldump是数据的逻辑表示。 这可以避免在主要版本之间发生跳转的任何问题。 有一个主要的关注点:mysql模式,

步骤01)MySQL

C:\> mkdir C:\>MySQLData C:\> mysql -h... -u... -p... --all-databases > C:\MySQLData\MySQLDataDump.sql 

步骤02)在Win2008上安装MySQL 5.5

步骤04)将MySQL 4.1的my.ini复制到Win2008

步骤05)重新加载C:\ MySQLData \ MySQLDataDump.sql到MySQL 5.5

 mysql < C:\MySQLData\MySQLDataDump.sql 

步骤06)运行mysql_upgrade.exe

这是事情可能会发生一些小问题的地方,因为这是mysql模式在MySQL 4.1.22中的样子

 mysql> use mysql Database changed mysql> show tables; +---------------------------+ | Tables_in_mysql | +---------------------------+ | columns_priv | | db | | func | | help_category | | help_keyword | | help_relation | | help_topic | | host | | tables_priv | | time_zone | | time_zone_leap_second | | time_zone_name | | time_zone_transition | | time_zone_transition_type | | user | +---------------------------+ 15 rows in set (0.00 sec) mysql> desc mysql.user; +-----------------------+-----------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------------+-----------------------------------+------+-----+---------+-------+ | Host | varchar(60) | | PRI | | | | User | varchar(16) | | PRI | | | | Password | varchar(41) | | | | | | Select_priv | enum('N','Y') | | | N | | | Insert_priv | enum('N','Y') | | | N | | | Update_priv | enum('N','Y') | | | N | | | Delete_priv | enum('N','Y') | | | N | | | Create_priv | enum('N','Y') | | | N | | | Drop_priv | enum('N','Y') | | | N | | | Reload_priv | enum('N','Y') | | | N | | | Shutdown_priv | enum('N','Y') | | | N | | | Process_priv | enum('N','Y') | | | N | | | File_priv | enum('N','Y') | | | N | | | Grant_priv | enum('N','Y') | | | N | | | References_priv | enum('N','Y') | | | N | | | Index_priv | enum('N','Y') | | | N | | | Alter_priv | enum('N','Y') | | | N | | | Show_db_priv | enum('N','Y') | | | N | | | Super_priv | enum('N','Y') | | | N | | | Create_tmp_table_priv | enum('N','Y') | | | N | | | Lock_tables_priv | enum('N','Y') | | | N | | | Execute_priv | enum('N','Y') | | | N | | | Repl_slave_priv | enum('N','Y') | | | N | | | Repl_client_priv | enum('N','Y') | | | N | | | ssl_type | enum('','ANY','X509','SPECIFIED') | | | | | | ssl_cipher | blob | | | | | | x509_issuer | blob | | | | | | x509_subject | blob | | | | | | max_questions | int(11) unsigned | | | 0 | | | max_updates | int(11) unsigned | | | 0 | | | max_connections | int(11) unsigned | | | 0 | | +-----------------------+-----------------------------------+------+-----+---------+-------+ 31 rows in set (0.00 sec) mysql> 

这里是MySQL模式在MySQL 5.5中的样子

 mysql> use mysql Database changed mysql> show tables; +---------------------------+ | Tables_in_mysql | +---------------------------+ | audit_user_host | | columns_priv | | db | | event | | func | | general_log | | help_category | | help_keyword | | help_relation | | help_topic | | host | | ndb_binlog_index | | plugin | | proc | | procs_priv | | proxies_priv | | servers | | slow_log | | slow_queries | | tables_priv | | time_zone | | time_zone_leap_second | | time_zone_name | | time_zone_transition | | time_zone_transition_type | | user | +---------------------------+ 26 rows in set (0.07 sec) mysql> desc mysql.user; +------------------------+-----------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------------+-----------------------------------+------+-----+---------+-------+ | Host | char(60) | NO | PRI | | | | User | char(16) | NO | PRI | | | | Password | char(41) | NO | | | | | Select_priv | enum('N','Y') | NO | | N | | | Insert_priv | enum('N','Y') | NO | | N | | | Update_priv | enum('N','Y') | NO | | N | | | Delete_priv | enum('N','Y') | NO | | N | | | Create_priv | enum('N','Y') | NO | | N | | | Drop_priv | enum('N','Y') | NO | | N | | | Reload_priv | enum('N','Y') | NO | | N | | | Shutdown_priv | enum('N','Y') | NO | | N | | | Process_priv | enum('N','Y') | NO | | N | | | File_priv | enum('N','Y') | NO | | N | | | Grant_priv | enum('N','Y') | NO | | N | | | References_priv | enum('N','Y') | NO | | N | | | Index_priv | enum('N','Y') | NO | | N | | | Alter_priv | enum('N','Y') | NO | | N | | | Show_db_priv | enum('N','Y') | NO | | N | | | Super_priv | enum('N','Y') | NO | | N | | | Create_tmp_table_priv | enum('N','Y') | NO | | N | | | Lock_tables_priv | enum('N','Y') | NO | | N | | | Execute_priv | enum('N','Y') | NO | | N | | | Repl_slave_priv | enum('N','Y') | NO | | N | | | Repl_client_priv | enum('N','Y') | NO | | N | | | Create_view_priv | enum('N','Y') | NO | | N | | | Show_view_priv | enum('N','Y') | NO | | N | | | Create_routine_priv | enum('N','Y') | NO | | N | | | Alter_routine_priv | enum('N','Y') | NO | | N | | | Create_user_priv | enum('N','Y') | NO | | N | | | Event_priv | enum('N','Y') | NO | | N | | | Trigger_priv | enum('N','Y') | NO | | N | | | Create_tablespace_priv | enum('N','Y') | NO | | N | | | ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | | | ssl_cipher | blob | NO | | NULL | | | x509_issuer | blob | NO | | NULL | | | x509_subject | blob | NO | | NULL | | | max_questions | int(11) unsigned | NO | | 0 | | | max_updates | int(11) unsigned | NO | | 0 | | | max_connections | int(11) unsigned | NO | | 0 | | | max_user_connections | int(11) unsigned | NO | | 0 | | | plugin | char(60) | NO | | | | | authentication_string | text | NO | | NULL | | +------------------------+-----------------------------------+------+-----+---------+-------+ 42 rows in set (0.03 sec) mysql> 

主要区别,呃? 这就是为什么无论您是复制数据文件夹还是新加载mysqldump, mysql_upgrade.exe运行mysql_upgrade.exe以添加适当的列和表。

作为替代scheme,您可以将每个数据库分别从MySQL 4.1中分别mysqldump,并将每个mysqldump导入到MySQL 5.5中。 那么,GRANTS呢? 尝试将MySQl 4.1中的GRANTS转换为纯SQL。

 MYSQL_USERNAME=... MYSQL_PASSWORD=... MYSQL_CONN="-u${MYSQL_USERNAME} -p${MYSQL_PASSWORD}" mysql ${MYSQL_CONN} --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql ${MYSQL_CONN} --skip-column-names -A > C:\TMP\MySQLUserGrants.sql 

这将产生SQL命令来将用户授权复制到任何版本的MySQL 4.1+

在MySQL 5.5中导入这个文件,你应该从那里开始。

如果你打算复制MySQL的原始数据文件,我build议不要这样做。

但是,如果您使用mysqldump或mysqlhotcopy在MySQL 4中转储表并将它们导入到MySQL 5中,则一切都应该正常工作。 mysqldump创build一个SQL脚本,其中包含在新的MySQL实例中重build相同数据库所需的所有SQL命令(例如CREATE TABLE和INSERT)。