暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

达梦On银河麒麟的安装与备份恢复

济南小老虎 2024-11-24
75

背景

公司内一台高配的服务器使用的是银河麒麟
然后自己计划进行一下安装达梦进行备份与恢复的验证
中间有几个坑, 这里记录一下.


下载

需要说明, 达梦最新版本 x86 的银河麒麟
必须选择 信创版本的不能选择 rhel7的了
不然会出现各种错误.

两个不同的下载链接是:
https://download.dameng.com/eco/adapter/DM8/202410/dm8_20240920_x86_rh7_64.zip
https://download.dameng.com/eco/adapter/DM8/202410/dm8_20240930_HG_kylin10_64.zip

必须私用 kylin10 的截止 rh7的介质服务是起不来的.


安装

mkdir dmiso 
mount xxx.sio dmiso
useradd dmdba
cd dmiso
/DMInstall.bin -i
#注意安装模块选择 1 2 3 4 不选择数据库, 数据库需要单独处理
安装完成后进行数据库初始化
./dminit path=/opt/dmdbms/data case_sensitive=1 charset=0 page_size=32
# 注意这个需要跟具体的要求有关系, 我这个是GB18030的字符集

注意 此时使用的是 root用户, 如果使用root用户启动的话. 达梦已经禁止了.
所以必须要 chown dmdba opt/dmdbms -R
chown dmdba etc/dm_svc.conf


创建服务

cd opt/dmdbms/script/root
./dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini opt/dmdbms/data/DAMENG/dm.ini
cat > usr/lib/systemd/system/DmServiceDMSERVER.service <<EOF
[Unit]
Description=DM database instance service
After=network.target remote-fs.target

[Service]
Type=forking
PIDFile=/opt/dmdbms/bin/pids/DmServiceDMSERVER.pid
ExecStart=/opt/dmdbms/bin/DmServiceDMSERVER start
ExecStop=/opt/dmdbms/bin/DmServiceDMSERVER stop
PrivateTmp=true
User=dmdba

TasksMax=infinity
LimitCORE=infinity
LimitNOFILE=100000
LimitNPROC=100000

[Install]
WantedBy=multi-user.target
EOF


修改密码

SYSDBA 的默认密码是 SYSDBA 
# 注意必须使用 双引号.

cd /opt/dmdbms/bin
./disql SYSDBA/SYSDBA
alter user SYSDBA identified by "Testxxxxxxxx"

/opt/dmdbms/bin/disql SYSDBA/Newpassword <<EOF
create tablespace myapppf datafile '/opt/dmdbms/data/DAMENG/myapppf.dbf' size 256 ;
create user myapppf identified by "Testxxxxxxxx" default tablespace myapppf ;
grant dba,resource,vti to myapppf;
EOF


备份与恢复

# root用户
mkdir -p dmback
chown dmdba dmback -R
su - dmdba
time opt/dmdbms/bin/dexp myapppf/'"Testxxxxxxxx"'@127.0.0.1 file=/dmback/myapppf.dump log=/dmback/myapppf.log

恢复方式为比如恢复为 myapppf9999
/opt/dmdbms/bin/disql SYSDBA/Testxxxxxxxx <<EOF
create tablespace myapppf9999 datafile '/opt/dmdbms/data/DAMENG/myapppf9999.dbf' size 256 ;
create user myapppf9999 identified by "Testxxxxxxxx" default tablespace myapppf9999 ;
grant dba,resource,vti to myapppf9999;
EOF


/opt/dmdbms/bin/dimp myapppf9999/Testxxxxxxxx@127.0.0.1 file=/dmback/myapppf.dump log=/dmback/myapppf9999.log remap_schema=myapppf:myapppf999 remap_tablespace=myapppf:myapppf999


多数据库实例准备

for i in {0001..0400}; do
echo "create tablespace myapppf${i} datafile '/opt/dmdbms/data/DAMENG/myapppf${i}.dbf' size 256 ; "
echo "create user myapppf${i} identified by \"Testxxxxxxxx\" default tablespace myapppf${i} ;"
echo "grant dba,resource,vti to myapppf${i};"
done >400.sql

执行SQL:
/opt/dmdbms/bin/disql SYSDBA/Testxxxxxxxx <400.sql


多数据库恢复

mkdir -p 400
for i in {0001..0400}; do
echo "/opt/dmdbms/bin/dimp myapppf${i}/Testxxxxxxxx@127.0.0.1 file=/dmback/myapppf.dump log=/dmback/myapppf${i}.log remap_schema=myapppf:myapppf${i} remap_tablespace=myapppf:myapppf${i}"
done > 400/400.sh

cd 400
split -l 10 400.sh
rm -rf 400.sh
chmod 777 *
for i in `ls` ; do echo "nohup ./$i & " ; done
执行打印出来的结果就可以了.


文章转载自济南小老虎,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论