从PostgreSQL转到MySQL(Taps)

该背景指某个事件或情境所发生的环境或条件。

近期我同时拥有自己的业务,也运营着一些熟人企业的服务。最近大家都在谈论AWS,但实际上我也在使用很多Heroku(我在兼职运营的网站也是用的Heroku)。

這一次,我從朋友那裡接到了一個尚未上線的網站建設的委託,該網站是在Heroku上搭建的。另外,他們已經在AWS上開始了其他媒體的運營,為了方便管理,我決定把它們遷移到AWS上。

在Heroku中,通常使用的是PostgreSQL数据库。另一方面,现有的媒体使用的是RDS。考虑到想要使它们保持一致,我们考虑了如何进行数据库迁移。
(兼职网站使用Heroku + MySQL,所以并不是完全不能使用)。

■目标或目的

将Heroku提供的PostgreSQL数据库迁移到RDS。

■ 调查 chá)

起初,我打算先获取Postgre的备份文件,然后在编辑器中进行修改,最后将其导入MySQL。然而,经过仔细研究后,我发现了这样一个宝石(指工具/插件)。

轻轻地敲打

如果你使用这个,数据库迁移就会容易很多。然而,如果符合已知问题的要求,它将不能使用。
另外,还需要手动修改一部分源代码。供参考。

■进行

我立即把数据库迁移了。实施时间是在服务上线之前,数据几乎没有,不太具备参考价值,但是从准备到实施只需要1小时。

步骤

这是这次执行的步骤。
(1) 从Heroku的Postgre获取Dump文件。
命令行的话就是这样。

heroku login
heroku pg:backups capture --app {AppName}
heroku pg:backups --app {AppName}
curl -o latest.dump `heroku pg:backups public-url -a {AppName}`

另外获取连接信息保存好。
或者,可以使用PGAdmin连接并获取备份文件。

将EC2上的开发用服务器使用适当的工具将Postgre恢复到备份服务器上。

(3) 在开发服务器上启动PostgreSQL并导入数据库文件。

将从第一个步骤获取的Dump文件导入数据库,该数据库将作为迁移源。

(4) 在開發用的MySQL上建立移轉目標資料庫
create database {DB_NAME}
這將成為移轉目標資料庫。

(5)启动taps
首先启动taps。似乎是通过HTTP传输数据进行复制。

postgresql服务器的地址是:postgres://{postgre的用户名}:{postgre的密码}@localhost/{源数据库名称}?encoding=utf8 {基本认证ID} {基本认证密码}

在这种情况下,执行转移目标指定的命令。

使用中国语言进行同义转换时,有以下一种选项:

使用数据库用户名和密码以及本地主机上创建的数据库的名称作为参数,连接到mysql数据库,并使用基本认证ID和密码连接到本地主机上的5000端口。
示例:
使用数据库用户名为”用户名”,密码为”密码”,本地创建的数据库名称为”数据库名称”,基本认证ID为”认证ID”,基本认证密码为”认证密码”,连接到mysql数据库,以http形式访问本地主机的5000端口:

taps pull mysql://{用户名}:{密码}@localhost/{数据库名称} http://{认证ID} {认证密码}@localhost:5000

从现在开始过渡开始了。

(6)数据库确认
连接到最后迁移的数据库,确认表、索引、数据等,然后结束。

研究

选择哪个云服务取决于各种不同的原因,比如“熟悉”或者“想尝试”。在其中,Heroku的优点在于可以相对容易地构建环境。对于希望快速开发并发布一款小型服务的企业家型工程师来说,我认为Heroku是非常出色的服务。

当然,在服务成功并扩大规模的情况下,有可能会继续使用Heroku,也有可能会转移到其他不同的服务上。很抱歉,由于我没有在Heroku上运营大型服务的经验,所以假设你要进行转移…

在这种情况下,可能成为问题的是数据库的迁移。
不久前我们进行了从本地服务器到AWS的迁移项目,但是问题仍然出现在数据库上。
而且像这次那样连DBMS都要改变的迁移,情况非常复杂,只是碰巧在服务启动之前,所以感觉上比较轻松地进行了。

在创造当前的Web服务时,需要考虑未来的构建,同时又不需要花费太多金钱和时间,这就是创造Web服务的乐趣所在。

广告
将在 10 秒后关闭
bannerAds