docker运行datax实现数据同步方案 --docker commit方式测试

公司的归档库正式提出要搭建了,于是纪录搭建归档库的方案和过程。

 

需要备份的库是生产Oracle主库,由于没有归档机制,公司经过8年时间的运行,对于多个表的数据查询已经累积到十亿级别,查询效率已经很低下了,鉴于数据库的IO压力,我提出了建立归档机制,把长时间不经常使用的数据转移到独立的数据库,保证生产的高效率。

 

归档方案是吧两年前的数据转移到归档库上,每天定时执行一次。

归档库的设计有多种选择,MySQL/Oracle或者其他数据库都可以,由于公司要求,暂定先转移到一个新的Oracle库。

 

之后需要确定同步方案了,如果只是Oracle-Oracle有很多中方式,或者官方自带的同步工具也很好用,当前公司采用的MySQL-Oracle同步方案用的kafuka然后再由程序去执行。鉴于后期可能会涉及多种数据同步计划,如同步到BI数据仓库、MySQL数据库等等,经调研,选择使用阿里的datax同步方案。

 

datax介绍在git上有官方说明,淘宝用这个工具已经使用6年以上,稳定和可靠性有一定保障,详细介绍我就不说明了,对于我采用它的最大原因是:datax像是一个中间抽取工具,可以对不同类型数据库进行读操作和写操作。

这点非常重要,因为后期可能会有Oracle转移到MySQL、Elasticsearch,所以最终没有选择其他工具。

 

确定了数据同步方案后,需要确定具体执行环境,是直接拿服务器跑还是在服务器docker上跑呢,公司服务器数量不多且资源紧张,datax可能还会被作为一个通用服务,最后决定用docker跑datax。

 


总结具体步骤(之后部分详解):

1、安装Oracle新库(我是在centos7上静默安装的,不需要图形界面)

2、下载docker、datax、jdk8、maven3并且通过dockerfile构建datax及其相关运行环境(先会纪录手动构建jdk、maven,之后再执行dockerfile构建)

3、配置datax的Jason文件,试运行datax

本次纪录不描述Oracle静默安装过程,默认已经安装好了数据库。


接下来直接纪录docker安装并配置datax运行环境:

datax运行环境需要jdk、maven、python。鉴于需要多个服务,我就选择直接拉了个docker的centos7镜像作为基础镜像进行安装。

docker安装可参考之前的文章,这里不做纪录。

docker pull 一个centos镜像

docker run centos镜像

到这里我们就启动了一个centos的容器

查看

[root@service ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
f8007dc5c00e        centos7             "/bin/bash"         7 hours ago         Up 3 hours                              silly_lamarr

进入容器:

[root@service ~]# docker attach f8007dc5c00e
[root@f8007dc5c00e bin]#

由于我pull的是centos7镜像,所以容器自带python,查看:

[root@f8007dc5c00e bin]# python -v
# installing zipimport hook
import zipimport # builtin
# installed zipimport hook
# /usr/lib64/python2.7/site.pyc matches /usr/lib64/python2.7/site.py
import site # precompiled from /usr/lib64/python2.7/site.pyc
# /usr/lib64/python2.7/os.pyc matches /usr/lib64/python2.7/os.py
......

版本是2.7,够用了,不需要升级到3.5

接下来退出容器,去网上下载jdk8和maven3并上传到服务器

[root@service data]# cd pkage/
[root@service pkage]# ls
apache-maven-3.6.0-bin.tar.gz  datax.tar.gz  jdk-8u191-linux-x64.tar.gz

这是我传到宿主机的三个包

接下来通过命令拷贝到centos7容器内部

[root@service pkage]# docker cp /data/pkage f8007dc5c00e:/data

这里用cp命令就能把文件拷贝进容器或者拷贝出来,只需要后面的目录调换就行了,
前面是当前地址,后面是目标地址,容器目录需要前面带容器名称或者容器ID才能接目录

进入容器,并且查看文件、解压:

[root@service pkage]# docker attach f8007dc5c00e
[root@f8007dc5c00e bin]# cd /data/pkage/
[root@f8007dc5c00e pkage]# ls
apache-maven-3.6.0-bin.tar.gz  datax  datax.tar.gz  jdk  jdk-8u191-linux-x64.tar.gz  maven

我把解压文件夹重名了了一下,否则太长了操作麻烦,也可以不重名了。

 

这里,几个包解压后就算安装好了,但是需要添加环境变量才能让其全局生效,方法:

vi /etc/profile 

#最后添加如下配置
#jdk变量
export JAVA_HOME=/data/pkage/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

#maven变量
export MAVEN_HOME=/data/pkage/maven
export PATH=${PATH}:${MAVEN_HOME}/bin

注意环境变量的变量路径要和自己主机上存放路径一致,不是和我的一致。

source /etc/profile 使其立即生效

检查是否生效:
[root@f8007dc5c00e pkage]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)


这里我们就把环境变量和docker服务已经手动部署完了,之后会进行datax测试。

你可能感兴趣的:(MYSQL,oracle,datax)