DB2概述及基于Docker的安装

目录

DB2简介

DB2是IBM的关系数据库管理系统,运行于Linux、UNIX、Windows等。DB2有众多版本,其中Express-C是免费版本,拥有DB2的所有功能,可以在任何配置大小的物理或虚拟系统上运行。

用户管理

DB2中的用户不同于大部分数据库,DB2的用户必须是某个操作系统的用户。DB2对用户的授权便是对相应操作系统账户的授权。

基本概念

Docker中安装DB2

  1. 搜索DB2镜像
$ sudo docker search db2
  1. 拉取DB2镜像
$ sudo docker pull ibmcom/db2express-c:latest

这是IBM官方镜像,但是已经很久没有更新了~ 目前的镜像最新版对应的DB2版本是10.5.0.5。

  1. 创建DB2容器启动脚本
    start-db2.sh
#!/bin/bash image_name=ibmcom/db2express-c:10.5.0.5-3.10.0 data_dir=db2-data # 容器名 container_name=$1 # 默认用户密码 PASSWORD=$2 net_name=db2-network # 删除同名容器名 sudo docker stop ${container_name} &> /dev/null sudo docker rm -f ${container_name} &> /dev/null # 删除数据卷 # sudo docker volume rm ${data_dir} &> /dev/null # 不存在则创建数据卷 sudo docker volume create ${data_dir} &> /dev/null # 删除网络 # sudo docker network rm ${net_name} &> /dev/null # 不存在则创建网络 # sudo docker network create -d bridge ${net_name} &> /dev/null sudo docker run -it --name ${container_name} \ --network=${net_name} -p 50000:50000 \ -v ${data_dir}:/db2data -v /etc/localtime:/etc/localtime \ -e DB2INST1_PASSWORD=${PASSWORD} -e LICENSE=accept \ --restart=always ${image_name} bash

其中DB2INST1_PASSWORD=${PASSWORD}是给默认的DB2实例用户db2inst1设置密码,LICENSE=accept代表接受了使用Db2软件的许可证协议。

  1. 运行启动脚本创建DB2容器
    添加执行权限
$ chmod +x start-db2.sh

运行脚本

./start-db2.sh db2inst1 db2inst1-passwd

其中db2inst1为容器名,db2inst1-passwd为默认实例用户db2inst1的密码(请修改为自己的安全密码)

  1. 如果执行没有问题并且已经成功进入了容器的bash中说明容器启动成功
    输出如下:
$ ./start-db2.sh db2inst1 db2inst1-passwd Changing password for user db2inst1. New password: Retype new password: passwd: all authentication tokens updated successfully. [root@aac735d5eb0c /]# [root@aac735d5eb0c /]# exit

在宿主机器中查看是否已经成功启动

$ docker ps | grep -i db2inst1

DB2的配置

  1. 启动容器并进入
$ docker start db2inst1 $ docker exec -it db2inst1 bash
  1. 切换到实例用户db2inst1
[root@8d90fe726b86 /]# su - db2inst1 Last login: Thu May 21 05:57:28 CST 2015 [db2inst1@8d90fe726b86 ~]$

这里的db2inst1用户是DB2的默认用户,如果不存在这个用户可以到/home/目录下查看子目录名(即为对应的用户名)

[db2inst1@8d90fe726b86 home]$ ls db2inst1
  1. 启动实例
[db2inst1@8d90fe726b86 ~]$ db2start SQL1063N DB2START processing was successful.
  1. 查看运行状态
[db2inst1@8d90fe726b86 ~]$ db2pd - Database Member 0 -- Active -- Up 0 days 00:00:45 -- Date 2019-02-14-10.12.30.391332
  1. 查看数据库和补丁版本
[db2inst1@8d90fe726b86 ~]$ db2level DB21085I This instance or install (instance name, where applicable: "db2inst1") uses "64" bits and DB2 code release "SQL10055" with level identifier "0606010E". Informational tokens are "DB2 v10.5.0.5", "s141128", "IP23633", and Fix Pack "5". Product is installed at "/home/db2inst1/sqllib".
  1. 创建数据文件目录并授权
    先停止数据库
[db2inst1@8d90fe726b86 ~]$ db2stop SQL1064N DB2STOP processing was successful.

查看磁盘挂载信息

[db2inst1@8d90fe726b86 ~]$ df -h Filesystem Size Used Avail Use% Mounted on overlay 96G 19G 73G 21% / tmpfs 64M 0 64M 0% /dev tmpfs 12G 0 12G 0% /sys/fs/cgroup /dev/nvme1n1p6 96G 19G 73G 21% /db2data shm 64M 4.0K 64M 1% /dev/shm tmpfs 12G 0 12G 0% /proc/asound tmpfs 12G 0 12G 0% /proc/acpi tmpfs 64M 0 64M 0% /proc/kcore tmpfs 64M 0 64M 0% /proc/keys tmpfs 64M 0 64M 0% /proc/latency_stats tmpfs 64M 0 64M 0% /proc/timer_list tmpfs 64M 0 64M 0% /proc/sched_debug tmpfs 12G 0 12G 0% /proc/scsi tmpfs 12G 0 12G 0% /sys/firmware

/db2data就是我们挂载到容器中的Docker数据卷
回退到root用户并给/db2data设置访问权限

[db2inst1@8d90fe726b86 ~]$ exit logout [root@8d90fe726b86 /]# chmod 777 /db2data/

切换到db2inst1用户并创建数据目录

[root@8d90fe726b86 /]# su - db2inst1 Last login: Thu Feb 14 10:36:34 CST 2019 on pts/1 [db2inst1@8d90fe726b86 ~]$ cd /db2data/ [db2inst1@8d90fe726b86 db2data]$ mkdir data dbpath log [db2inst1@8d90fe726b86 db2data]$ ls data dbpath log
  1. 查看默认的dbpath(数据库路径)
[db2inst1@8d90fe726b86 ~]$ db2 get dbm cfg | grep -i dbpath Default database path (DFTDBPATH) = /home/db2inst1
  1. 启动数据库实例并创建数据库
[db2inst1@8d90fe726b86 ~]$ db2start SQL1063N DB2START processing was successful. [db2inst1@8d90fe726b86 ~]$ db2 "create db mydb on /db2data/data dbpath on /db2data/dbpath using codeset utf-8 territory cn" DB20000I The CREATE DATABASE command completed successfully.
  1. 修改日志文件路径
[db2inst1@8d90fe726b86 ~]$ db2 update db cfg for mydb using newlogpath /db2data/log DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.
  1. 激活数据库
[db2inst1@8d90fe726b86 ~]$ db2 activate db mydb DB20000I The ACTIVATE DATABASE command completed successfully.
  1. 重启容器,需要重做catalog,否则无法访问
[db2inst1@00e0dc8e8c53 ~]$ db2 catalog db mydb as mydb on /db2data/dbpath DB20000I The CATALOG DATABASE command completed successfully. DB21056W Directory changes may not be effective until the directory cache is refreshed.

本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。转载请注明: 作者staneyffer,首发于我的博客,原文链接: https://chengfy.com/post/14


DB2DB2
2019-02-13
载入评论中....