一次PostgreSql数据迁移,使用nodejs来完成
2014-02-08
XX开放平台不允许使用站外的服务器了,可是我们的app都在站外,数据库也在站外,全都要求迁移到其云主机上(坑爹啊)。我们在其云主机上仅有有限的资源,而且也有在运行中的数据库,要做数据迁移,正好重新清理一下数据库吧,把过期的没用的数据都转入到历史库,将原系统的数据和云主机上的数据做一次合并,打算用nodejs从站外服务读取数据,然后发送到云主机上,云主机接受数据并合并到现有系统里。站外服务器和云主机上的数据迁移都用nodejs来实现,想法确立之后,开始做一个简单设计。
为什么要选用nodejs,因为可以快速开发,快速部署,js代码写起很轻快,顺便实践一个小小的nodejs项目。
要实现的功能:
sender.js
职责:接收命令行参数,读取需要迁移的源数据,转换成message格式,发送到云主机的服务上,并在开始和结束处记录日志,程序重启可以按日志断点续传。
receiver.js (云主机只有80端口开放,用apache做一个proxy)
职责:接受源数据,保存message到数据库,并返回结果给sender。
processer.js
职责:定时轮询读取message数据,有未处理的数据,则处理数据整合逻辑(合并用户ID,合并用户数据等)

2014-02-09
由于我们的数据库都是Postgresql,服务器都是CentOS,开发环境在Win7,先安装开发环境和生产环境的nodejs环境
(1)在Linux下安装nodejs,以及node-postgresql,比较简单,参见我的另一篇博客。
(2)在Win7下安装nodejs,以及node-postgresql,稍微麻烦,需要安装Python 2.7,还需要安装node-gyp,为了能安装node-postgresql 还需要安装VC++,我安装的是VC++2010 Express,都安装好了之后,测试一下,node-postgresql能正常工作。
至此工作环境准备完毕,接下来开始进入模块的简单设计阶段。
传输过程中的数据结构Json格式:

message.type: 数据名
message.content: 数据内容
至此貌似云主机上接受数据使用mongodb比较合适,在接下来的设计和实践中再做比较和决策。
(待续)
一次PostgreSql数据迁移,使用nodejs来完成的更多相关文章
- postgresql数据迁移
postgresql从库故障准备新库 1,创建用户[root@localhost home]# userdel postgres[root@localhost home]# groupdel post ...
- PostgreSQL 数据迁移
新主机PostgreSQL需要事先建立和原主机名称相同的用户和数据库. 备份原主机数据库 pg_dump -U <UserName> -p <PortNum> <DBNa ...
- nodejs简单数据迁移demo
近期做数据迁移,采用nodejs框架,数据库为mysql.作为一枚菜鸟,在编码过程中,遇到众多奇葩问题,感谢民少给予的支持. 由于旧数据库中的数据,在之前设计中存在众多不合理的情况,因此在数据迁移中, ...
- postgresql 不同数据库不同模式下的数据迁移
编写不容易,转载请注明出处谢谢, 数据迁移 因为之前爬虫的时候,一部分数据并没有上传到服务器,在本地.本来用的就是postgresql,也没用多久,数据迁移的时候,也遇到了很多问题,第一次使pg_du ...
- 关于hdfs 和hive的数据迁移
1. 迁移hdfs,使用hadoop 命令 hadoop distcp -pugp hdfs://localhost:9000/ hdfs://localhost:9000/ 此处示例仅作说明用 2 ...
- 阿里云 RDS实例间的数据迁移
使用数据传输DTS可以实现两个RDS实例间的数据迁移.对于支持增量迁移的存储引擎,还可以使用DTS在源RDS实例不停服的情况下,将数据迁移到目标RDS实例.目前对于RDS不同存储引擎,只支持同构迁移( ...
- gitlab数据迁移到docker容器
需求:想把服务器上的gitlab迁移到docker容器里面注意:gitlab的迁移,必须保持gitlab的版本一致,此处使用的是:8.4.3,数据库版本和类型一致,此处使用的是postgresql 9 ...
- Neo4j ETL工具快速上手:简化从关系数据库到图数据库的数据迁移
注:本文系从https://medium.com/neo4j/tap-into-hidden-connections-translating-your-relational-data-to-graph ...
- 项目案例之GitLab的数据迁移
项目案例之GitLab的数据迁移 链接:https://pan.baidu.com/s/1CgaEv12cwfbs5RxcNpxdAg 提取码:fytm 复制这段内容后打开百度网盘手机App,操作更方 ...
随机推荐
- hdu 5025 Saving Tang Monk(bfs+状态压缩)
Description <Journey to the West>(also <Monkey>) is one of the Four Great Classical Nove ...
- linux 分区与挂载
流程:分区-格式化-挂载 1.添加硬盘 使用fdisk -l命令查看磁盘状态 此处可以看到两块硬盘sda和sdb,第一块硬盘sda是装好系统的.sdb硬盘是未进行分区的. 本例将这个20G的硬盘分区, ...
- HDU2948Geometry Darts(简单计算几何)
题目大意就是说两个人掷飞镖,飞镖在所给定的图形内就记一分,现在给定N个图形(圆.三角形和矩形),问每一次比赛(没人分别掷三次)谁赢. #include <map> #include < ...
- C#中的DllImport
大家在实际工作学习C#的时候,可能会问:为什么我们要为一些已经存在的功能(比如 Windows中的一些功能,C++中已经编写好的一些方法)要重新编写代码,C#有没有方法可以直接都用这些原本已经存在的功 ...
- 关于TabControl的Trigger【项目】
我有一个TabControl <TabControl x:Name="ToolSystemSection" Grid.Row="4" ContentTem ...
- 对于 Javascript 闭包理解
一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量 ...
- TMS3705A PCF7991AT 线路图
- Navicat 导入数据报错 --- 1153 - Got a packet bigger than 'max_allowed_packet' bytes
在用Navicat导入SQL文件时报错:MySql 错误 Err [Imp] 1153 - Got a packet bigger than 'max_allowed_packet' bytes 查了 ...
- jQuery对象入门级介绍
你是否曾经见过像 $(".cta").click(function(){})这样的JavaScrip代码?或许你还会思考下 $('#X') 是什么,如果看到这些你都觉得摸不着头脑 ...
- 用AJAX技术聚合RSS
有时候,你的Blog可能需要这样的功能: 在自己Blog上聚合并显示朋友Blog的最新文章,这样方便自己及时了解朋友的消息,另外,也方便访问者找到和本Blog相关的blog和文章. 这个功能你可以叫它 ...