Skip to content

DB2 Linux 安装指南

概述

DB2是IBM开发的关系型数据库管理系统,广泛应用于企业级应用。在Linux操作系统上安装DB2需要遵循一定的步骤和最佳实践,以确保数据库系统能够稳定运行。

本文将详细介绍DB2在Linux系统上的安装过程,包括安装前准备、安装方法、配置步骤、验证测试和故障排除,帮助DBA和系统管理员成功部署DB2数据库。

安装前准备

1. 硬件要求

组件最低要求建议配置
CPU4核,2.0 GHz8核,2.5 GHz或更高
内存8 GB16 GB或更高
存储50 GB可用空间100 GB可用空间,使用SSD
网络1 Gbps以太网10 Gbps以太网

2. 软件要求

操作系统版本

DB2 11.5支持以下Linux发行版:

  • Red Hat Enterprise Linux (RHEL):7.4-8.x
  • SUSE Linux Enterprise Server (SLES):12 SP3-15.x
  • Ubuntu:16.04 LTS, 18.04 LTS, 20.04 LTS
  • Oracle Linux:7.4-8.x(兼容RHEL)

依赖包

安装DB2前需要确保系统已安装以下依赖包:

对于RHEL/CentOS/Oracle Linux:

bash
yum install -y libaio-devel libstdc++-devel gcc gcc-c++ make libXext libXrender libXtst libXi

对于SLES:

bash
zypper install -y libaio-devel libstdc++6-devel gcc gcc-c++ make libXext6 libXrender1 libXtst6 libXi6

对于Ubuntu:

bash
apt-get update
apt-get install -y libaio1 libstdc++6 gcc g++ make libxext6 libxrender1 libxtst6 libxi6

3. 操作系统配置

关闭防火墙(或配置规则)

bash
# 对于RHEL/CentOS 7及以上
systemctl stop firewalld
systemctl disable firewalld

# 对于Ubuntu
systemctl stop ufw
systemctl disable ufw

关闭SELinux

bash
# 临时关闭
setenforce 0

# 永久关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

配置内核参数

bash
# 编辑/etc/sysctl.conf文件
cat >> /etc/sysctl.conf << EOF
# DB2 内核参数设置
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
EOF

# 应用内核参数
sysctl -p

配置资源限制

bash
# 编辑/etc/security/limits.conf文件
cat >> /etc/security/limits.conf << EOF
# DB2 用户资源限制
db2inst1 soft nofile 65536
db2inst1 hard nofile 65536
db2inst1 soft nproc 16384
db2inst1 hard nproc 16384
db2fenc1 soft nofile 65536
db2fenc1 hard nofile 65536
db2fenc1 soft nproc 16384
db2fenc1 hard nproc 16384
EOF

4. 用户和组创建

创建DB2所需的用户和组:

bash
# 创建DB2用户组
groupadd -g 901 db2iadm1  # DB2实例管理员组
groupadd -g 902 db2fadm1  # DB2 fenced用户组
groupadd -g 903 dasadm1   # DB2管理服务器组

# 创建DB2用户
useradd -u 1001 -g db2iadm1 -m -d /home/db2inst1 db2inst1  # DB2实例用户
useradd -u 1002 -g db2fadm1 -m -d /home/db2fenc1 db2fenc1  # DB2 fenced用户
useradd -u 1003 -g dasadm1 -m -d /home/dasusr1 dasusr1    # DB2管理服务器用户

# 设置用户密码
passwd db2inst1
passwd db2fenc1
passwd dasusr1

5. 下载DB2安装包

从IBM官方网站下载DB2安装包:

  1. 访问IBM DB2下载页面:https://www.ibm.com/support/pages/db2-115-mod-6-fix-pack-available
  2. 选择适合的DB2版本和Linux发行版
  3. 下载安装包(通常为.tar.gz格式)
  4. 将安装包上传到Linux服务器

DB2安装方法

DB2提供了三种安装方法:图形化安装、命令行安装和静默安装。

1. 图形化安装

图形化安装适合初学者,提供直观的安装向导。

前提条件

  • 服务器已安装图形界面
  • 已配置X11转发(如果通过SSH连接)

安装步骤

bash
# 解压安装包
tar -xzvf v11.5_linuxx64_server_t.tar.gz -C /opt/ibm/db2/installation

# 进入安装目录
cd /opt/ibm/db2/installation/server

# 启动图形化安装向导
./db2setup

按照安装向导提示完成以下步骤:

  1. 选择安装类型:典型安装或自定义安装
  2. 接受许可协议
  3. 选择安装目录:建议使用默认目录 /opt/ibm/db2/V11.5
  4. 选择产品:DB2 Server Edition
  5. 配置用户:指定DB2实例用户和fenced用户
  6. 配置TCP/IP:设置DB2服务端口(默认50000)
  7. 选择语言包:选择需要的语言
  8. 确认安装摘要:检查安装配置
  9. 开始安装:等待安装完成
  10. 完成安装:选择是否创建示例数据库

2. 命令行安装

命令行安装适合没有图形界面的服务器。

安装步骤

bash
# 解压安装包
tar -xzvf v11.5_linuxx64_server_t.tar.gz -C /opt/ibm/db2/installation

# 进入安装目录
cd /opt/ibm/db2/installation/server

# 运行命令行安装程序
./db2setup -t /tmp/db2setup.trc -l /tmp/db2setup.log -r db2server.rsp

# 安装完成后,创建响应文件用于实例创建
cat > db2instance.rsp << EOF
DBI_INSTDEF_INSTNAME=db2inst1
DBI_INSTDEF_ENCPASS=password
DBI_INSTDEF_USERNAME=db2inst1
DBI_INSTDEF_GROUPNAME=db2iadm1
DBI_INSTDEF_FENCEDUSERNAME=db2fenc1
DBI_INSTDEF_FENCEDGROUPNAME=db2fadm1
DBI_INSTDEF_PORT=50000
EOF

# 创建DB2实例
/opt/ibm/db2/V11.5/instance/db2icrt -r db2instance.rsp

3. 静默安装

静默安装适合自动化部署,通过响应文件指定所有安装选项。

步骤1:创建响应文件

bash
# 创建安装响应文件
cat > db2server.rsp << EOF
PROD = DB2_SERVER_EDITION
FILE = /opt/ibm/db2/V11.5
LIC_AGREEMENT = ACCEPT
INSTALL_TYPE = CUSTOM
COMP = SERVER
COMP = CONNECT
COMP = ICU
COMP = ACS
COMP = COMMON
COMP = DB2_DATA_SOURCE_SUPPORT
COMP = JDK
COMP = SQL_PROCEDURES
COMP = BASE_CLIENT
COMP = RUNTIME_CLIENT
COMP = JDBCCLIENT
COMP = ODBC_CLIENT
COMP = CLI_DRIVER
COMP = .NET_DATA_PROVIDER
COMP = OLEDB_PROVIDER
COMP = XML_EXTENDER
COMP = DEVELOPMENT_SUPPORT
COMP = DB2_UPDATE_SERVICE
COMP = IBM_ANT
COMP = GSKIT
INSTANCE_NAME = db2inst1
FENCED_USER_NAME = db2fenc1
ADMIN_GROUP_NAME = dasadm1
DB2_GROUP_NAME = db2iadm1
FENCED_GROUP_NAME = db2fadm1
SVCENAME = db2c_db2inst1
PORT_NUMBER = 50000
REMOTE_INSTANCE_CREATION = YES
REMOTE_DB2FCM_COMM = YES
DB2FCM_COMM_PORT = 60000
EOF

步骤2:执行静默安装

bash
# 解压安装包
tar -xzvf v11.5_linuxx64_server_t.tar.gz -C /opt/ibm/db2/installation

# 进入安装目录
cd /opt/ibm/db2/installation/server

# 执行静默安装
./db2setup -r db2server.rsp -l /tmp/db2silent.log -t /tmp/db2silent.trc

安装后配置

1. 实例配置

启动DB2实例

bash
# 切换到DB2实例用户
su - db2inst1

# 启动实例
db2start

# 检查实例状态
db2 get instance

配置实例参数

bash
# 切换到DB2实例用户
su - db2inst1

# 配置实例参数
db2 update database manager configuration using SVCENAME db2c_db2inst1
db2 update database manager configuration using MAXCONNRETRY 5
db2 update database manager configuration using CONNRETRYDELAY 3
db2 update database manager configuration using AUTO_RESTART YES

# 应用参数更改
db2stop
db2start

2. 数据库创建

创建示例数据库用于测试:

bash
# 切换到DB2实例用户
su - db2inst1

# 创建数据库
db2 create database sample automatic storage yes on /db2/data dbpath on /db2/dbpath
db2 connect to sample

db2 update db cfg for sample using LOGARCHMETH1 DISK:/db2/logs

db2stop force
db2start

db2 connect to sample

3. 服务配置

将DB2服务添加到系统服务,实现开机自启:

bash
# 切换到root用户
su -

# 创建系统服务文件
cat > /etc/systemd/system/db2inst1.service << EOF
[Unit]
Description=DB2 Instance db2inst1
After=syslog.target network.target

[Service]
Type=forking
User=db2inst1
Group=db2iadm1
ExecStart=/home/db2inst1/sqllib/adm/db2start
ExecStop=/home/db2inst1/sqllib/adm/db2stop force
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

# 重新加载系统服务
systemctl daemon-reload

# 启用DB2服务开机自启
systemctl enable db2inst1.service

# 启动DB2服务
systemctl start db2inst1.service

# 检查服务状态
systemctl status db2inst1.service

4. 环境变量配置

配置DB2环境变量,方便使用DB2命令:

bash
# 编辑DB2实例用户的.bashrc文件
echo 'export DB2_HOME=/home/db2inst1/sqllib' >> /home/db2inst1/.bashrc
echo 'export PATH=$DB2_HOME/bin:$PATH' >> /home/db2inst1/.bashrc
echo 'export LD_LIBRARY_PATH=$DB2_HOME/lib64:$LD_LIBRARY_PATH' >> /home/db2inst1/.bashrc
echo 'export DB2INSTANCE=db2inst1' >> /home/db2inst1/.bashrc
echo 'alias db2start="$DB2_HOME/adm/db2start"' >> /home/db2inst1/.bashrc
echo 'alias db2stop="$DB2_HOME/adm/db2stop"' >> /home/db2inst1/.bashrc

# 使环境变量生效
source /home/db2inst1/.bashrc

验证安装

1. 实例状态检查

bash
# 切换到DB2实例用户
su - db2inst1

# 检查实例状态
db2 get instance

# 检查数据库管理器配置
db2 get database manager configuration

# 检查实例目录
db2 list db directory

2. 数据库连接测试

bash
# 切换到DB2实例用户
su - db2inst1

# 连接到sample数据库
db2 connect to sample

# 执行简单查询
db2 select * from sysibm.systables fetch first 5 rows only

# 断开连接
db2 connect reset

3. 基本功能验证

bash
# 切换到DB2实例用户
su - db2inst1

# 创建测试表
db2 connect to sample
db2 create table test_table (id int, name varchar(50))

# 插入数据
db2 insert into test_table values (1, 'test')
db2 insert into test_table values (2, 'db2')

# 查询数据
db2 select * from test_table

# 更新数据
db2 update test_table set name = 'db2 linux' where id = 2

# 删除数据
db2 delete from test_table where id = 1

# 再次查询数据
db2 select * from test_table

# 断开连接
db2 connect reset

4. 客户端连接测试

从远程客户端测试连接:

bash
# 使用DB2客户端连接
db2cli validate -database sample:host:50000 -user db2inst1 -passwd password

# 使用JDBC连接(Java示例)
# jdbc:db2://host:50000/sample:user=db2inst1;password=password;

故障排除

1. 常见安装问题

问题1:安装前检查失败

症状db2prereqcheck 命令报错,提示缺少依赖包。

解决方案

  • 安装缺少的依赖包
  • 检查操作系统版本是否符合要求
  • 检查硬件配置是否满足最低要求

问题2:实例创建失败

症状db2icrt 命令报错,实例创建失败。

解决方案

  • 检查用户和组是否正确创建
  • 检查用户权限是否正确
  • 查看日志文件 /tmp/db2icrt.log 获取详细错误信息

问题3:无法连接到数据库

症状db2 connect 命令报错,无法连接到数据库。

解决方案

  • 检查实例是否已启动
  • 检查数据库是否已激活
  • 检查网络连接和防火墙设置
  • 检查数据库配置参数

2. 日志文件位置

DB2安装和运行过程中会生成以下日志文件:

  • 安装日志/tmp/db2setup.log
  • 实例创建日志/tmp/db2icrt.log
  • DB2诊断日志/home/db2inst1/sqllib/db2dump/db2diag.log
  • 数据库日志/db2/logs/(根据数据库配置)
  • 系统日志/var/log/messagesjournalctl

3. 故障排除工具

db2diag

用于查看和分析DB2诊断日志:

bash
# 查看最近的诊断日志
db2diag -A

# 查看特定时间范围的日志
db2diag -s 2023-05-20-00.00.00 -e 2023-05-21-00.00.00

# 查看特定错误类型的日志
db2diag -g errcode=SQL1032N

db2pd

用于实时监控DB2实例和数据库状态:

bash
# 查看实例状态
db2pd -inst

# 查看数据库状态
db2pd -db sample

# 查看表空间状态
db2pd -db sample -tablespaces

# 查看缓冲池状态
db2pd -db sample -bufferpools

db2top

实时监控DB2性能的交互式工具:

bash
# 启动db2top
db2top -d sample

# 使用帮助
db2top -h

最佳实践

1. 安装目录选择

  • 使用独立的挂载点安装DB2,便于管理和扩展
  • 数据文件、日志文件和备份文件应存储在不同的挂载点
  • 遵循IBM推荐的目录结构:
    • 安装目录:/opt/ibm/db2/V11.5
    • 数据目录:/db2/data
    • 日志目录:/db2/logs
    • 备份目录:/db2/backup
    • 实例目录:/home/db2inst1/sqllib

2. 权限设置

  • 严格控制DB2文件和目录的权限
  • DB2实例用户只应有必要的权限
  • 定期审查和更新权限设置
  • 启用审计功能,监控数据库访问

3. 安全配置

  • 启用DB2安全特性,如SSL/TLS加密
  • 配置强密码策略
  • 定期更新DB2补丁
  • 限制数据库访问IP地址
  • 启用数据库审计

4. 备份策略

  • 制定合理的备份策略,包括全量备份、增量备份和日志备份
  • 定期测试备份恢复
  • 将备份文件存储在安全的位置
  • 考虑使用异地备份

5. 监控和维护

  • 配置DB2监控,定期检查性能指标
  • 定期运行RUNSTATS更新统计信息
  • 定期重组和重建索引
  • 监控存储空间使用情况
  • 制定定期维护计划

版本差异

DB2 10.x 安装

  • 支持的Linux发行版较少
  • 安装过程相对简单
  • 配置选项较少
  • 不支持一些新特性,如列式存储

DB2 11.1 安装

  • 增强了对Linux发行版的支持
  • 引入了更多安装选项
  • 支持列式存储
  • 增强了安全特性

DB2 11.5 安装

  • 支持更多Linux发行版,包括Ubuntu 20.04
  • 引入了AI驱动的性能优化
  • 增强了云集成
  • 支持更多容器化部署选项
  • 改进了安装向导和静默安装

常见问题(FAQ)

Q1: 如何选择DB2版本?

A1: 选择DB2版本时应考虑以下因素:

  • 业务需求和应用兼容性
  • 操作系统版本支持
  • 硬件资源限制
  • 预算和 licensing 成本
  • 所需功能和特性
  • 技术支持期限

Q2: 如何升级DB2版本?

A2: 升级DB2版本的步骤:

  1. 备份数据库和配置
  2. 阅读升级指南和已知问题
  3. 安装新版本DB2(可以与旧版本共存)
  4. 迁移DB2实例和数据库
  5. 验证升级结果
  6. 测试应用程序兼容性

Q3: 如何卸载DB2?

A3: 卸载DB2的步骤:

bash
# 切换到root用户
su -

# 停止所有DB2实例
/home/db2inst1/sqllib/adm/db2stop force

# 卸载DB2产品
/opt/ibm/db2/V11.5/install/db2_deinstall -a

# 删除DB2用户和组
userdel -r db2inst1
userdel -r db2fenc1
userdel -r dasusr1
groupdel db2iadm1
groupdel db2fadm1
groupdel dasadm1

# 删除DB2目录
rm -rf /opt/ibm/db2/V11.5
rm -rf /db2

Q4: 如何更改DB2服务端口?

A4: 更改DB2服务端口的步骤:

bash
# 切换到DB2实例用户
su - db2inst1

# 更新数据库管理器配置
db2 update database manager configuration using SVCENAME 50001

# 更新/etc/services文件
su -
vi /etc/services
# 找到db2c_db2inst1行,修改端口号

# 重启实例
su - db2inst1
db2stop
db2start

Q5: 如何添加新的DB2实例?

A5: 添加新DB2实例的步骤:

bash
# 创建新用户和组
groupadd db2iadm2
useradd -g db2iadm2 -m db2inst2
passwd db2inst2

# 创建实例
su -
/opt/ibm/db2/V11.5/instance/db2icrt -u db2fenc1 db2inst2

# 配置实例
su - db2inst2
db2 update database manager configuration using SVCENAME 50001
db2start

Q6: 如何配置DB2远程访问?

A6: 配置DB2远程访问的步骤:

bash
# 切换到DB2实例用户
su - db2inst1

# 更新数据库管理器配置,启用TCP/IP
db2 update database manager configuration using TCPIP YES
db2 update database manager configuration using SVCENAME db2c_db2inst1

# 重启实例
db2stop
db2start

# 配置防火墙,开放DB2端口
firewall-cmd --permanent --add-port=50000/tcp
firewall-cmd --reload

Q7: 如何查看DB2版本信息?

A7: 查看DB2版本信息的方法:

bash
# 切换到DB2实例用户
su - db2inst1

# 查看DB2版本
db2level

# 查看实例版本
db2 get instance

# 查看数据库版本
db2 connect to sample
db2 select service_level from sysibmadm.env_inst_info

Q8: 如何配置DB2自动备份?

A8: 配置DB2自动备份的步骤:

bash
# 切换到DB2实例用户
su - db2inst1

# 创建备份脚本
cat > /home/db2inst1/scripts/db2_backup.sh << EOF
#!/bin/bash
# DB2自动备份脚本

date=$(date +%Y%m%d_%H%M%S)
db2 connect to sample
db2 backup database sample to /db2/backup

db2 connect reset
EOF

# 给脚本添加执行权限
chmod +x /home/db2inst1/scripts/db2_backup.sh

# 添加到crontab,每天凌晨2点执行
crontab -e
# 添加以下行
0 2 * * * /home/db2inst1/scripts/db2_backup.sh > /home/db2inst1/scripts/db2_backup.log 2>&1

总结

DB2在Linux上的安装是一个系统工程,需要仔细规划和执行。本文详细介绍了DB2安装的各个方面,包括安装前准备、安装方法、配置步骤、验证测试和故障排除。

在实际安装过程中,建议遵循以下原则:

  1. 充分准备:在安装前检查硬件、软件和网络配置
  2. 选择合适的安装方法:根据环境选择图形化、命令行或静默安装
  3. 严格遵循安装向导:按照提示完成每一步安装
  4. 配置最佳实践:遵循IBM推荐的配置和最佳实践
  5. 验证安装结果:确保实例和数据库能够正常运行
  6. 制定维护计划:定期备份、监控和维护DB2系统

通过遵循本文介绍的方法和最佳实践,DBA和系统管理员可以成功部署和管理DB2数据库,确保其在Linux系统上稳定运行,为业务应用提供可靠的数据库服务。