麒麟V10部署达梦主从(一主二从)

温馨提醒

环境

IP角色数据库名实例名称安装路径进程MAL端口守护进程端口
192.168.1.105masterCHENDB_1_105/opt/dmdbms数据库进程、守护进程6114152141
192.168.1.107slave+监视器CHENDB_1_107/opt/dmdbms数据库进程、守护进程、监视器进程6114152141
192.168.1.108slaveCHENDB_1_108/opt/dmdbms数据库进程、守护进程6114152141

部署达梦

在三台机器上部署好达梦数据库

  • 创建用户(三个节点上都操作)

    1
    2
    3
    
    groupadd dmdba
    useradd -g dmdba -m -d /home/dmdba -s /bin/bash dmdba
    passwd dmdba
  • 调整 limits.conf 参数(三个节点上都操作)

    1
    2
    3
    4
    5
    6
    7
    8
    
    vim /etc/security/limits.conf
    
    dmdba   soft    nofile  65536
    dmdba   hard    nofile  65536
    dmdba   soft    nproc   65536
    dmdba   hard    nproc   65536
    dmdba   soft    stack   65536
    dmdba   hard    stack   65536
  • 创建安装目录(三个节点上都操作)

    1
    2
    
    mkdir /opt/dmdbms
    chown -R dmdba.dmdba /opt/dmdbms
  • 挂载镜像(三个节点上都操作)

    1
    2
    
    unzip dm8_20240408_x86_rh7_64.zip
    mount -o loop dm8_20240408_x86_rh7_64.iso /mnt/
  • 安装达梦(三个节点上都操作)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    
    su - dmdba
    
    cd /mnt
    
    [dmdba@db_1_105 mnt]$ ./DMInstall.bin -i
    
    Installer Language: 
    [1]: 简体中文
    [2]: English
    Please select the installer's language [2]:1		# 选择安装语言
    解压安装程序......... 
    欢迎使用达梦数据库安装程序
    
    是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n		# 此处是测试环境,可以不用输入
    
    是否设置时区? (Y/y:是 N/n:否) [Y/y]:y			# 设置时区,默认是中国
    设置时区:
    [ 1]: (GTM-12:00) 日界线西
    [ 2]: (GTM-11:00) 萨摩亚群岛
    [ 3]: (GTM-10:00) 夏威夷
    [ 4]: (GTM-09:00) 阿拉斯加
    [ 5]: (GTM-08:00) 太平洋时间(美国和加拿大)
    [ 6]: (GTM-07:00) 亚利桑那
    [ 7]: (GTM-06:00) 中部时间(美国和加拿大)
    [ 8]: (GTM-05:00) 东部部时间(美国和加拿大)
    [ 9]: (GTM-04:00) 大西洋时间(美国和加拿大)
    [10]: (GTM-03:00) 巴西利亚
    [11]: (GTM-02:00) 中大西洋
    [12]: (GTM-01:00) 亚速尔群岛
    [13]: (GTM) 格林威治标准时间
    [14]: (GTM+01:00) 萨拉热窝
    [15]: (GTM+02:00) 开罗
    [16]: (GTM+03:00) 莫斯科
    [17]: (GTM+04:00) 阿布扎比
    [18]: (GTM+05:00) 伊斯兰堡
    [19]: (GTM+06:00) 达卡
    [20]: (GTM+07:00) 曼谷,河内
    [21]: (GTM+08:00) 中国标准时间
    [22]: (GTM+09:00) 首尔
    [23]: (GTM+10:00) 关岛
    [24]: (GTM+11:00) 所罗门群岛
    [25]: (GTM+12:00) 斐济
    [26]: (GTM+13:00) 努库阿勒法
    [27]: (GTM+14:00) 基里巴斯
    请选择时区 [21]:
    
    安装类型:
    1 典型安装							# 服务器、客户端、驱动、用户手册、数据库服务
    2 服务器							# 服务器、驱动、用户手册、数据库服务
    3 客户端							# 客户端、驱动、用户手册
    4 自定义							# 根据用户需要勾选组件,可以是服务器、客户端、驱动、用户手 册、数据库服务中的任意组合
    请选择安装类型的数字序号 [1 典型安装]:1
    所需空间: 2310M
    
    请选择安装目录 [/home/dmdba/dmdbms]:/opt/dmdbms	# 指定安装路径
    可用空间: 43G
    是否确认安装路径(/opt/dmdbms)? (Y/y:是 N/n:否)  [Y/y]:y
    
    安装前小结
    安装位置: /opt/dmdbms
    所需空间: 2310M
    可用空间: 43G
    版本信息: 
    有效日期: 
    安装类型: 典型安装
    是否确认安装? (Y/y:是 N/n:否):y					# 最后确认是否安装
    2024-06-04 13:51:13 
    [INFO] 安装达梦数据库...
    2024-06-04 13:51:13 
    [INFO] 安装 基础 模块...
    2024-06-04 13:51:17 
    [INFO] 安装 服务器 模块...
    2024-06-04 13:51:17 
    [INFO] 安装 客户端 模块...
    2024-06-04 13:51:19 
    [INFO] 安装 驱动 模块...
    2024-06-04 13:51:20 
    [INFO] 安装 手册 模块...
    2024-06-04 13:51:20 
    [INFO] 安装 服务 模块...
    2024-06-04 13:51:21 
    [INFO] 移动日志文件。
    2024-06-04 13:51:22 
    [INFO] 安装达梦数据库完成。
    
    请以root系统用户执行命令:
    /opt/dmdbms/script/root/root_installer.sh			# 切换到root用户,执行该命令
    
    安装结束
  • 初始化数据库(三个节点上都操作)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    
    # 切换到 dmdba 用户
    su - dmdba
    
    # 进入安装目录
    cd /opt/dmdbms/bin
    
    # 初始化
    ./dminit PATH=/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=0 CHARSET=1 DB_NAME=CHEN INSTANCE_NAME=DB_1_105 PORT_NUM=5236 TIME_ZONE=+08:00 LOG_SIZE=2048 SYSDBA_PWD=SYSDBA
    # PAGE_SIZE:页大小为 32 KB
    # EXTENT_SIZE:簇大小为 32 KB
    # CASE_SENSITIVE:大小写是否敏感,1 或 Y 为敏感,0 或 N 为不敏感
    # CHARSET:字符集为 utf_8
    # DB_NAME:数据库名为 CHEN
    # INSTANCE_NAME:实例名为 DB_1_105
    # PORT_NUM:端口为 5236
    1
    
    ./dminit PATH=/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=0 CHARSET=1 DB_NAME=CHEN INSTANCE_NAME=DB_1_107 PORT_NUM=5236 TIME_ZONE=+08:00 LOG_SIZE=2048 SYSDBA_PWD=SYSDBA
    1
    
    ./dminit PATH=/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=0 CHARSET=1 DB_NAME=CHEN INSTANCE_NAME=DB_1_108 PORT_NUM=5236 TIME_ZONE=+08:00 LOG_SIZE=2048 SYSDBA_PWD=SYSDBA
  • 注册服务(三个节点上都操作)

    1
    2
    3
    4
    
    # 切换回 root 用户
    cd /opt/dmdbms/script/root/
    
    ./dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /dmdata/CHEN/dm.ini
  • 启动、停止数据库(三个节点上都操作)

    1
    2
    3
    
    [root@db_1_105 ~]# systemctl start DmServiceDMSERVER
    [root@db_1_105 ~]# systemctl status DmServiceDMSERVER
    [root@db_1_105 ~]# systemctl stop DmServiceDMSERVER
  • 验证数据库是否可用

    切换到 dmdba 用户su - dmdba,并进入到安装目录下cd /opt/dmdbms/bin

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    
    [dmdba@db_1_105 bin]$ ./disql SYSDBA/SYSDBA
    
    服务器[LOCALHOST:5236]:处于普通打开状态
    登录使用时间 : 15.151(ms)
    disql V8
    SQL> select name from v$database;
    
    行号     name
    ---------- ----
    1          CHEN
    
    已用时间: 3.797(毫秒). 执行号:64501.
    SQL>
  • 达梦更新 key 文件

    1、将 key 文件上传到达梦安装路径的 bin 目录下,重命名为 dm.key

    2、登录数据库查看 key 过期时间

    1
    
    select expired_date from V$license;

    3、更新过期时间

    1
    2
    3
    
    方法一:重启数据库
    方法二:无需重启数据库,执行函数生效
    sp_load_lic_info()

    4、重新查看过期时间

搭建主从

  • 备份主节点文件

    1
    2
    3
    4
    5
    6
    7
    
    # 关闭数据库进程,进入备份工具
    su - dmdba
    cd /opt/dmdbms/bin
    ./dmrman
    
    # 备份
    BACKUP DATABASE '/dmdata/CHEN/dm.ini' FULL TO BACKUP_FILE_20249693 BACKUPSET '/dmdata/CHEN/bak/BACKUP_FILE_20240603';
  • 把备份文件同步到从节点

    1
    2
    3
    
    scp -r /dmdata/CHEN/bak/BACKUP_FILE_20240603 dmdba@192.168.1.107:/dmdata/CHEN/bak/
    
    scp -r /dmdata/CHEN/bak/BACKUP_FILE_20240603 dmdba@192.168.1.108:/dmdata/CHEN/bak/
  • 从节点执行数据还原(从节点不需要启动)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    
    su - dmdba
    cd /opt/dmdbms/bin/
    
    # 启动 DMAP 服务
    ./DmAPService start
    
    # 命令1
    #格式:./dmrman CTLSTMT="RESTORE DATABASE '改成自己对应数据库的dm.ini具体路径' FROM BACKUPSET '改成主节点备份文件夹路径'"
    ./dmrman CTLSTMT="RESTORE DATABASE '/dmdata/CHEN/dm.ini' FROM BACKUPSET '/dmdata/CHEN/bak/BACKUP_FILE_20240603'"
    
    #命令2
    #格式:./dmrman CTLSTMT="RECOVER DATABASE '改成自己对应数据库的dm.ini具体路径' FROM BACKUPSET '改成主节点备份文件夹路径'"
    ./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/CHEN/dm.ini' FROM BACKUPSET '/dmdata/CHEN/bak/BACKUP_FILE_20240603'"
    
    #命令3
    #格式:./dmrman CTLSTMT="RECOVER DATABASE '改成自己对应数据库的dm.ini具体路径' UPDATE DB_MAGIC"
    ./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/CHEN/dm.ini' UPDATE DB_MAGIC"
  • 修改 dm.ini 配置文件

    • 修改主节点配置文件

      vim /dmdata/CHEN/dm.ini

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      
      INSTANCE_NAME = DB_1_105
      # 数据库端口号,可自定义
      PORT_NUM = 5236
      # 打开MAL系统
      MAL_INI = 1
      # 打开归档配置
      ARCH_INI = 1
      # 不允许手工方式修改实例模式/状态/OGUID
      ALTER_MODE_STATUS = 1
      # 不允许备库OFFLINE表空间
      ENABLE_OFFLINE_TS = 2
    • 修改从节点配置文件

      vim /dmdata/CHEN/dm.ini

      1
      2
      3
      4
      5
      6
      
      INSTANCE_NAME = DB1_107
      PORT_NUM = 5236
      MAL_INI = 1
      ARCH_INI = 1
      ALTER_MODE_STATUS = 1
      ENABLE_OFFLINE_TS = 2
    • 修改从节点配置文件

      vim /dmdata/CHEN/dm.ini

      1
      2
      3
      4
      5
      6
      
      INSTANCE_NAME = DB1_108
      PORT_NUM = 5236
      MAL_INI = 1
      ARCH_INI = 1
      ALTER_MODE_STATUS = 1
      ENABLE_OFFLINE_TS = 2
  • 配置 MAL 系统配置文件 dmmal.ini(三个节点的配置必须完全一致)

    • 主节点配置文件

      vim /dmdata/CHEN/dmmal.ini

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      
      # MAL链路检测时间间隔
      MAL_CHECK_INTERVAL = 5
      # 判定MAL链路断开的时间
      MAL_CONN_FAIL_INTERVAL = 5
      
      # 主节点
      [MAL_INST1]
      # 与dm.ini中的INSTANCE_NAME一致
      MAL_INST_NAME = DB_1_105
      # MAL系统监听TCP内部网络IP
      MAL_HOST  = 192.168.1.105
      # MAL系统监听TCP连接的端口
      MAL_PORT = 61141
      # 实例的对外服务IP地址
      MAL_INST_HOST  = 192.168.1.105
      # 与dm.ini中的PORT_NUM一致
      MAL_INST_PORT  = 5236
      # 实例对应的守护进程监听TCP端口
      MAL_DW_PORT = 52141
      MAL_INST_DW_PORT  = 33141
      
      # 从节点
      [MAL_INST2]
      MAL_INST_NAME = DB_1_107
      MAL_HOST = 192.168.1.107
      MAL_PORT = 61141
      MAL_INST_HOST = 192.168.1.107
      MAL_INST_PORT = 5236
      MAL_DW_PORT = 52141
      MAL_INST_DW_PORT  = 33141
      
      # 从节点
      [MAL_INST3]
      MAL_INST_NAME = DB_1_108
      MAL_HOST = 192.168.1.108
      MAL_PORT = 61141
      MAL_INST_HOST = 192.168.1.108
      MAL_INST_PORT = 5236
      MAL_DW_PORT = 52141
      MAL_INST_DW_PORT  = 33141
  • 配置归档配置文件

    • 主节点(192.168.1.105)配置文件

      vim /dmdata/CHEN/dmarch.ini

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      
      [ARCHIVE_REALTIME2]
      # 存档类型:实时
      ARCH_TYPE = REALTIME
      # 备份目标:此处填写从节点的实例名称,对应从节的dm.ini中的INSTANCE_NAME一致
      ARCH_DEST = DB_1_107
      
      [ARCHIVE_REALTIME3]
      # 存档类型:实时
      ARCH_TYPE = REALTIME
      # 备份目标:此处填写从节点的实例名称,对应从节的dm.ini中的INSTANCE_NAME一致
      ARCH_DEST = DB_1_108
      
      [ARCHIVE_LOCAL1]
      # 存档类型:本地。 指当前的节点
      ARCH_TYPE = LOCAL
      # 本地归档文件存放路径
      ARCH_DEST = /dmdata/CHEN/arch
      # 存档文件大小
      ARCH_FILE_SIZE = 1024
      # 存档最小占用空间
      ARCH_SPACE_LIMIT = 71680
    • 从节点(192.168.1.107)配置文件

      在 dm.ini 同级目录下创建存放实时存档备份的目录 arch

      vim /dmdata/CHEN/dmarch.ini

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      
      [ARCHIVE_REALTIME1]
      # 存档类型:实时
      ARCH_TYPE = REALTIME
      # 备份目标:此处填写从节点的实例名称,对应从节的dm.ini中的INSTANCE_NAME一致
      ARCH_DEST = DB_1_105
      
      [ARCHIVE_REALTIME3]
      # 存档类型:实时
      ARCH_TYPE = REALTIME
      # 备份目标:此处填写从节点的实例名称,对应从节的dm.ini中的INSTANCE_NAME一致
      ARCH_DEST = DB_1_108
      
      [ARCHIVE_LOCAL1]
      # 存档类型:本地。 指当前的节点
      ARCH_TYPE = LOCAL
      # 本地归档文件存放路径
      ARCH_DEST = /dmdata/CHEN/arch
      # 存档文件大小
      ARCH_FILE_SIZE = 1024
      # 存档最小占用空间
      ARCH_SPACE_LIMIT = 71680
    • 从节点(192.168.1.108)配置文件

      vim /dmdata/CHEN/dmarch.ini

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      
      [ARCHIVE_REALTIME1]
      # 存档类型:实时
      ARCH_TYPE = REALTIME
      # 备份目标:此处填写从节点的实例名称,对应从节的dm.ini中的INSTANCE_NAME一致
      ARCH_DEST = DB_1_105
      
      [ARCHIVE_REALTIME2]
      # 存档类型:实时
      ARCH_TYPE = REALTIME
      # 备份目标:此处填写从节点的实例名称,对应从节的dm.ini中的INSTANCE_NAME一致
      ARCH_DEST = DB_1_107
      
      [ARCHIVE_LOCAL1]
      # 存档类型:本地。 指当前的节点
      ARCH_TYPE = LOCAL
      # 本地归档文件存放路径
      ARCH_DEST = /dmdata/CHEN/arch
      # 存档文件大小
      ARCH_FILE_SIZE = 1024
      # 存档最小占用空间
      ARCH_SPACE_LIMIT = 71680
  • 配置守护进程(三个节点的配置必须完全一致)

    • 主节点配置

      vim /dmdata/CHEN/dmwatcher.ini

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      
      [GRP1]
      # 守护进程类型:GLOBAL 
      DW_TYPE = GLOBAL
      # 模式:自动
      DW_MODE = AUTO
      #远程守护进程故障认定时间
      DW_ERROR_TIME = 60
      #主库守护进程启动恢复的间隔时间
      INST_RECOVER_TIME = 60
      #本地实例故障认定时间
      INST_ERROR_TIME = 10
      # 实例OGUID端口号,其他配置文件中用到
      INST_OGUID = 453332
      # 当前节点实例dm.ini文件路径
      INST_INI = /dmdata/CHEN/dm.ini
      #打开实例的自动启动功能
      INST_AUTO_RESTART = 1
      # 当前节点达梦安装路径中bin目录下的dmserver
      INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver
      #指定主库发送日志到备库的时间阀值,默认关闭
      RLOG_SEND_THRESHOLD = 0
      #指定备库重演日志的时间阀值,默认关闭
      RLOG_APPLY_THRESHOLD = 0
  • 配置 sqllog.ini(三个节点配置一样)

    vim /dmdata/CHEN/sqllog.ini

    1
    2
    3
    4
    5
    6
    7
    8
    
    [SLOG_ALL]
    FILE_NUM= 20
    SWITCH_MODE= 2
    SWITCH_LIMIT= 512
    ASYNC_FLUSH= 1
    FILE_PATH= /dmdata/CHEN/sqllog/
    SQL_TRACE_MASK= 2:3:22:25:28
    MIN_EXEC_TIME= 100
  • 启动主从库

    • 操作主库

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      
      # 先停止 DmServiceDMSERVER 服务
      systemctl stop DmServiceDMSERVER
      
      # 启动主库
      cd /opt/dmdbms/bin
      ./dmserver /dmdata/CHEN/dm.ini mount
      
      # 登录主库,设置 OGUID 值,主库修改为 Primary 模式
      ./disql SYSDBA/SYSDBA
      
      sp_set_oguid(453332);       # 主备库都修改oguid,对应dmwatcher.ini 文件中的INST_OGUID的配置值
      alter database primary;      				# 主库修改数据库模式为primary
      SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);		# 改回原模式状态
    • 操作从库

       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      
      # 先停止 DmServiceDMSERVER 服务
      systemctl stop DmServiceDMSERVER
      
      # 启动从库
      cd /opt/dmdbms/bin
      ./dmserver /dmdata/CHEN/dm.ini mount
      
      # 登录从库,设置 OGUID 值,模式修改为 Standby
      ./disql SYSDBA/SYSDBA
      
      sp_set_oguid(453332);
      alter database standby;     		# 备库修改数据库模式为standby
      SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
  • 配置监视器

    监视器可以配置在主节点或从节点上,只要节点上有达梦数据库实例即可。

    vim /dmdata/CHEN/dmmonitor.ini

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    # 确认监视器模式,0:非确认(故障手切) 1:确认(故障自切)
    MON_DW_CONFIRM = 1
    # 监视器日志文件存放路径
    MON_LOG_PATH = /opt/dmdbms/log
    # 每隔60s定时记录系统信息到日志文件
    MON_LOG_INTERVAL = 60
    # 单个日志文件大小,单位 MB
    MON_LOG_FILE_SIZE = 32
    # 日志上限,单位 MB
    MON_LOG_SPACE_LIMIT = 2048
    [GRP1]
    # 组GRP1的唯一OGUID值
    MON_INST_OGUID = 453332
    
    # 以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置
    # IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
    MON_DW_IP = 192.168.1.105:52141
    MON_DW_IP = 192.168.1.107:52141
    MON_DW_IP = 192.168.1.108:52141

    在 dm.ini 同级目录下新建文件 dmmonitor_manual.ini,该文件为非确认监视器的配置文件,主要用于平常运维中监控集群状态、手动切换主从节点等

    vim /dmdata/CHEN/dmmonitor_manual.ini

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    
    # 非确认监视器,手动切换主从节点
    MON_DW_CONFIRM = 0 
    # 监视器日志文件存放路径
    MON_LOG_PATH = /opt/dmdbms/log
    MON_LOG_INTERVAL = 60 
    MON_LOG_FILE_SIZE = 32
    MON_LOG_SPACE_LIMIT = 2948
    [GRP1] 
    # 对应dmwatcher.ini中的INST_OGUID
    MON_INST_OGUID = 453332
    # 配置节点mal系统的通讯地址
    # 格式:dmmal.ini文件中的所有MAL_INST  MAL_INST_HOST:MAL_DW_PORT
    MON_DW_IP = 192.168.1.105:52141
    MON_DW_IP = 192.168.1.107:52141
    MON_DW_IP = 192.168.1.108:52141

    配置好监视器后,启动主从守护进程

    1
    2
    3
    4
    5
    6
    7
    
    # 主
    cd /opt/dmdbms/bin
    ./dmwatcher /dmdata/CHEN/dmwatcher.ini
    
    # 从
    cd /opt/dmdbms/bin
    ./dmwatcher /dmdata/CHEN/dmwatcher.ini

    启动监视器

    1
    2
    
    cd /opt/dmdbms/bin
    ./dmmonitor /dmdata/CHEN/dmmonitor.ini
  • 注册服务

    以上启动方式均为前台启动,主要用于验证配置,配置没问题后,需要将实例、守护进程、监视器注册为系统服务。

    切换到 root 用户,到 /data/install/script/root/ 目录下,执行

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    
    # 注册守护进程服务(主备都执行)
    ./dm_service_installer.sh -t dmwatcher -p DM_1_105 -watcher_ini /dmdata/CHEN/dmwatcher.ini
    
    ./dm_service_installer.sh -t dmwatcher -p DM_1_107 -watcher_ini /dmdata/CHEN/dmwatcher.ini
    
    ./dm_service_installer.sh -t dmwatcher -p DB_1_108 -watcher_ini /dmdata/CHEN/dmwatcher.ini
    
    # 注册数据库实例服务(之前已经做过,此处不需要注册)
    ./dm_service_installer.sh -t dmserver -dm_ini /dmdata/CHEN/dm.ini -p DB_1_105
    
    ./dm_service_installer.sh -t dmserver -dm_ini /dmdata/CHEN/dm.ini -p DB_1_107
    
    ./dm_service_installer.sh -t dmserver -dm_ini /dmdata/CHEN/dm.ini -p DB_1_108
    
    # 注册监视器服务(只需要在监视器服务器上执行)
    ./dm_service_installer.sh -t dmmonitor -p confirm -monitor_ini /dmdata/CHEN/dmmonitor.ini

    以服务方式启动

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    # 启动数据库实例
    # 主:systemctl start DmServiceDMSERVER
    # 备:systemctl start DmServiceDMSERVER
    
    # 启动守护进程
    主:systemctl start DmWatcherServiceDB_1_105
    备:systemctl start DmWatcherServiceDB_1_107
    备:systemctl start DmWatcherServiceDB_1_108
    
    # 启动监视器
    systemctl  start DmMonitorServiceconfirm
  • 重启集群

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    
    # 启动主库实例
    systemctl start DmServiceDMSERVER
    
    # 启动备库实例
    systemctl start DmServiceDMSERVER
    
    # 启动主库守护进程
    systemctl start DmWatcherServiceDB_1_105
    
    # 启动备库守护进程
    systemctl start DmWatcherServiceDB_1_107
    
    # 启动监视器
    systemctl start DmMonitorServiceconfirm
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    
    # 停止监视器
    systemctl stop DmMonitorServiceconfirm
    
    # 停止备库守护进程
    systemctl stop DmWatcherServiceDB_1_107
    
    # 停止主库守护进程
    systemctl stop DmWatcherServiceDB_1_105
    
    # 停止备库实例
    systemctl stop DmServiceDMSERVER
    
    # 停止主库实例
    systemctl stop DmServiceDMSERVER
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
    # 关闭确认监视器
    systemctl stop DmMonitorServiceconfirm
    
    # 关闭主库守护进程
    systemctl stop DmWatcherServiceDB_1_105
    
    # 关闭主库实例
    systemctl stop DmServiceDMSERVER
    
    # 关闭备库守护进程
    systemctl stop DmWatcherServiceDB_1_107
    
    # 关闭备库实例
    systemctl stop DmServiceDMSERVER
    
    
    # 启动备库守护进程
    systemctl start DmWatcherServiceDB_1_107
    
    # 启动备库实例
    systemctl start DmServiceDMSERVER
    
    # 启动主库守护进程
    systemctl start DmWatcherServiceDB_1_105
    
    # 启动主库实例
    systemctl start DmServiceDMSERVER
    
    
    # 启动确认监视器
    systemctl start DmMonitorServiceconfirm
  • 卸载服务(使用root用户)

    1
    2
    3
    4
    5
    6
    7
    
    cd /opt/dmdbms/script/root/
    
    ./dm_service_uninstaller.sh -n DmMonitorServiceconfirm
    ./dm_service_uninstaller.sh -n DmWatcherServiceDB_1_105
    ./dm_service_uninstaller.sh -n DmServiceDMSERVER
    ./dm_service_uninstaller.sh -n DmWatcherServiceDB_1_107
    ./dm_service_uninstaller.sh -n DmServiceDMSERVER

查看主从节点

  • 进入非确认监视器

    1
    2
    3
    
    su - dmdba
    cd /opt/dmdbms/bin
    ./dmmonitor /dmdata/CHEN/dmmonitor_manual.ini
  • 启动非确认监视器后即可查看当前集群信息

    image-20240604161024531

  • 在非确认监视器中输入 tip 命令

    image-20240604161205076

  • 在非确认监视器中输入 show 命令

    image-20240604161405605

手动切换主从节点

  • 登录非确认监视器

    image-20240604161601236

  • 查看可以切换到主节点的数据库

    image-20240604161718950

    GRP1 是组名,可以查看监视器配置文件

  • 主从切换

    把主节点切换到 DB_1_108 上

    image-20240604161919178

达梦数据库更改数据目录和归档目录

  • 目录结构

    1
    2
    3
    4
    5
    6
    7
    
    # 数据目录
    旧目录:/data/dmdbms/ZYZQ/
    新目录:/dmdata/ZYZQ/
    
    # 归档目录
    旧目录:/data/dmdbms/ZYZQ/arch
    新目录:/dmarch
  • 创建目录

    1
    2
    
    mkdir /dmdata
    chown -R dmdba.dmdba /dmdata/
  • 停止数据库服务

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    
    # 关闭监视器
    systemctl  stop DmMonitorServiceconfirm
    
    # 先关闭 主库守护进程
    systemctl stop DmWatcherDAMENG1
    
    # 关闭 备库守护进程
    systemctl stop DmWatcherDAMENG2
    
    # 关闭 主库实例
    systemctl stop DmServiceDMSERVER
    
    # 关闭 备库实例
    systemctl stop DmServiceDMSERVER
  • 拷贝数据文件

    1
    2
    3
    4
    5
    6
    
    # 切换用户
    su - dmdba
    
    # 把旧目录数据文件拷贝到新目录下
    cp -r /data/dmdbms/ZYZQ /dmdata/
    chown -R dmdba.dmdba /dmdata/
  • 修改 dm.ini 配置文件中的路径

    1
    2
    3
    4
    
    # 切换到新目录下
    cd /dmdata/ZYZQ/
    
    vim dm.ini

    alt text

  • 将控制文件转化为txt文件

    1
    2
    3
    4
    5
    6
    
    su - dmdba
    cd /opt/dmdbms/bin
    ./dmctlcvt TYPE=1 SRC=/data/dmdbms/ZYZQ/dm.ctl DEST=/dmdata/ZYZQ/dmctl.txt
    
    # 编译上面生成的txt文件,把里面所有的原路径都改成现在的新路径,并重新生成控制文件
    ./dmctlcvt TYPE=2 SRC=/dmdata/ZYZQ/dmctl.txt DEST=/dmdata/ZYZQ/dm.ctl
  • 修改其他配置文件中的路径

    1
    2
    
    vim /dmdata/ZYZQ/dmarch.ini
    vim /dmdata/ZYZQ/dmwatcher.ini

    alt text

    alt text

  • 删除启动脚本

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    cd /opt/dmdbms/script/root/
    
    # 删除启动实例脚本
    ./dm_service_uninstaller.sh -n DmServiceDMSERVER
    
    # 删除启动守护进程脚本
    ./dm_service_uninstaller.sh -n DmWatcherServiceDAMENG1
    
    # 删除监视器脚本
    ./dm_service_uninstaller.sh -n DmServiceGRP1
  • 重新创建启动脚本

    1
    2
    3
    4
    5
    6
    7
    
    cd /opt/dmdbms/script/root/
    
    ./dm_service_installer.sh -t dmserver -dm_ini /dmdata/ZYZQ/dm.ini -p DMSERVER
    
    ./dm_service_installer.sh -t dmwatcher -p DAMENG1 -watcher_ini /dmdata/ZYZQ/dmwatcher.ini
    
    ./dm_service_installer.sh -t dmmonitor -p GRP1 -monitor_ini /dmdata/ZYZQ/dmmonitor_GRP1.ini
  • 重启数据库

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    
    # 启动主库实例
    systemctl start DmServiceDMSERVER
    
    # 启动备库实例
    systemctl start DmServiceDMSERVER
    
    # 启动主库守护进程
    systemctl start DmWatcherDAMENG1
    
    # 启动备库守护进程
    systemctl start DmWatcherDAMENG2
    
    # 启动监视器
    systemctl  start DmMonitorServiceGRP1