【无标题】基于AIX的DB2 10.1安装配置规范
前言
IBM DB2已经非常成熟,目前网上关于DB2技术文档铺天盖地,但是真正适用于生产实战的是寥寥无几。文档质量,以及分享者的水平参差不齐。往往会误导我们。但是,杭州美创DB2技术团队早已对IBM DB2的掌握全面。并在实际应用中反复测试及生产部署总结出一套美创最佳实践,将在今后陆续发布。第一步,当然安装部署。今天我们就先从BD2 for AIX的部署开始。
整个文档分为以下几部分:
操作步骤 操作内容
Step 1 主机安装AIX操作系统
Step 2 配置双网卡绑定
Step 3 操作系统基础配置
Step 4 存储盘挂载
Step 5 10.1 DB2软件安装
Step 6 DB2数据库运维规范
本步骤忽略操作系统安装、主机存储网络配置步骤,只说明在操作系统相关安装配置结束后DB2相关实施过程。
一 安装配置规范
1.1DB2安装版本要求
- 如无特殊说明,所有生产系统的DB2数据库均使用DB2 64位,版本10.1;
- 所有安装DB2数据库Server端的主机上安装企业版(Enterprise Edition)产品;
1.2 安装DB2硬件要求
- 整个DB2的硬件环境包含一台主机、存储、网络设备
- 每台主机至少需要两块物理网卡,用于双网卡绑定,每台主机至少还要有一块HBA卡,通过光纤线连接到存储设备
主机配置 | ||
---|---|---|
名称 | 数量 | 备注 |
物理网卡 | 2张 | 用于双网卡绑定 |
HBA | 1张 | content3 |
1.3 网络规划
1个公网IP地址
1.4存储划分
重要业务系统数据库,建议data和arch分别建立文件系统
文件系统建立镜像,且arch文件系统的大小为:以15日归档量的大小为最小容量(考虑到归档突增的情况)。
1.5 用户、组
用户名 | 用户组名 | 说明 |
---|---|---|
db2inst1 | db2iadm1 | 实例用户、用户组 |
db2fenc1 | db2fadm1 | 受防护用户、用户组 该用户用于运行用户定义函数(UDF, user defined function)和存储过程(stored procedure) |
dasusr1 | dasadm1 | DB2 管理服务器用户、用户组 该用户用于运行 DB2 管理服务器 |
1.6 文件系统、目录
1. 数据库软件安装目录默认为/opt/ibm/db2/V10.1
2. 数据库活动日志路径为/db2_log/db2inst1/NODE0000/SQL00001/SQLOGDIR/
3. 数据库归档日志路径目录为/db2_log/archive (不与在线日志路径相同)
以上文件系统目录不论是AIX、Linux都必须建立单独的lv设备,避免目录空间的互相影响。
1.7 数据库字符集
数据库字符集默认使用UTF-8,可视具体情况而定。
1.8 数据库命名规范
- 数据库名
对每个系统创建一个尽量能够描述该系统的四个字母的缩写,为了表述方便,下文中标 记该缩写为XXXX,数据库名使用XXXX; - 表空间名
应用表空间使用数据库管理表空间(DMS),指定每个数据文件的页为1000,开启自动
扩展。
应用表空间命名规则:
数据表空间为USER_DATA_TBS_yy,数据文件为USER_datayy,单个数据文件页大小为 1000
索引表空间为USER_INDX_TBS_yy,数据文件为USER_indxyy,单个数据文件页大小为 1000
注:USER为自定义用户名,为大写,yy两位为数字编号,从01开始,依次类推。
1.9 数据库文件存放
1. 数据库数据文件控制文件存放单独的文件系统/db2_data
2. 数据库活动日志默认在/db2_log/db2inst1/NODE0000/SQL00001/SQLOGDIR/
3. 数据库归档日志放文件系统/db2_log/archive(重要业务系统数据库,必须设归档日志,归档日志设置保留15天。)
4. 日志空间大小以及活动日志数量:
日志空间大小设置,日志空间大小由 3 个参数控制:logprimary. Logsecond 和 lofisiz。Logprimary 用来设置主日志文件个数,logsecond 参数用来设置辅助日志文件个数,logfilsiz 用来指定每个日志文件的页数,乘以 4 K 就是每个日志文件的大小(单位是 Byte)。因此,日志空间的最大限制就等于(logprimary+logsecond) logfilsiz4 K。
事务日志满不仅会丢失所做的操作,还可能需要很长的回滚时间,因此要尽量分配足够多的日志空间减少此类问题出现的几率。
根据最佳实践,我们一般将日志空间初始大小设置为数据库大小的 10%~20%之间,然后根据业务需求和监控结果进行相应调整。
对于 Logprimary 个数,一般情况下,也不要分配太多,因为它们会在数据库初始化时完全分配,如果每天的工作负载很小,可能会造成空间的浪费。可设置足够的 Logsecond 大小应对峰值的情况,比如月初或月末可能有比较大的事务处理。
注意:Logprimary+logsecond 不能超过 255,日志空间大小不能超过 256 GB。对 logprimary 和 logfilsiz 参数的更改需要断开连接,重新连接数据库才会生效,logsecond 参数的修改立即生效。logsecond 日志文件使用完后并不会立即删除,而是在所有连接断开并重新连接的时候才会删除。
1.10 备份数据库配置信息
数据库备份由新世纪提供NBU统一备份。
1.11 部署数据库监控脚本或者监控平台
二 环境描述:
2.1 硬件环境:
数据库名按应用需求视情况而定
实例名 | 数据库名 | 操作系统 |
---|---|---|
db2inst1 | XXX | XXX |
2.2 软件环境
操作系统:AIX
数据库版本:DB2 10.1.0.5
用户组和文件系统配置
软件组件 | 用户 | 主组 | 辅助组 | 软件目录 |
dh2soft | db2inst1 | db2iadm1 | db2iadm1 | /opt/ibm/db2/10.1 |
三 安装前的检查和设置
3.1 网络需求
网络IP需事先配好,事先需要双网卡绑定。
3.2 创建用户(软件会自动创建非必须)
mkgroup -A id=2000 db2iadm1
mkgroup -A id=2001 dasadm1
mkgroup -A id=2002 db2fadm1
mkuser -a id=2000 pgrp=db2iadm1 db2inst1
mkuser -a id=2001 pgrp=dasadm1 dasadm1
mkuser -a id=2002 pgrp=db2fadm1 db2fenc1
passwd db2inst1
passwd dasadm1
passwd db2fenc1
3.3 修改系统参数
为了达到比较好的性能,有一些相关参数需要调整。我们是假定 AIX 系统是 5.3 或者更高版本来给的这些建议。此外如果在你的系统中已经有了一些特定的设置(如,一个 BW 或者 SAP 配置),那么它们提供的设置将比下面的通用指南有更高的优先级。
VMO 参数LRU_FILE_REPAGE应该被设成 0 。这个参数是控制是否牺牲计算页或文件系统缓存页。另外,minperm 应该被设为 3 。 这两个参数值是 AIX6.1 里面默认值。
AIO 参数的 maxservers 默认值可以不再是每个CPU 10个。系统一旦激活maxservers 就调整如下
1、收集ps – elfk | grep aio的输出并且判断是否所有的异步 I/O(AIO)核心进程(aioservers)消耗同样数量的 CPU 时间。
2、如果是,maxservers 可能太少了。增加 10% 的 maxservers 然后重复第一步。
3、如果有些 aioservers 较其它的要使用更少的 CPU 时间,那么至少当前系统拥有它所需要的数目。如果多于 10% 的 aioservers 使用较少的 CPU 时间就降低 10% 的 maxservers 并重复第一步。
AIO 参数 maxreqs 应该被设置成 MAX(NUM_IOCLEANERS x 256, 4096). 这个参数控制绝大多数突出的 AIO 请求。
Hdisk 参数queue_depth应该基于这个队列的物理硬盘数目。例如,对于 IBM 磁盘queue_depth的默认值是 3 并建议这个值是 3 xnumber-of-devices。这个控制参数可排队的磁盘请求。
硬盘适配器参数num_cmd_elems应该被设为所有连接到这个适配器的设备 queue_depth 的总和。
四 安装Database Software
4.1 开始安装
上传数据库安装介质,并解压
上传安装介质:
db2_v101_AIX_xxx.tar.gz
root用户解压db2_v101_AIX_xxx.tar.gz软件
切换到root用户
设置DISPLAY环境变量
export DISPLAY=XXXXXX
预检查:
#./db2prereqcheck
启动OUI开始安装数据库软件
#./db2setup
注意:安装DB2需要的硬件条件:
需要的硬盘容量:DB2安装向导会动态地评估安装中所选的组件大小。
需要的内存大小:至少需要留给DB2的内存容量为512MB。推荐使用至少1GB的内存
容量。这样可以提高DB2的性能。
4.2 安装截图
【👉步骤1】运行安装向导程序db2setup
db2 setup 成功运行后,可以看到 DB2 安装程序欢迎界面,界面中显示“欢迎 root 使用 DB2 版本 10.1”,如果你使用的是其他用户,则会显示相应的用户名。如图 1-1 所示。
::: hljs-center
图1 – 1 安装程序欢迎界面
:::
【👉步骤2】单击左侧的“安装产品”,进入安装产品的选择界面。如图 1-2 所示
::: hljs-center
图1 – 2 选择安装产品
:::
在这个页面中,可以看到供选择安装的所有 DB2 版本,包括企业服务器版、工作组服务器版和客户端等。
【👉步骤3】单击“DB2企业服务器版本10.1”中的按钮 。进入安装向导欢迎界面,如图1-3所示。
::: hljs-center
图1-3 安装向导欢迎界面
:::
【👉步骤4】单击按钮 ,进入软件许可协议界面。
选择 软件许可证协议后,单击按钮
,进入:“选择安装类型”界面。如图1-4所示。
::: hljs-center
图1-4 选择安装类型
:::
DB2提供了三种安装类型,分别是“典型安装”、“精简安装”和“定制安装”。可以通过相关的安装类型概要来了解不同安装类型的特点,或者单击按钮 ,查看相关类型所包含的部件。
【👉步骤5】在“选择安装类型”界面中,选择 ,单击按钮
,进入“选择安装和/或创建相应文件”界面。如图1-5
::: hljs-center
图1-5 选择安装和创建响应文件
:::
【👉步骤6】在“选择安装和/或创建响应文件”界面中,选择 ,单击按钮
,进入“选择安装目录”界面。
::: hljs-center
图1-6选择安装目录
:::
【👉步骤7】在“选择安装目录”界面中,选择使用默认的安装目录 。
单击按钮 ,进入“为DB2管理服务器设置用户信息”界面,如图1-7所示。
::: hljs-center
图1-7 设置管理服务器
:::
【👉步骤8】在“为 DB2 管理服务器设置用户信息”界面中,如果安装之前,系统中已经创建了 DB2 使用的管理服务器用户和用户组,可以选择现有用户,并指定用户。
如果系统中没有定义相关用户和用户组,则可以选择使用默认的用户名 dasusr1 和用户组 dasadm1,或者自己指定新的用户名和用户组。输入两遍有效的密码后,单击按钮 ,进入“设置 DB2 实例”界面。如图 1-8 所示。
::: hljs-center
图1-8 设置DB2实例
:::
【👉步骤9】 在“设置 DB2 实例”界面中,选择 ,安装程序会在安装过程中自动创建一个 DB2 实例,并命名为 db2 inst1。单击按钮
,进入“为 DB2 实例设置分区选项”界面。
【👉步骤10】 在“为 DB2 实例设置分区选项”界面中。选择单一分区实例,安装程序将创建一个单分区的 DB2 实例。单击按钮 ,进入“为 DB2 实例所有者设置用户信息”界面。如图 1-9 所示。
【👉步骤11】在“为 DB2 实例所有者设置用户信息”界面中,如果系统中没有定义相关用户和用户组,则可以选择使用默认的用户名 db2 instl 和用户组 db2 iadml。输入两遍有效的密码后,单击按钮 ,进入“设置受防护用户的用户信息”界面。如图 1-10 所示。
::: hljs-center
图1-9 设置实例所有者信息
:::
::: hljs-center
图1-10 设置受防护用户信息
:::
【👉步骤12】 在“设置受防护用户的用户信息”界面中,如果系统中没有定义相关用户和用户组,则可以选择使用默认的用户名 db2fenc1 和用户组 db2fadm1, 设置两遍有效密码后,单击按钮
【👉步骤13】 在“开始复制文件”界面中,DB2 安装程序列出用户在之前的安装步骤中选择和设置的信息,如实例名、服务端口号、实例用户名及主目录、受防护用户名及主目录,以及 DB2 管理服务器的相关信息。用户确认后,单击按钮 ,安装程序开始复制文件并配置数据库相关信息。如图 1-11 图1-12所示。
::: hljs-center
图1-12 正在安装
:::
::: hljs-center
图1-13 安装成功
:::
【步骤👉14】DB2 安装成功。
安装过程成功结束后,DB2 安装程序返回“安装完成”界面,如图 1-13 所示。在该界面中,可以通过单击页签分别看到“安装后必须的步骤”以及安装过程的“日志内容”。
五 注册许可证license
5.1 上传许可证文件
5.2 注册许可证
db2licm -a db2ese_c.lic
5.3 查看db2软件状态是否为永久
db2licm –l
六 创建数据库
6.1 创建数据库命令(dbname为要创建的数据库名)
db2 create database <db_name> on
6.2 数据库的命名规则:
数据库的名称可以由以下字符组成:a-z、A-Z、0-9、@、#和$
名称中的第一个字符必须是字母表字符、@、#或$;不能是数字或字母序列SYS、DBM或IBM。注意,数据库的名称不能超过8个字符
数据库名称或数据库别名是唯一的字符串,包含前面描述的1到8个字母、数字或键盘字符。
七 数据库运维规范
新建数据库时 需要指定数据存放到文件系统中,不采用裸设备存储方式
数据库表空间类型选择(SMS和DMS)
- 数据库的系统表空间管理方式为系统管理方式(SMS),表空间要求能够根据需要自动增加,不需要人为参与,适用于一个表空间存储多个小表
- 对于性能要求很高的应用程序,特别是涉及大量DML操作的应用程序,建议使用DMS表空间
新建的数据库必须设置使用归档的方式,并部署自动删除脚本,保存15天的日志
归档的日志必须和活动日志不能存放在同一个目录下面,注意:不可直接手动删除在线日志
新建数据库根据数据库的重要性,邮件通知数据库管理员,提醒集中统一备份
八 DB2数据库常用命令
启动数据库:
启动db2服务:db2start
查看激活状态的数据库:db2 list active databases
关闭数据库:
关闭数据库服务:db2stop
查看数据库:db2 list db directory
查看数据库应用:db2 list applications
查看数据库应用和进程号:db2 list applications show detail
查看数据库表空间:db2 list tablespaces
查看表空间详细信息:db2 get snapshot for tablespaces on <db_name>
查看数据库配置:db2 get db cfg for <db_name>
连接数据库:db2 connect to <db_name>
db2 connect to <db_name> user[user_name] using [password]
断开数据库连接:db2 connect reset/db2 terminate
创建数据库:db2 create db <db_name> on
删除数据库:db2 drop database <db_name> (如果不能删除,尝试断开激活的连接或者重启db2)
创建表空间:db2 create <tablespace_name> managed by automatic storage
列出系统表:db2 list tables for system
列出所有用户表:db2 list tables
列出所有表:db2 list tables for all
列出特定用户表:db2 list tables for schema [user]
复制一张表:db2 create table t1 like t2
显示表结构:db2 describe table tablename
查询表:db2 “select * from table tablename where …”
执行SQL脚本:db2 -tvf scripts.sql
查看错误代码信息:
db2 ? 10054
停止激活的连接:
db2 force application all;\db2 force application all;\db2 force application all;\db2stop
查看死锁:
db2 get snapshot for locks on <db_name>
db2 “select agent_id,tabname,lock_mode from table(snap_get_lock(‘<db_name>’)) as aa”
杀掉进程:
db2 force application(NUM)
开启归档:
db2 update db cfg for sample using LOGARCHMETH1 “DISK:/arch/”
注:开启归档后需重启数据库,并做一次全库备份。
赋权:
新建业务用户默认最小权限。
如果要赋高级别权限:
db2 connect to xxx(数据库)
db2 grant dbadm on database to user db2ywyh
DBADM 权限是一个数据库级权限,而不是实例级权限。DBADM用户对一个数据库基本业务流转没有影响。DBADM用户不能执行某些维护或管理任务,比如:
drop database
drop/create tablespace
backup/restore database
update db cfg for database db name