Skip to content

迁移DB2开发者版container

前一段因为项目需求,在一个CentOS 7.4上用docker方式搭建了一个免费的DB2 developer edition,版本为v11.1.2fp2a_3。过一段时间后需要在另外一个机器上再安装一个,然后就发现原来的安装包无论如何无法正常安装了,一直报docker下载相关的错误。

折腾了许久之后发现,DB2 developer 版有新版本了,原来这个版本貌似被故意废弃了,因此docker 下载镜像文件的时候一直无法下载。

最后决定,把原来机器上的container导出,把相关的volume也复制到新机器上,看能否实现迁移的目标。

在原机器上:

docker export db2server -o db2server.tar

rsync -avz $HOME/.config/ibm-db2-developerc  $target_host:$HOME/.config/

在目标机器上:

docker import db2server.tar

docker images

docker tags $image_id db2server:v11.1.2fp2a_3  ## 给新的image一个tag,随便取名, 跑docker run命令时要用

然后创建下面两个文件:

.env_list

LICENSE=accept
DB2INSTANCE=db2inst1
DB2INST1_PASSWORD=hkexadmin
BLU=false
ENABLE_ORACLE_COMPATIBILITY=false
UPDATEAVAIL=NO
TO_CREATE_SAMPLEDB=false
REPODB=false
IS_OSXFS=true
PERSISTENT_HOME=true
STORAGE_DIR=/database  ## 不确定这个是否必需
SETUPDIR=/var/db2_setup
HADR_SHARED_DIR=/hadr
LICENSE_NAME=db2dec.lic
DBPORT=50000
TSPORT=55000
HADR_ENABLED=false
ETCD_ENDPOINT=
ETCD_USERNAME=
ETCD_PASSWORD=

run_db2_container.sh

docker run \
 --name db2server --restart=always \
 --detach \
 --privileged=true \
 -p 50000:50000 -p 55000:55000 \
 --env-file .env_list \
 -v /home/centos/.config/ibm-db2-developerc/DB2/db2fs:/db2fs \
 db2server:v11.1.2fp2a_3 \
 /var/db2_setup/lib/entrypoint.sh

然后运行:

bash run_db2_container.sh

container启动以后,进入container,然后编辑下面这个文件,确保里面的名字和container的hostname一致,不然db2无法启动:

/home/db2inst1/sqllib/db2nodes.cfg

改完后重启container,然后验证db2数据库。

另外注意,每个版本都有很多变化,很多坑 (I hate IBM…)。

参考: https://store.docker.com/images/db2-developer-c-edition (需要登陆并checkout后才能看到相关文档)

风险提示: 我对db2一窍不通,据此操作,风险自负

Avatar

专业Linux/Unix/Windows系统管理员,开源技术爱好者。对操作系统底层技术,TCP/IP协议栈以及信息系统安全有强烈兴趣。电脑技术之外,则喜欢书法,古典诗词,数码摄影和背包行。

Sidebar