zoukankan      html  css  js  c++  java
  • Docker打DB2 9.7镜像采坑相关

    概况:以centos:7.2.1511镜像为基础镜像,使用docker commit方式进行构建
     
    步骤:
    1. 运行centos7.2.1511镜像(以特权模式运行,后续内核参数修改必需参数)
        docker run -it --privileged centos:7.2.1511 /bin/bash
            2.拷贝db2安装包进镜像中
        docker cp v9.7_linuxx64_server.tar.gz 容器id:/usr/local
            3.镜像内操作
    • 解压安装包
        tar -xzvf v9.7_linuxx64_server.tar.gz
    • 进入解压后目录server
        cd server
    • 检查安装环境
        ./db2prereqcheck
    • 环境缺失信息
        * WARNING:
        *    The 32 bit library file libstdc++.so.6 is not found on the system.
        *    32-bit applications may be affected.  
        * ERROR:
        *    The required library file libaio.so.1 is not found on the system.
        *    Check the following web site for the up-to-date system requirements
        *    of IBM DB2 9.7
    • 解决方法
        * yum install -y libstdc++
        * yum install -y libstdc++.so.6
        * yum install -y libaio
    • 安装db2
        ./db2_install
     
        要选择另一个目录用于安装吗?[yes/no]
        --输入no默认安装opt下,选择yes自己输入安装目录
        指定下列其中一个关键字以安装 DB2 产品
        --输入ESE
        ESE
        正在初始化 DB2 安装。……
        • 出错点,共48步,安装到第41步或第36步Hangup
              Task #41 start
              Description: Starting DB2 Fault Monitor
              Estimated time 10 second(s)
              Hangup
        • PS:若47步左右出现一个小error可以忽略,不影响
        • 解决方法(修改内核参数):
          • 带--privileged运行容器,然后修改内核参数
            docker run -t -i --net=host -v /db2disk:/db2disk --privileged centos_db2ese_v1.1 /bin/bash
            vi /etc/sysctl.conf
            kernel.shmmni = 65536
            kernel.shmmax = 274877906944
            kernel.shmall = 134217728
            kernel.sem = 250 1024000 32 65536
            kernel.msgmni = 262144
            kernel.msgmax = 65536
            kernel.msgmnb = 65536
            vm.dirty_background_ratio = 5
            vm.dirty_ratio= 10
            vm.overcommit_memory= 0
            vm.swappiness= 0 #如果是redhat,建议设置为5,
            否则很有可能在内存不足时OOM killer可能会杀掉DB2进程
            执行sysctl -p使参数在线生效
            执行ipcs -l查看操作系统内核参数设置
             
            ------ Messages Limits --------
            max queues system wide = 668
            max size of message (bytes) = 8192
            default max size of queue (bytes) = 16384
             
            ------ Shared Memory Limits --------
            max number of segments = 4096
            max seg size (kbytes) = 18014398509465599
            max total shared memory (kbytes) = 18014398442373116
            min seg size (bytes) = 1
             
            ------ Semaphore Limits --------
            max number of arrays = 128
            max semaphores per array = 250
            max semaphores system wide = 32000
            max ops per semop call = 32
            semaphore max value = 32767
             
      • 查看注册信息,若出现试用期则安装成功,若出现
            /opt/ibm/db2/V9.7/adm/db2licm -l
        •   安装 license
          • db2licm -l命令可以查看到db2的license信息。可以找一个永久的license添加到db2数据库即可,把db2ese_c.lic放到一目录下: 
                /opt/ibm/db2/V9.7/license/db2ese_c.lic,在/opt/ibm/db2/V9.7/adm/目录下执行:./db2licm -a /opt/ibm/db2/V9.7/license/db2ese_c.lic
             
    • 创建实例用户
        groupadd -g 901 db2iadm1
        groupadd -g 902 db2fadm1
        groupadd -g 903 dasadm1
        useradd -g db2iadm1 -u 801 -d /home/db2inst1 -m  db2inst1
        useradd -g db2fadm1 -u 802 -d /home/db2fenc1 -m  db2fenc1
        useradd -g dasadm1 -u 803 -d /home/dasadm1 -m  dasusr1
    • 为db2inst1创建密码
        passwd db2inst1
    • 创建实例
        [root@server]#cd /opt/ibm/db2/V9.7/instance
        [root@instance]#./dascrt -u dasusr1 (创建DB2管理服务器)
        [root@instance]#./db2icrt -u db2inst1 db2inst1 (创建DB2实例)
     
    • 启动数据库实例
        [root@localhost instance]# su - db2inst1
        [db2inst1@localhost ~]$ db2start
     
    • 创建一个用于连接的数据库
        [db2inst1@localhost ~]$ db2 create database KHYX_YS using codeset GBK territory CN
     
    • 设置端口
        查看db2是否开启tcp服务
        [root@localhost db2inst1]# db2set –all
        如果没有看到如下内容:DB2COMM=TCPIP,则需要对db2进行设置
        [root@localhost db2inst1]# db2set db2COMM=TCPIP
        查看是否配置db2 Tcp服务名称:
        [root@localhost db2inst1]# db2 get dbm cfg | grep -i SVCENAME
        如果SVCENAME 没有对应的值,则需要设置DB2的TCP服务名称或端口
        [root@localhost db2inst1]# db2 update dbm cfg using svcename db2AppName(自定义名称或端口号)
        查看/etc/services中是否已经将db2的tcp服务添加到系统服务中(端口号不需要这部)
        [root@localhost db2inst1]# cat /etc/services | grep db2
        如果没有找到任何内容或者没有db2AppName相关内容,则需要在services文件中加入db2AppName   50000/tcp,其中50000为 db2 tcp服务的端口号。使用vi     /etc/services命令进入编辑器添加内容,然后ESC键 :wq保存退出编辑器。
        重启db2服务,查看db2 tcp服务监听的端口是否已经启用
        [db2inst1@localhost ~]$ db2 force application all(强制停止数据库)
        [db2inst1@localhost ~]$ db2start
        [db2inst1@localhost ~]$ netstat -na | grep 50000
     
     
  • 相关阅读:
    如何进行shell脚本正确性测试
    linux 重命名文件和文件夹
    linux 下 `dirname $0`
    五句话搞定JavaScript作用域
    Javascrpt
    css
    HTML
    python之sqlalchemy
    Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
    Python之路【第八篇】:堡垒机实例以及数据库操作
  • 原文地址:https://www.cnblogs.com/brucekun/p/9129235.html
Copyright © 2011-2022 走看看