和单机升级很类似,只是升级流程的复杂度更高一点。
-- DM数据库信息查询脚本
SELECT BANNER FROM V$VERSION;
-- 在dmdbms/bin下执行
./disql -id
例如,
升级前版本:
v8. 1-1-144-20.11.06-129436-ENT Pack1
升级后版本:
v8. 1-2-94-21.11.11-150650-10038-ENT
-- 系统信息查询
getconf LONG_BIT # 获取系统位数
cat /etc/os-release | grep "PRETTY_NAME" # 查询操作系统
cat /proc/version # 查询系统
lscpu # 查询CPU型号
cat /proc/cpuinfo|grep "physical id"|sort|uniq|wc -l # CPU个数
free -h #查询内存
df -h #快速查看所有磁盘空间
du -sh * #查询目录下所有项目的大小
fdisk -l #查询所有物理磁盘
netstat -tunlp | grep <进程名或端口号> #查询端口号
hostname -I #查询本机ip
如果操作系统与cpu不匹配,需要获取到匹配的安装包再执行后续步骤。
ps -ef|grep dmserver
确认数据库服务目前为启动状态,并了解清楚达梦软件安装目录与数据库实例目录的所在位置。
ps -ef | grep dmmonitor
查看监视进程。
su - dmdba
cd /opt/dm8/dmdbms/bin
./dmmonitor /opt/dm8/data/dmmonitor_standby.ini
前台启动非确认监视器查看数据库状态。
监视器指令:
-- 登录监视器(输入用户名密码)
login
-- 查看集群拓扑状态
show
-- 检查集群健康状态
tip
-- 手动切换主备角色(需先执行login)
switchover <主库名> <备库名>
确保应用连接处于关闭或备份期间没有数据变更操作。
./disql SYSDBA:5236
密码
检查数据RLOG路径,检查文件是否存在:
select group_id, file_id,path,create_time,round(rlog_size/1024/1024,2) as "RLOG_SIZE(MB)" from v$rlogfile;
--检查归档文件,是否均在库目录下,如果不在需要备份
SELECT * FROM V$ARCH_FILE;
--检查归档文件,最后升级前需mv下整个归档目录
SELECT * FROM V$ARCH_FILE;
检查表空间状态&路径,确定路径升级前后保持一致:
select * from v$tablespace; --关注STATUS$字段
--检查数据文件,是否均在库目录下,如果不在需要备份
SELECT * from dba_data_files;
--关注文件是否存在,保障升级前后保持一致
SQL> select * from v$sessions;
-- 检查是否还存在应用连接;
SQL> select * from v$purge;
-- 检查是否存在待PURGE事务
SQL> checkpoint(100);
-- 主动做检查点刷盘
-- 如果应用无法关闭连接,则进行锁用户,并清理历史会话操作
select username from dba_users;
alter user WZ ACCOUNT LOCK;
begin
for a in (select sess_id from v$sessions
) loop
execute immediate 'sp_cancel_session_operation ('''||a.SESS_ID||''')';
execute immediate 'sp_close_session ('''||a.SESS_ID||''')';
end loop;
end;
ALTER USER WZ ACCOUNT UNLOCK;
和单机升级的不同点在于主备集群备份不可以脱机备份,只能联机热备。
检查dmap服务的状态:
ps –ef | grep dmap
若服务不存在,先去bin目录下启动AP服务。
su - dmdba
cd /opt/dm8/dmdbms/bin
./DmAPService start
如果出现报错:dmap init failed, code[-7157]: 管道文件已存在,解决方法为:
mv /opt/dm8/dmdbms/bin/DM_PIPE_DMAP_LSNR_* /tmp/
需要主备节点登录数据库都进行物理备份:
cd /opt/dm8/dmdbms/bin
nohup ./disql 用户名/密码:32141 -e "backup database backupset '/opt/dm8/data/bak_hot_20220804'; " &
--检查备份是否完成
1)ps -ef|grep 'backup database'
#如果备份进程不存在,则表示备份完成
2)查看备份日志,是否完成备份,日志文件为dm_BAKRES_年月.log
tail -f dmdbms/log/dm_BAKRES_202207.log
CMD END.CODE:[0],COST:[00:00:01]表示完成备份
停止数据库集群关闭数据库服务:
cd /opt/dm8/dmdbms/bin
停止集群监视器:
./DmMoniotrServiceGRP1 stop
停止备机守护进程:
./DmWatcherServiceGRP1_RT_02 stop
停止主机守护进程:
./DmWatcherServiceGRP1_RT_01 stop
停止主机数据库服务:
./DmServiceGRP1_RT_01 stop
停止备机数据库服务:
./DmServiceGRP1_RT_02 stop
关闭所有数据库AP服务:
./DmAPService stop
主库和备库都需要执行,如果监视器在第三台机器上,监视机也需要执行本步骤。
# 各个节点备份数据库软件目录
cd /opt/dm8/
mv dmdbms dmdbms_old_bak
# 物理备份数据库实例目录(可选)
nohup cp -rpf /opt/dm8/data/DAMENG /opt/dm8/data/DAMENG_old_bak &
#如果备份进程不存在,则表示备份完成
ps -ef|grep 'cp -rpf'
# copy 校验,比较各个文件的字节信息
ls -l /opt/dm8/data/DAMENG*
安装新版本数据库主机和备机都需要安装,如果监视器在第三台机器上,监视机也需要安装新版本数据库。
安装到原数据库软件所在目录,推荐使用dmdba用户安装,用root安装的话,安装好后需要修改数据库软件所属组chown -R dmdba:dinstall /opt/dm8
。
安装前建议先停DmAPServers服务。
ps -ef | grep dmap
./DmAPService status
./DmAPService stop
安装过程见《DM8在linux环境下的单机部署》第二章。
数据库服务启动后,检查下达梦AP服务./DmAPService status,如果AP服务没启动则启动一下。
主库:
cd /opt/dm8/bak_dmdbms/bin
cp -r DmServiceGRP1_RT_01 /opt/dm8/dmdbms/bin
cp -r DmWatcherServiceGRP1_RT_01 /opt/dm8/dmdbms/bin
cd ../../dmdbms/bin
chown -R dmdba:dinstall *
备库:
cd /opt/dm8/bak_dmdbms/bin
cp -r DmServiceGRP1_RT_02 /opt/dm8/dmdbms/bin
cp -r DmWatcherServiceGRP1_RT_02 /opt/dm8/dmdbms/bin
cd ../../dmdbms/bin
chown -R dmdba:dinstall *
监视机:
cd /opt/dm8/bak_dmdbms/bin
cp -r DmMonitorServiceGRP1 /opt/dm8/dmdbms/bin
cd ../../dmdbms/bin
chown -R dmdba:dinstall *
如果存在dm.key文件也需要拷贝进新的安装目录/bin下。
如果数据文件在bak_dmdbms下,也需要把data拷贝回来。
cd /opt/dm8/dmdbms/bin
启动主机数据库服务:
./DmServiceGRP1_RT_01 start
启动备机数据库服务:
./DmServiceGRP1_RT_02 start
启动主机守护服务:
./DmWatcherServiceGRP1_RT_01 start
启动备机守护服务:
./DmWatcherServiceGRP1_RT_02 start
启动集群监视器:
./DmMoniotrServiceGRP1 start
启动所有数据库AP服务:
./DmAPService start
前台启动非确认监视器查看数据库状态。
cd /opt/dm8/dmdbms/bin
./dmmonitor /opt/dm8/data/dmmonitor_standby.ini
主库登录disql查询版本:
-- DM数据库信息查询脚本
SELECT BANNER FROM V$VERSION;
-- 在dmdbms/bin下执行
./disql -id
sp_create_system_views(0);
sp_create_system_views(1);
SP_CREATE_SYSTEM_PACKAGES(0);
SP_CREATE_SYSTEM_PACKAGES(1);
select * from user_procedures;
如果出现系统包对象重建失败的警告,查看
SELECT * from v$dm_ini where para_name like 'COMPATIBLE_MODE';
COMPATIBLE_MODE不为0时,先改成0,再进行重建:
ALTER SYSTEM SET 'COMPATIBLE_MODE'=0 SPFILE;
重建完毕后,再还原COMPATIBLE_MODE的值。
--对库上所有模式下的所有用户表以及表上的所有索引生成统计信息
call sp_db_stat_init();
--收集指定模式下统计信息集合和直方图信息。
call DBMS_STATS.gather_schema_stats('用户名',100);
--第一个参数:模式名,第二个参数:收集比例
将.key文件导入新的bin目录下后,如果原始文件名不是dm.key,需要更改为dm.key。
登录disql,执行sp_load_lic_info()
;
确认许可证授权:
select
server_series,server_type,expired_date,authorized_customer,series_no
from v$license;
视图v$license字段信息说明
回退时监视器也需要回退。
停止数据库集群:
集群停止顺序:
cd /opt/dm8/dmdbms/bin
停止集群监视器 :
./DmMonitorServiceGRP1 stop
停止备机守护进程:
./DmWatcherServiceGRP1_RT_02 stop
停止主机守护进程:
./DmWatcherServiceGRP1_RT_01 stop
停止主机数据库服务:
./DmServiceGRP1_RT_01 stop
停止备机数据库服务:
./DmServiceGRP1_RT_02 stop
保留升级错误实例
nohup mv /data/dmdata/DAMENG /data/dmdata/DAMENG_faild &
恢复原始数据库软件
cd /opt/dm8
mv dmdbms dmdbms_faild
mv dmdbms_old_bak dmdbms
回退备份数据库
方法一、物理copy,恢复原始实例
nohup mv /opt/dm8/data/DAMENG /opt/dm8/data/DAMENG_old_bak &
nohup cp -r /opt/dm8/data/DAMENG_old_bak /opt/dm8/data/DAMENG &
方法二、备份集恢复
su - dmdba
cd /opt/dm8/dmdbms/bin
./DmAPService start
./dmrman
restore database '/opt/dm8/data/DAMENG/dm.ini' from backupset '/opt/dm8/data/bak_hot_20220804'
recover database '/opt/dm8/data/DAMENG/dm.ini' from backupset '/opt/dm8/data/bak_hot_20220804'
recover database '/opt/dm8/data/DAMENG/dm.ini' update db_magic;
启动旧版本的数据库集群:
su - dmdba
cd /home/dmdbm/dmdbms/bin
启动主机数据库服务:
./DmServiceGRP1_RT_01 start
启动备机数据库服务:
./DmServiceGRP1_RT_02 start
启动主机守护服务:
./DmWatcherServiceGRP1_RT_01 start
启动备机守护服务:
./DmWatcherServiceGRP1_RT_02 start
启动备机守护服务:
./DmWatcherServiceGRP1_RT_03 start
前台启动监视器服务确认集群状态:
./dmmonitor /data/mon/dmmonitor.ini
show
tip
集群正常,exit退出前台监视器,后台启动监视器服务。
./DmMonitorServiceGRP1 start
文章
阅读量
获赞