1.1部署规划
单机部署规划
IP规划:
主机名 | 服务ip | 数据库名 | 实例名 |
dmdb | 192.169.154.128 | dmdb | dmdb |
端口规划:
实例名 | 实例端口 |
dmdb | 5236 |
本地存储LVM磁盘规划:(按实际需求调整磁盘空间)
磁盘 | LVM磁盘名/用途 |
/dev/sdc(100G) | /dev/dmappvg/dmapplv (数据库安装磁盘) |
/dev/sde(500G) | /dev/dmdatavg/dmdatalv (数据磁盘) |
/dev/sdf(500G) | /dev/dmbakvg/dmbaklv (备份磁盘) |
目录规划:(在对应服务器上创建目录owner为dmdba组为dinstall)
数据库软件安装目录 | /home/dmdba/dmdbms |
实例安装目录 | /dm8/ |
归档日志存放目录 | /dm8/arch |
备份文件存放目录 | /dm8/dmbak/ |
1.2 数据库软件安装
单机上安装数据库软件:
1.2.1 操作系统配置
修改内核参数
vi /etc/sysctl.conf |
添加以下内容
fs.file-max = 6815744 fs.aio-max-nr = 1048576 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 vm.dirty_ratio = 80 vm.dirty_expire_centisecs = 500 vm.dirty_writeback_centisecs = 100 kernel.core_pattern = /dmdata/core.%p vm.swappiness=10 vm.dirty_background_ratio = 0 vm.min_free_kbytes = 2097152 |
使参数生效,执行
sysctl -p |
新建数据库管理用户和组
执行以下命令,新建用户组 dinstall。
groupadd dinstall -g 2001 |
执行以下命令,新建用户 dmdba。
useradd -G dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba |
执行以下命令,修改 dmdba 用户密码。
passwd dmdba |
Hn@dameng123
修改用户资源限制
执行以下命令,修改 dmdba 用户资源限制。
vim /etc/security/limits.conf |
文件末尾添加如下内容:
dmdba soft nice 0 dmdba hard nice 0 dmdba soft as unlimited dmdba hard as unlimited dmdba soft fsize unlimited dmdba hard fsize unlimited dmdba soft nproc 65536 dmdba hard nproc 65536 dmdba soft nofile 65536 dmdba hard nofile 65536 dmdba soft core unlimited dmdba hard core unlimited dmdba soft data unlimited dmdba hard data unlimited |
此外需要检查/etc/security/limits.d/目录下是否有其他限制资源的配置文件,如果有也需要修改。
执行以下命令,修改 dmdba 用户环境变量。
vi /home/dmdba/.bash_profile |
文件末尾添加如下内容:
export DM_HOME=/home/dmdba/dmdbms |
1.2.2数据库软件安装
1.使用root用户挂载数据库软件的iso文件
mkdir -p /dmiso mount -o loop dm8_20210924_FTarm_kylin10_sp1_64_sec_8.1.2.70_pack2.iso /dmiso |
2.使用dmdba用户安装软件
su - dmdba |
执行以下命令,切换到 /dmiso 目录下
cd /dmiso |
执行 DMInstall.bin 文件开始安装,选择【-i】参数以命令行方式安装。
./DMInstall.bin -i |
选择安装程序的语言 c/C 为中文,e/E 为英文。
提示是否安装 key 文件,输入 N 跳过。
选择时区,21 即东 8 区。
选择安装类型,默认典型安装(包含所有内容)。
选择软件安装目录,默认/home/dmdba/dmdbms
确认安装
安装完成提示使用root执行脚本:
/home/dmdba/dmdbms/script/root/root_installer.sh
1.3使用 dminit 工具初始化实例
执行以下命令
dminit path=/dm8 page_size=32 extent_size=32 charset=1 log_size=2048 db_name=dmdb instance_name=dmdb SYSDBA_PWD="Hn@dameng123" SYSAUDITOR_PWD="Hn@dameng123" |
注意:
初始化参数中除了 path 参数必须指定,其它参数都有默认值,如果需求与默认值不同,初始化的时候请指定需要的值。因为部分参数初始化后是无法修改的例如:page_size(页大小),charset(字符集),case_sensitive(大小写敏感)等。更多参数./dminit help 查看,是否无法修改的参数可以查询 v$dm_ini 视图,para_type=’READ ONLY’ 表示无法修改。
1.4 注册服务并启动实例
以系统服务方式启动实例,DM 提供脚本将数据库实例注册为操作系统服务。
root 用户下切换到 /home/dmdba/dmdbms/script/root/:
cd /home/dmdba/dmdbms/script/root/ |
执行以下命令,执行脚本注册服务:
./dm_service_installer.sh -t dmserver -p dmdb -dm_ini /dm8/dmdb/dm.ini |
执行以下命令,以服务方式启动实例:
systemctl start DmServicedmdb |
1.5 登录数据库
dmdba用户下执行以下命令:
./disql SYSDBA/'"Hn@dameng123"'@localhost:5236 |
说明:密码使用单引号+双引号包围起来
1.6 归档配置
生产环境必须开启归档日志,且必须限制归档日志保留量,限制方法:
- 设置归档空间大小限制即指定 SPACE_LIMIT 参数(单位是 MB)。
- 定期删除归档日志(设置定时作业)。
例如开启归档并限制归档空间为 100 G(按实际存储空间给合适的值),如下所示
alter database mount; |
1.7 定制备份策略
根据应用需求,定制备份策略如下所示
备份类型 | 备份周期 | 备份时间 |
全量备份 | 每周 | 每周六 23 点 |
增量备份 | 每天 | 除周六外每天 23 点 |
删除备份 | 每天 | 每天 23 点 30 |
登录数据库执行以下命令,创建作业系统表
SP_INIT_JOB_SYS(1); |
全量备份(每周六 23 点全备):其中有1分钟后的一次性全备调度,执行完成后检查备份是否成功。
call SP_CREATE_JOB('bakfull',1,0,'',0,0,'',0,''); call SP_JOB_CONFIG_START('bakfull'); call SP_ADD_JOB_STEP('bakfull', 'bak1', 6, '01020000/dm8/dmbak', 0, 0, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('bakfull', 'std1', 1, 2, 1, 64, 0, '23:00:00', NULL, '2021-11-01 21:17:22', NULL, ''); call SP_ADD_JOB_SCHEDULE('bakfull', 'once', 1, 0, 0, 0, 0, NULL, NULL, sysdate+1/1440, NULL, ''); call SP_JOB_CONFIG_COMMIT('bakfull'); |
增量备份(每周除周六外每天 23 点增量备份):
call SP_CREATE_JOB('bakincr',1,0,'',0,0,'',0,''); call SP_JOB_CONFIG_START('bakincr'); call SP_ADD_JOB_STEP('bakincr', 'bak2', 6, '41010000/dm8/dmbak|/dm8/dmbak', 0, 0, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('bakincr', 'std2', 1, 2, 1, 63, 0, '23:00:00', NULL, '2021-11-01 21:19:30', NULL, ''); call SP_JOB_CONFIG_COMMIT('bakincr'); |
备份定期删除(每天 23:30 删除 14 天前备份):
call SP_CREATE_JOB('delbak',1,0,'',0,0,'',0,''); |
另外添加自动收集统计信息的任务(每天1点收集全库统计信息)
call SP_CREATE_JOB('statistics',1,0,'',0,0,'',0,''); call SP_JOB_CONFIG_START('statistics'); call SP_ADD_JOB_STEP('statistics', 'statistics1', 0, 'begin for rs in (select ''sf_set_SESSION_para_value(''''HAGR_HASH_SIZE'''',(select cast( case when max(table_rowcount(owner,table_name))<=(select max_value from v$dm_ini where para_Name=''''HAGR_HASH_SIZE'''') and max(table_rowcount(owner,table_name))>=( select min_value from v$dm_ini where para_Name=''''HAGR_HASH_SIZE'''') then max(table_rowcount(owner,table_name)) when max(table_rowcount(owner,table_name))<( select min_value from v$dm_ini where para_Name=''''HAGR_HASH_SIZE'''') then (select min_value from v$dm_ini where para_Name=''''HAGR_HASH_SIZE'''') else (select max_value from v$dm_ini where para_Name=''''HAGR_HASH_SIZE'''') end as bigint) from dba_tables where owner=''''''||NAME||''''''));'' sql1,''DBMS_STATS.GATHER_SCHEMA_STATS(''''''||NAME||'''''',100,TRUE,''''FOR ALL COLUMNS SIZE AUTO'''');'' sql2 from SYS.SYSOBJECTS where TYPE$=''SCH'' ) loop execute immediate rs.sql1; execute immediate rs.sql2; end loop; end;', 0, 0, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('statistics', 'statistics1', 1, 2, 1, 64, 0, '01:00:00', NULL, '2021-06-09 22:54:37', NULL, ''); call SP_JOB_CONFIG_COMMIT('statistics'); |
说明:每周6凌晨1点开始收集。
注意:上线前,必须提前48小时,完成数据迁移和统计信息收集。
1.8 配置sql日志
修改sqllog.ini
到实例路径下
cd /dmdata/dmdb/
vi sqllog.ini(记录1.5s以上sql)
BUF_TOTAL_SIZE = 10240 BUF_SIZE = 1024 BUF_KEEP_CNT = 6 [SLOG_ALL] FILE_PATH = ../log PART_STOR = 1 SWITCH_MODE = 2 SWITCH_LIMIT = 512 ASYNC_FLUSH = 1 FILE_NUM = 5 ITEMS = 0 SQL_TRACE_MASK = 2:3:25 MIN_EXEC_TIME = 1500 USER_MODE = 0 USERS = |