迁移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一窍不通,据此操作,风险自负