信创迁移适配预研-达梦数据库DM8服务与客户端工具安装使用

简介: 信创迁移适配预研-达梦数据库DM8服务与客户端工具安装使用

背景


凡事预则立


听说我们的项目将来要部署到国产化平台上,数据库用的是达梦数据库,国产的这些组件也没有用过,就想着在虚拟机安装数据库服务(因为是在 CentOS7 上安装测试,所以图形化客户端无法使用,可以通过在远程/宿主 Windows 主机上选择仅安装客户端使用,eg:DM管理工具,DM数据迁移工具等),先研究下国产数据库的使用,包括基础的 CRUD 操作以及事务支持,方便将来的部署与维护。

image.png

由于本系列文章仅用于记录当时项目的国产化迁移过程,不涉及太多的理论内容,基本都是一系列的操作过程,所以行文上就直接上操作了。如果您有任何疑问,欢迎留言评论。


从前车马很慢,书信很远,一生只够爱一个人。

如今生活太快,时间太少,不要绕圈子,给我来个痛快的。


系统环境


CentOS7 上进行安装,虚拟主机信息如下:

[root@hadoop3 local]# uname -a
Linux hadoop3 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@hadoop3 local]# cat /proc/version
Linux version 3.10.0-1127.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Mar 31 23:36:51 UTC 2020
[root@hadoop3 local]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)


下载


www.dameng.com/ucenter/doc…

手机号、短信验证码登录。


下载 x86CentOS7 下的 DM8 开发版。


解压, iso 解压,将 DMInstall.bin 上传至服务器,赋予可读、可写、可执行权限。


安装


执行安装文件


[root@hadoop3 local]# chmod +x DMInstall.bin 
[root@hadoop3 local]# ./DMInstall.bin 
解压安装程序..........
Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
        no swt-pi-gtk-3659 in java.library.path
        no swt-pi-gtk in java.library.path
        Can't load library: /tmp/swtlib-64/libswt-pi-gtk-3659.so
        Can't load library: /tmp/swtlib-64/libswt-pi-gtk.so
        /tmp/swtlib-64/libswt-pi-gtk-3659.so: libgtk-x11-2.0.so.0: 无法打开共享对象文件: 没有那个文件或目录
        at org.eclipse.swt.internal.Library.loadLibrary(Library.java:267)
        at org.eclipse.swt.internal.Library.loadLibrary(Library.java:174)
        at org.eclipse.swt.internal.gtk.OS.<clinit>(OS.java:22)
        at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63)
        at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54)
        at org.eclipse.swt.widgets.Display.<clinit>(Display.java:132)
        at org.eclipse.swt.widgets.Widget.isValidSubclass(Widget.java:988)
        at org.eclipse.swt.widgets.Decorations.checkSubclass(Decorations.java:164)
        at org.eclipse.swt.widgets.Shell.<init>(Shell.java:258)
        at org.eclipse.swt.widgets.Shell.<init>(Shell.java:253)
        at org.eclipse.swt.widgets.Shell.<init>(Shell.java:204)
        at org.eclipse.swt.widgets.Shell.<init>(Shell.java:140)
        at com.dameng.common.gui.util.SWTUtility.canInitGUI(SWTUtility.java:380)
        at com.dameng.install.ui.MainApplication.run(MainApplication.java:80)
        at com.dameng.install.ui.MainApplication.main(MainApplication.java:436)
# 缺少相关的依赖,安装即可
yum install -y libXtst
# 再次执行安装
[root@hadoop3 local]# ./DMInstall.bin 
解压安装程序..........
Exception in thread "main" java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
        no swt-pi-gtk-3659 in java.library.path
        no swt-pi-gtk in java.library.path
        /tmp/swtlib-64/libswt-pi-gtk-3659.so: libgtk-x11-2.0.so.0: 无法打开共享对象文件: 没有那个文件或目录
        Can't load library: /tmp/swtlib-64/libswt-pi-gtk.so
        at org.eclipse.swt.internal.Library.loadLibrary(Library.java:267)
        at org.eclipse.swt.internal.Library.loadLibrary(Library.java:174)
        at org.eclipse.swt.internal.gtk.OS.<clinit>(OS.java:22)
        at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63)
        at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54)
        at org.eclipse.swt.widgets.Display.<clinit>(Display.java:132)
        at org.eclipse.swt.widgets.Widget.isValidSubclass(Widget.java:988)
        at org.eclipse.swt.widgets.Decorations.checkSubclass(Decorations.java:164)
        at org.eclipse.swt.widgets.Shell.<init>(Shell.java:258)
        at org.eclipse.swt.widgets.Shell.<init>(Shell.java:253)
        at org.eclipse.swt.widgets.Shell.<init>(Shell.java:204)
        at org.eclipse.swt.widgets.Shell.<init>(Shell.java:140)
        at com.dameng.common.gui.util.SWTUtility.canInitGUI(SWTUtility.java:380)
        at com.dameng.install.ui.MainApplication.run(MainApplication.java:80)
        at com.dameng.install.ui.MainApplication.main(MainApplication.java:436)
# 缺少相关的依赖,安装即可
yum install -y gtk2
[root@hadoop3 local]# ./DMInstall.bin 
解压安装程序..........
初始化图形界面失败,如果当前监视器窗口不支持图形界面,请进入安装文件所在文件夹并使用"./DMInstall.bin -i"进行命令行安装。
[root@hadoop3 local]# ./DMInstall.bin -i
请选择安装语言(C/c:中文 E/e:英文) [C/c]:
解压安装程序..........
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 14989
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 14989
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
可打开文件数过少,建议至少设置为65536或更多。
欢迎使用达梦数据库安装程序
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n
是否设置时区? (Y/y:是 N/n:否) [Y/y]:y
设置时区:
[ 1]: GTM-12=日界线西
[ 2]: GTM-11=萨摩亚群岛
[ 3]: GTM-10=夏威夷
[ 4]: GTM-09=阿拉斯加
[ 5]: GTM-08=太平洋时间(美国和加拿大)
[ 6]: GTM-07=亚利桑那
[ 7]: GTM-06=中部时间(美国和加拿大)
[ 8]: GTM-05=东部部时间(美国和加拿大)
[ 9]: GTM-04=大西洋时间(美国和加拿大)
[10]: GTM-03=巴西利亚
[11]: GTM-02=中大西洋
[12]: GTM-01=亚速尔群岛
[13]: GTM=格林威治标准时间
[14]: GTM+01=萨拉热窝
[15]: GTM+02=开罗
[16]: GTM+03=莫斯科
[17]: GTM+04=阿布扎比
[18]: GTM+05=伊斯兰堡
[19]: GTM+06=达卡
[20]: GTM+07=曼谷,河内
[21]: GTM+08=中国标准时间
[22]: GTM+09=汉城
[23]: GTM+10=关岛
[24]: GTM+11=所罗门群岛
[25]: GTM+12=斐济
[26]: GTM+13=努库阿勒法
[27]: GTM+14=基里巴斯
请选择设置时区 [9]:21
安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:
所需空间: 1181M
请选择安装目录 [/opt/dmdbms]:
可用空间: 44G
是否确认安装路径(/opt/dmdbms)? (Y/y:是 N/n:否)  [Y/y]:
安装前小结
安装位置: /opt/dmdbms
所需空间: 1181M
可用空间: 44G
版本信息: 
有效日期: 
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):y
2021-09-27 22:40:18 
[INFO] 安装达梦数据库...
2021-09-27 22:40:18 
[INFO] 安装 基础 模块...
2021-09-27 22:40:59 
[INFO] 安装 服务器 模块...
2021-09-27 22:41:29 
[INFO] 安装 客户端 模块...
2021-09-27 22:44:55 
[INFO] 安装 驱动 模块...
2021-09-27 22:46:20 
[INFO] 安装 手册 模块...
2021-09-27 22:46:32 
[INFO] 安装 服务 模块...
2021-09-27 22:46:35 
[INFO] 移动日志文件。
2021-09-27 22:46:37 
[INFO] 创建dmdba系统管理员完成。
2021-09-27 22:46:37 
[INFO] 正在启动DmAPService服务...
2021-09-27 22:46:41 
[INFO] 启动DmAPService服务成功。
2021-09-27 22:46:41 
[INFO] 安装达梦数据库完成。

安装结束~


安装系统服务


[root@hadoop3 ~]# cd /opt/dmdbms/bin
[root@hadoop3 bin]# ./dminit path=/opt/dmdbms/data page_size=16 log_size=2048 case_sensitive=n
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-07-09
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
 log file path: /opt/dmdbms/data/DAMENG/DAMENG01.log
 log file path: /opt/dmdbms/data/DAMENG/DAMENG02.log
write to dir [/opt/dmdbms/data/DAMENG].
create dm database success. 2021-09-27 23:23:09
[root@hadoop3 bin]# cd ../script/root/
[root@hadoop3 root]# ./dm_service_installer.sh -h
Usage: dm_service_installer.sh -t service_type [-p service_name_postfix] [-dm_ini dm_ini_file]
        [-watcher_ini watcher_ini_file ] [-monitor_ini monitor_ini_file] [-cssm_ini cssm_ini_file]
        [-dfs_ini dfs_ini_file] [-dcr_ini dcr_ini_file]
        [-dss_ini dss_ini_file] [-drs_ini drs_ini_file] [-dras_ini dras_ini_file] [-dcs_ini dcs_ini_file] [-server server_info]
        [-dmap_ini dmap_ini_file] [-dpc_mode SP|MP|BP] [-m open|mount] [-y dependent_service] [-auto true|false]
  or dm_service_installer.sh [-s service_file_path]
  or dm_service_installer.sh -h
   -t               服务类型,包括dmimon,dmap,dmserver,dmwatcher,dmmonitor,dmcss,dmcssm,dmasmsvr,dmdcs,dmdrs,dmdras,dmdss
   -p               服务名后缀,对于dmimon,dmap服务类型无效
   -dm_ini          dm.ini文件路径
   -watcher_ini     dmwatcher.ini文件路径.
   -monitor_ini     dmmonitor.ini文件路径.
   -dcr_ini         dmdcr.ini文件路径.
   -cssm_ini        dmcssm.ini文件路径.
   -dss_ini         dss.ini文件路径.
   -drs_ini         drs.ini文件路径.
   -dras_ini        dras.ini文件路径.
   -dcs_ini         dcs.ini文件路径.
   -dfs_ini         dfs.ini文件路径.
   -dmap_ini        dmap.ini文件路径.
   -dpc_mode        DPC节点类型.
   -server          服务器信息(IP:PORT)
   -auto            设置服务是否自动启动,值为true或false,默认true.
   -m               设置服务器启动模式open或mount,只针对dmserver服务类型生效,可选
   -y               设置依赖服务,此选项只针对systemd服务环境下的dmserver和dmasmsvr服务生效
   -s               服务脚本路径,设置则忽略除-y外的其他参数选项
   -h               帮助
[root@hadoop3 root]# ./dm_service_installer.sh -t dmserver -dm_ini /opt/dmdbms/data/DAMENG/dm.ini -p DMSERVER
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service to /usr/lib/systemd/system/DmServiceDMSERVER.service.
创建服务(DmServiceDMSERVER)完成
[root@hadoop3 root]# systemctl status DmServiceDMSERVER
● DmServiceDMSERVER.service - DM Instance Service(DmServiceDMSERVER).
   Loaded: loaded (/usr/lib/systemd/system/DmServiceDMSERVER.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
[root@hadoop3 root]# systemctl start DmServiceDMSERVER
[root@hadoop3 root]# systemctl status DmServiceDMSERVER
● DmServiceDMSERVER.service - DM Instance Service(DmServiceDMSERVER).
   Loaded: loaded (/usr/lib/systemd/system/DmServiceDMSERVER.service; enabled; vendor preset: disabled)
   Active: active (running) since 二 2021-09-28 02:47:39 EDT; 13s ago
  Process: 12945 ExecStart=/opt/dmdbms/bin/DmServiceDMSERVER start (code=exited, status=0/SUCCESS)
 Main PID: 12986 (dmserver)
   CGroup: /system.slice/DmServiceDMSERVER.service
           └─12986 /opt/dmdbms/bin/dmserver path=/opt/dmdbms/data/DAMENG/dm.ini -noconsole
9月 28 02:47:22 hadoop3 systemd[1]: Starting DM Instance Service(DmServiceDMSERVER)....
9月 28 02:47:39 hadoop3 DmServiceDMSERVER[12945]: [39B blob data]
9月 28 02:47:39 hadoop3 systemd[1]: Started DM Instance Service(DmServiceDMSERVER)..


处理前面安装过程时的警告


可打开文件数过少,建议至少设置为 65536 或更多。

[root@hadoop3 ~]# ulimit -n
1024
[root@hadoop3 ~]# ulimit -n 65535
[root@hadoop3 ~]# ulimit -n
65535


客户端连接


因为我是典型安装,所以在安装达梦服务端的同时也安装了客户端。进入客户端后,操作类似于其他关系型数据库。

[root@hadoop3 dmdbms]# ./bin/disql
disql V8
用户名:SYSDBA
密码:
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 445.520(ms)
SQL> select * from v$version;
行号     BANNER                   
---------- -------------------------
1          DM Database Server 64 V8 
2          DB Version: 0x7000c
已用时间: 42.031(毫秒). 执行号:53300.
SQL> select id_code;
行号     id_code                                
---------- ---------------------------------------
1          1-2-38-21.07.09-143359-10018-ENT  Pack1
已用时间: 0.685(毫秒). 执行号:53301.


注意事项


达梦 SQL 查询必须指定 from 库名. 表名,除非用户名和库名一致时可省略库名。

  • 在默认的模式下建表
create table "SYSDBA"."city"
(
  "city_id" VARCHAR(36),
  "city_name" VARCHAR(100),
  "region_id" INT
);
  • 新建模式
create user SMART_CITY identified by SMART_CITY123 limit password_life_time 60, failed_login_attemps 5, password_lock_time 5; 
  --identifiled by 指定鉴定密码
  --limit password_life_time 指定最大生存时间(单位:天)
  --failed_login_attemps 指定最大登录失败次数
  --password_lock_time 指定锁定时间(单位:分)
create user SMARTCITY identified by SMART_CITY123 limit failed_login_attemps 5, password_lock_time 5;


目录
相关文章
|
1月前
|
弹性计算 关系型数据库 数据库
自建数据库迁移到云数据库实操
本课程详细介绍了自建数据库迁移到阿里云RDS的实操步骤。主要内容包括:创建实例资源、安全设置、配置自建的MySQL数据库、数据库的迁移、从自建数据库切换到RDS以及清理资源。通过这些步骤,学员可以掌握如何将自建数据库安全、高效地迁移到云端,并确保应用的正常运行。
140 26
|
15天前
|
运维 关系型数据库 MySQL
体验领礼啦!体验自建数据库迁移到阿里云数据库RDS,领取桌面置物架!
「技术解决方案【Cloud Up 挑战赛】」上线!本方案介绍如何将自建数据库平滑迁移至云数据库RDS,解决业务增长带来的运维难题。通过使用RDS MySQL,您可获得稳定、可靠和安全的企业级数据库服务,专注于核心业务发展。完成任务即可领取桌面置物架,每个工作日限量50个,先到先得。
|
25天前
|
弹性计算 关系型数据库 数据库
从自建到云端,数据库迁移全攻略
本文详细介绍了将自建数据库迁移至阿里云RDS的全过程,涵盖WordPress网站安装、数据库迁移配置及验证等步骤。通过DTS数据传输服务,实现库表结构、全量和增量数据的无缝迁移,确保业务连续性和数据一致性。方案具备零成本维护、高可用性(最高99.99%)、性能优化及全面的数据安全保障等核心优势。此外,提供了详细的图文教程,帮助用户快速上手并完成迁移操作,确保业务稳定运行。点击文末“阅读原文”了解更多详情及参与活动赢取精美礼品。
|
1月前
|
运维 关系型数据库 MySQL
自建数据库迁移到云数据库RDS
本次课程由阿里云数据库团队的凡珂分享,主题为自建数据库迁移至云数据库RDS MySQL版。课程分为四部分:1) 传统数据库部署方案及痛点;2) 选择云数据库RDS MySQL的原因;3) 数据库迁移方案和产品选型;4) 线上活动与权益。通过对比自建数据库的局限性,介绍了RDS MySQL在可靠性、安全性、性价比等方面的优势,并详细讲解了使用DTS(数据传输服务)进行平滑迁移的步骤。此外,还提供了多种优惠活动信息,帮助用户降低成本并享受云数据库带来的便利。
|
2天前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
26 0
|
29天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
59 3
|
29天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
71 3
|
29天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE &#39;log_%&#39;;`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
89 2
|
1月前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
267 15
|
1月前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。