如何将MySQL迁移到MySQL 5数据库

时间:2012-07-30 08:23:48

标签: mysql database linux terminal mysqldump

我有一个由MySQL4创建的数据库(db4)和一个由MySQL5创建的数据库(db5)。 db4包含几个带有charset latin1和几个索引的表,但没有使用MySQL“PASSWORD”函数加密的数据。 db5是空的。

我想将所有表和索引从db4迁移到db5(实际上是在同一台服务器上)。理想情况下,这应该在没有任何信息丢失的情况下在短时间内完成。

从MySQL4下载完整数据库并将数据随后插入db5需要哪些终端命令?我是否必须重新创建索引?

4 个答案:

答案 0 :(得分:2)

您可以使用mysqldump在mysql4中转储数据库。而不是使用mysql命令将其上传到MySQL5。

mysqldump dbname > file
mysql dbname < file

将自动重新创建所有索引。

答案 1 :(得分:2)

如果其他人需要将数据库从Mysql4移动到Mysql5,这就是我所做的。

  1. 从mysql4服务器转储数据库

    mysqldump -uuser -ppass db4 > db4.sql
    
  2. 修复了一些语法问题(source

  3.     # change comment style from -- to #
        sed -r -i -e 's/^--(.*)$/#\1/' db4.sql
        # change type declaration keyword from "TYPE" to "ENGINE"
        sed -i -e 's/) TYPE=/) ENGINE=/' db4.sql
        # adapt  timestamp field definition
        sed -i -e 's/timestamp(14) NOT NULL,$/timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,/' db4.sql
    
      在mysql5服务器上
    1. ,您现在可以导入修改后的SQL转储

      mysql -uuser -ppass db5 < db4.sql
      

答案 2 :(得分:1)

Sven,我认为在db4中备份你的数据并在db5中恢复它对你有用。

备份

mysqldump database_name > file_name.sql

<强>恢复

mysql < file_name.sql 

答案 3 :(得分:1)

也可以使用以下命令在一个步骤中完成:

 mysqldump -u dbo4 --password="..." --default-character-set="latin1" db4 | mysql -S /tmp/mysql5.sock -u dbo5 --password="..." --default-character-set="latin1" db5

不幸的是,没有正确导入带有特殊字符的标准值,似乎无法避免这种情况:How to maintain character-set of standard-values when uploading MySQL-dump