数据抽取(有时间再细化一下)

前言:周末临时接到一个任务说要去铁岭做数据抽取
首先:用户给了一台centos7的物理机器,良好的网络环境(外网以及内网连接)
目标:将数据从->sqlserver2000数据库中抽取到新给的物理机中
准备:数据库选择的Mysql8.0、抽取工具选择的kettle(界面虽然丑了一点,但功能还是挺好用的)

分析:1、因为是新服务器,需要安装各种各样的东西,比如配置地址、安装ssh、语言包等等等等:
          2、任务目标需要准备的环境:mysql8.0(yum安装)、jdk1.8(yum安装-kettle是java开发的需要java环境)、kettle压缩包(网上下载然后手动放到服务器上)

物理机到手:
0、安装centos7系统
用这个(UltraISO)工具制作u盘启动项,u盘启动,
安装超时问题:
 再启动盘中的这个位置/isolinux/isolinux.cfg  找到 Install CentOS 7
把这个标签改成这样:inst.stage2=hd:LABEL=CentOS\x207\x20x86_64
安装系统的时候:选择 Install CentOS 7 ,然后修改 按 e 键,进入修改状态,将 hd:LABEL= 修改为U盘的标签,或者修改为当前 U盘在安装机的具体路径,一般为 /dev/hda4(这个地方可以先安装失败一次就能看到具体的名字了) 等,栗子:“hd:LABEL=/dev/hda4”,然后按 Ctrl+x (我用的F10)开始执行安装。


1、Linux中各种 command not found问题
原因是环境变量没有配置好,这里一般有两种解决方法:
第一:可以切换到root用户执行命令,第二种,就是配置用户的环境变量,其指令如下:
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
接着来查看ens33网卡的配置:vi /etc/sysconfig/network-scripts/ifcfg-ens33 注意vi后面加空格
设置ONBOOT=no
然后重启网络服务: sudo service network restart

2、设置IP地址(正式运行的时候一定要设置固定ip,否则地址一变,就谁都连不上了)
先用:ip addr 查看有几个网卡已经网卡
然后:编辑对应网卡的配置文件,vi /etc/sysconfig/network-scripts/ifcfg-ens33,将其中ONGOOT=yes 还有IPADDR=‘固定ip’等等(这个地方网上有很多就不多写了)
最后用重启网络服务:sudo service network restart(不重启一定不要用-不过我建议关机重启-因为我吃过这个亏):
重启linux:shutdown -r now
关闭linux:shutdown -h now
登出linux:logout
设置网卡开机启动:vi /etc/rc.d/rc.local     加入 ifup 网卡名

3、安装ssh(远程服务器用)
安装没什么说的yum安装就行,值得一说的是/etc/ssh/sshd_config中的配置文件,有几个地方需要更改,不让无法连接(而且新创建的子用户不用设置太多东西就能练,root用户要连的化还需要额外的设置一些东西)
ssh连接提示密码错误(明明没错误解):就是配置文件的这个值需要更改一下UsePAM=yes
重启ssh服务:service sshd restart、systemctl restart sshd.service

ssh端口打穿防火墙:firewall-cmd --zone=public --add-port=22/tcp --permanent
切换到cd  /etc/firewalld/zones  (查看防火墙中对外公开的端口的配置文件-有22接口-成功)

4、新建子用户:新建一个用户,再新建一个用户组,把用户放在这个组里(否则登录不了)
创建组:groupadd admin
创建用户并分配组:useradd –g 组名 用户名
直接创建用户不分配组:useradd admin77
设置密码:passwd 123456

#给用户777设置admin77下的所有读写权限(admin77用户名|admin用户组)
chown -R admin77:admin /home/admin77

5、安装jdk
yum安装,安装完配置也默认就好了,很顺利

6、安装mysql
yum安装,这个需要设置一下允许远程连接:
mysql -u root -p   登录到mysql中
use mysql
select host from user where user = 'root'
update user set host = '%' where user = 'root'放开远程连接限制
flush privilegs;刷新配置

数据库端口打穿防火墙:firewall-cmd --zone=public --add-port=3306/tcp --permanent(添加一个3306端口永久生效。
切换到cd  /etc/firewalld/zones  (查看防火墙中对外公开的端口的配置文件-有3306接口-成功)


7、数据抽取工具(kettle)
简介:kettle是一个很好用的数据抽取工具,可以将一个数据库中的数据查询并插入到另一个数据库中。

(1)下载一个安装包(windows/linux通用,只不过启动文件不一样:windowd->spoon.bat | linux->spoon.sh)
 (2)按照网上的教程安装各种东西(linux图形界面等等相关的工具)
     xmanager(可以接受linux中弹出的kettle图形界面,方便操作kettle)

问题总结:
(1)linux环境下部署 Kettle界面中文乱码问题:需要安装语言包
(2)kettle连不上mysql库:kettle不支持mysql8.几的驱动-换成5.几的就可以了
(3)sqlserver的时间查询问题:sqlservr不支持时间直接比较,要这么写->where DATEDIFF(hour,convert(varchar(50),sqlserver时间自段,20),'${传过来的参数}')  < 0
(4)kettle增量抽取数据:先创建一个转换,再转换里查询抽取目标的最新时间,然后set参数;然后令一个转换里get参数,然后查询,查询的时候选中替换参数;出入的时候由于sqlserver和mysql的时间格式不一样,需要将字段转换(参数也可以转换-注意参数的大小写)
(5)网上说要连sqlserver,需要打sp4补丁,这个我没遇到。

8、定时任务(创建一个sh文件,让系统定时调用)

创建.sh文件都需要付权限,否则用户无法执行:chmod u+x *.sh(.sh文件时作业的一个路径文件-可以再不启动kettle的图形界面情况下直接启动作业)

设置crond服务开机自启动
设置crond定时任务服务开机自启,在 /etc/rc.d/rc.local脚本中加入 /sbin/service crond start

定时任务
admin77用户下执行    crond -e   加入下面一行
*/30 * * * * /home/admin77/kettle/data-integration/start.sh >> /home/admin77/kettle/data-integration/start.log

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值