天天看点

Scp+postgresql问题总结

Scp+postgresql问题总结

本地集群的数据同步到阿里云服务器上,再将数据上传到阿里云数据库中,数据库操作要求的是创建临时表,上传数据,查看是否存在索引,删除索引,创建索引,删除原始表,修改临时表表名

1:对于scp过程测试多次出现的问题是数据只上传了85M,就停止了,然后开始操作数据库等操作。

当时网速是9.多/MB,scp默认的数据上传超时时间为30秒,算下来传输85M也是理所当然的了

后来考虑如何改变timeout时间呢,

去官网查看,给的说明是scp默认的超时时间为30秒,如果想要永不超时,需要设置为 set timeout -1

最后对50G 的数据进行两台服务器之间的传输测试,费时一小时40分钟左右吧,成功完成,这是最大的一个坑。

2:jdbc拉结数据库时候出现的问题

  1. 最大的问题从一开始就有,脚本加代码写好给运维进行搭建环境测试,出现的第一个问题就是用一个只能查询数据的账户去操作数据库了,权限不足问题
  2. 上传数据到postgresql中,本地数据文件为.csv文件,刚开始使用copy tablename from stdin 进行jdbc操作的,问题出现在,字段确实,数据文件每一行数据postgresql当做了一个字段下的数据,因为我们没有设定限定符修改为"COPY  " + tableName + " from '" + localFilePath + "' WITH (FORMAT CSV,DELIMITER E'\\x01',HEADER FALSE)";指定文件就是CSV,指定明确限定符,没有头数据,然后进行测试,没有问题了
  3. 索引考虑问题:当前库中是否有该表的存在,第二库中该表是否已经存在了索引,因为我们要将每天数据都上传到postgresql中,业务需求前后索引不能变,,只能对表查出来全部索引,和我们规定的索引进行比较,如果有则删除,没有就跳出这一环节,执行下一步
  4. PostgreSQL数据库不支持当前主机ip进行jdbc访问,查找好久,问题是在与D:\Program Files\PostgreSQL\9.4\data下面的pg_hba.conf文件需要我们手动添加host all all ip/34 MD5,重启服务就可以了,这个问题真的是很烦
  5. 对每一步可能发生的一次能够全部进行捕获处理。
  6. 每日新增的数据50G,使用hive导出来的csv文件,测试中发现文件末尾两行中居然有warn日志,导致测试过程一致失败,源头在于hive -f/-e导出数据过程的问题,最终能够解决方案是添加过滤器:hive -e "select * from heitong.product_mult_ht_v5 limit 1000" |grep -v "WARN" |sed 's/\t/\x01/g'>/home/test/product_mult_ht_v5_2019-04-17.csv,这样csv文件中就不在有warn日志信息了 。

因为在开发中,我们没有时间手动去完成这些东西,需要我们提供一种便捷途径,让机器自己定时的去完成这些操作。所以上面要求让开发个适合开发人员的工具。然而中的是苦难重重,测试小量数据问题几乎没发现,但是我们每天一个文件夹下数据为50G,大数据量测试什么样的问题都出来了,只能排查,表占用阿里云服务器50G,数据50G,索引50G,最终提示PG内存不足,到此为止bug不在属于我的问题了 。