如何将mySQL数据库从本地服务器移动到Heroku?

时间:2018-03-12 15:08:57

标签: php mysql heroku phpmyadmin

我用phpMyAdmin创建了一个mySQL数据库。在这个数据库中,我存储了我的朋友的名字和位置(以及id作为数据库的主键)。我编写并运行以下php脚本从数据库中检索这些数据并将它们投影到我的本地Web服务器(XAMPP)上:

<?php

$dbServername = 'localhost';
$dbUsername = 'root';
$dbPassword = '';
$dbName = 'Friends';

$conn = mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);

$sql = 'SELECT * FROM friends;';
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);


if ($resultCheck > 0) {
    while ($row = mysqli_fetch_assoc($result)) {
        echo $row['id'], ' ', $row['name'], ' ', $row['location']. '<br>';

    }
}

?>

现在我想从我需要的其他计算机访问这个数据库,以便在前端制作一些很酷的数据可视化。

一种方法是在另一台计算机上再次构建phpMyAdmin(和XAMPP)并将新用户添加到此数据库。

我选择的另一种方法是将mySQL数据库从本地服务器移动到Heroku。

如何轻松地逐步完成(使用ClearDB?)?

我可以将本地服务器同步到Heroku,这样当我在本地服务器上更改数据库时,Heroku会自动更新吗?

2 个答案:

答案 0 :(得分:2)

根据您对数据库服务器的访问权限等,您有多个选项。

猜猜你还想在heroku上使用mysql,你可以轻松地执行以下操作:

  • 使用phpmyadmin导出所需的所有数据库/表,并将它们重新导入到heroku数据库中。我不熟悉heroku但我猜他们提供某种网络数据库管理。

  • 您可以使用从一台服务器到另一台服务器的一次性/永久性mysql复制。如何进行设置有多种选择(master&lt; - &gt; master,master - &gt; slave等)。这是一个关于如何设置主人的快速教程 - &gt;奴隶复制:http://www.clusterdb.com/mysql-cluster/get-mysql-replication-up-and-running-in-5-minutes

还有更多选择,但这是我想到的。

答案 1 :(得分:1)

另一种选择是使用用于迁移数据库的工具。这将允许您在必要时将数据库和内容分发到多个实例,而无需复制不需要的数据。例如,如果您在本地数据库中有不希望复制的测试数据但是您希望复制表更改,那么这将是一个更好的解决方案。如果您计划将来分发您的应用程序,这是一个更好的解决方案。

我认为Phinx是一种比较常见的解决方案,它是指向其页面的链接。 https://phinx.org/

编辑:

这到底是什么给你的?如果您添加表或更改列名称/大小/类型等,您将添加新的迁移文件,这将使您为数据库所做的所有更改创建迁移文件。该文件可以具有更改或上下方法,这些方法可用于将数据库迁移到新版本或回滚。您可以使用插入和其他内容,以便在想要移动数据时使用它。你要做的是制作你的迁移文件。然后将这些副本复制到服务器并运行migrate。它会更改数据库架构和数据以匹配您的。它是自动的吗?不,但它给你的功能是能够从一个heroku实例迁移到另一个实例,而无需再次设置复制等。您将设置数据库名称,然后重新运行迁移,它将插入/创建您的数据库。基本上唯一的缺点是更改不会立即更改您的heroku实例,您需要上传文件更改和迁移并运行迁移。

以下是关于phinx https://book.cakephp.org/3.0/en/phinx.html

的概述

这样做的好处:

  • 只需运行脚本即可在任何地方设置数据库。
  • 可以对数据库进行版本控制,以便您可以前滚或返回新版本或旧版本
  • 不依赖于特定实例/需要的数据库
  • 无需复制服务器的所有设置或维护。