【问题标题】:Import two different mysql dump file with the same schema (database name) on the same server在同一台服务器上导入两个具有相同架构(数据库名称)的不同 mysql 转储文件
【发布时间】:2017-10-12 01:04:21
【问题描述】:

我和我的团队正在努力纠正我们的前任所做的事情,这些事情正在破坏我们的服务器结构。我们的前身在其上放置了许多具有相同数据库(数据库名称、表等)的服务器,并且每个服务器都包含其他服务器不可用的数据。

例子:

服务器 1 包含客户信息但没有客户交易

服务器2没有客户信息但有客户交易

等等……

现在,我们正在努力纠正这些问题。仅将两台服务器的所有数据放到一台服务器上。

目前,我们有两个不同的 mysql 转储和一个服务器。

问题:是否可以将这两个具有相同数据库名称、表等但包含不同数据的 mysql 转储导入已具有所述数据库的一台服务器上?

我已经导入了mysql转储的大的,所以我正在等待你的确认。

我的服务器是 Ubuntu Server 16.04.3(最小 gui)

带有 Mysql Workbench 的 Mysql Server 5.7

非常感谢...

更新

由于 mysql 转储仅包含 CREATE TABLE tablenameINSERT INTO 部分,而不包含 DROP TABLE IF IT EXIST tablename。我只是使用 OPTION 继续执行 mysql 转储以忽略错误(但不建议这样做,当然,这取决于您的情况),因为我唯一关心的是从两个 mysql 转储中添加丢失的数据,唯一我遇到的错误是“重复条目”,这非常适合我的情况。

谢谢。

【问题讨论】:

    标签: mysql sql database ubuntu-16.04 ubuntu-server


    【解决方案1】:

    默认情况下,转储文件只不过是一堆这样的 SQL 语句:

    --
    -- Table structure for table `foo`
    --
    
    DROP TABLE IF EXISTS `foo`;
    
    CREATE TABLE `foo` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      ...other columns...
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    --
    -- Dumping data for table `foo`
    --
    
    INSERT INTO `foo` VALUES (...lots of rows of data...);
    

    请注意,它将对每个表执行的第一件事是 DROP TABLE,然后重新创建 TABLE。

    不要这样做!

    如果您的表具有相同的名称,那么它将清除您目前已加载的数据。

    我建议您创建一个新数据库并将转储文件加载到其中。然后,即使表具有相同的名称,您也可以访问一个 MySQL 实例中的所有数据。然后,您可以使用 SQL 运行跨数据库查询,以任何您想要的方式合并数据(例如使用多表 UPDATE 语句连接每个数据库中的每个同名表)。

    我想知道您以前的数据库开发人员为什么要分离数据……这可能与 Sarbanes-Oxley 合规性有关吗?在合并数据之前,您可能需要调查一下。

    【讨论】:

    • 感谢您的回复。尽管我对此并不熟悉,但我会考虑您的建议。我所知道的原因是,它们的性能很差,例如加载时间很长。但根据我的评估,性能不佳是服务器规格和配置不佳的结果。但是我们仍然会测试这个只是为了合并所有的数据,因为数据丢失了,一些交易找不到。
    • 您好 Bill Karwin,问题,如果 mysql 转储没有 DROP TABLE IF EXISTS foo; CREATE TABLE foo 怎么办 - 我可以将该 mysql 转储执行到服务器吗?非常感谢。
    • @Markmeplease,是的,您甚至可以使用 mysqldump 选项来省略 DROP 和 CREATE 语句。我鼓励您阅读文档,然后尝试一下!
    • 感谢您的信息。我的 Mysql Dump 包含 CREATE TABLEINSERT INTO 以及一些触发器。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多