一次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,操作更方 ...
随机推荐
- svn switch relocate用法
svn info svn info 得到 Path: . Working Copy Root Path: /Users/chunhuizhao/phpworkspace/buptef_wxpay/tr ...
- 对pymysql的简单封装
#coding=utf-8 #!/usr/bin/python import pymysql class MYSQL: """ 对pymysql的简单封装 "& ...
- UVALive 7077 - Song Jiang's rank list(模拟)
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...
- BootCamp支持软件4/5
按 Mac 机型列出的 Boot Camp 要求 不同的 Mac 电脑适用不同版本的 Windows.如果您不知道您拥有的 Mac 是什么机型,请从 Apple 菜单中选取“关于本机”. 每个表格条目 ...
- tryparse的用法,^0*[1-9]\d*$
Entry entry = new Entry(); Int32 iParam; if(Int32.TryParse(entry.ajh,out iParam)) { /*如果转换成功就输出iPara ...
- CSS Hack技术(一)
这世间坑爹的东西不少,浏览器可以算做一件,尤其的IE浏览器.关于浏览器的吐槽已经有不少了,我也就不在这添油加醋了.不过吐槽终究只是泄一时之愤,解决问题才是关键,今天我们就来讲一讲浏览器(样式)兼容的技 ...
- Chrome developer tool:本人钟爱的 console、Network 功能简谈
在最开始时,本人调试查看网页,一直用的是 firefox 的 firebug 插件,并没有使用 chrome 的 developer tool .只不过,在日常生活使用过程中,一直使用的是 chrom ...
- div图片垂直居中 如何使div中图片垂直居中
(从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期 2014-04-03) 『此方法在ie7下,如果.box的高度为800等比较大的数值时,并不能起到垂直居中的作用.』 点评:关于图片垂 ...
- PHP中关于超链接的拼接问题
<?php$link = " http://www.baidu.com";echo '<a href='.$link.'> 百度 </a>';?> ...
- SCCM客户端推送/卸载
站点配置--站点--层次结构设置--自动批准客户端 ccm客户端安装日志:服务器端的ccm.log安装ccm客户端,需要添加一个具有访问客户端$admin权限的账户,如下:站点名称-右键 客户端安装设 ...