达梦数据库
达梦数据库DM8安装流程
创建达梦数据库实例
达梦数据库实例优化与配置
模式和用户及库之间的概念理解
常见数据库运维问题
达梦数据库日常运维指令
达梦8主从集群同步模式部署测试
客户端连接达梦数据库的方式(dm_svc)
删除达梦数据库实例
达梦数据库disql操作存储过程
本文档使用 MrDoc 发布
-
+
home page
达梦8主从集群同步模式部署测试
# 一、安装前准备 >部署环境 操作系统:银河麒麟 高级服务器v10 数据库版本: 达梦DM8数据库 主机环境:所有主机均在同一网段下通过交换机直连的纯内网环境 ## 1.1 集群规划 | 配置项 | Master 机器 | Slave 机器 | |------------|-------------------|-------------------| | 业务 IP | 192.168.88.217 | 192.168.88.219 | | 心跳 IP | 192.168.88.217 | 192.168.88.219 | | 实例名 | matrial_01 | material_02 | | 实例端口 | 3306 | 3306 | | MAL 端口 | 5336 | 5336 | | MAL 守护进程端口 | 5436 | 5436 | | 守护进程端口 | 5536 | 5536 | | OGUID | 45331 | 45331 | | 守护组 | GRP1 | GRP1 | | 安装目录 | /data/dm8server/basedir | /data/dm8server/basedir | | 实例目录 | /data/dm8server/databases/material | /data/dm8server/databases/material | | 归档上限 | 51200 | 51200 | | 配置项 | 确认监视器 | | -------- | ------- | | 心跳 IP |192.168.88.152 | | 安装目录 | /data/dm8server/basedir | ## 1.2 集群架构 搭建的主备集群架构如下图: ![](/media/202304/2023-04-07_190526_8274140.6587372934693472.png) 主机部署和目录配置如下: ``` [root@localhost ~]# tree /data/dm8server /data/dm8server ├── logs-archive // 存储目录:归档日志 ├── logs-sql // 存储目录:SQL跟踪日志 ├── databases // 存储目录:数据库总目录 | ├──material // 存储目录:数据库数据 │ | ├── backup // 存储目录:备份数据 │ | ├── dmarch.ini // 配置文件:Redo日志归档配置 │ | ├── dm.ini // 配置文件:数据库主配置 │ | ├── dmmal.ini // 配置文件:MAL配置 │ | ├── dmwatcher.ini // 配置文件:守护进程配置 │ | ├── dmmonitor.ini // 配置文件:监视器配置 │ | └── sqllog.ini // 配置文件:SQL跟踪日志 └── basedir // 存储目录:数据库程序安装主目录 ├── bin // 存储目录:二进制程序 ├── log // 存储目录:程序运行日志 └── script // 存储目录:服务脚本 ``` ## 1.3 切换模式 故障切换方式说明 | 故障切换方式 | dmarch | dmwatcher | dmmonitor | 监视器要求 | |--------|--------------------|----------------|------------------|---------------------------------------------------------------------------------| | 故障手动切换 | ARCH_WAIT_APPLY=0 | DW_MODE=MANUAL | MON_DW_CONFIRM=0 | 1、手动切换:集群各节点的 bin 目录中,存放非确认监视器配置文件。 | | 故障自动切换 | ARCH_WAIT_APPLY= 1 | DW_MODE=AUTO | MON_DW_CONFIRM=1 | 1、手动切换:集群各节点的 bin 目录中,存放非确认监视器配置文件。2、自动切换:在确认监视器上(非集群节点)存放确认监视器配置文件,并注册后台自启服务。| - ARCH_WAIT_APPLY 参数: - 设置为 0:高性能模式 - 设置为 1:事务一致模式 - ARCH_WAIT_APPLY参数: - 故障手动切换: ARCH_WAIT_APPLY 只能为 0 - 故障自动切换: ARCH_WAIT_APPLY 可以为 0,也可以为 1 - ARCH_WAIT_APPLY参数:设置的判断依据为业务是否需要查询备机最新数据 - 需要:配置为 1(较大性能衰减) - 不需要:配置为 0 # 二、集群搭建 >注意⚠️ :主/从主机都需要关闭防火墙或者放行指定端口! 在Master/Slave主机防火墙上放行端口 ```bash firewall-cmd --add-port=3306/tcp --add-port=5336/tcp --add-port=5436/tcp --add-port=5536/tcp --permanent firewall-cmd --reload ``` ## 2.1 Master配置 - 初始化实例 ```bash # 先创建数据库存储目录,并授予权限(root用户) mkdir /data/dm8server/databases chown dmdba.dmdba /data/dm8server/databases -R # 创建数据库实例(dmdba用户) /data/dm8server/basedir/bin/dminit PATH=/data/dm8server/databases \ EXTENT_SIZE=16 PAGE_SIZE=32 LOG_SIZE=2048 CASE_SENSITIVE=0 CHARSET=1 \ LENGTH_IN_CHAR=0 DB_NAME=material INSTANCE_NAME=material_01 PORT_NUM=3306 ``` - 启动服务 ```bash #(dmdba用户) [dmdba@localhost ~]$ /data/dm8server/basedir/bin/DmServiceMaterial_01 start ``` - 开启归档 ```bash # (dmdba用户) [dmdba@localhost ~]$ /data/dm8server/basedir/bin/disql SYSDBA/SYSDBA@localhost:3306 ALTER DATABASE MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE ADD ARCHIVELOG 'DEST=/data/dm8server/logs-archive, TYPE=LOCAL, FILE_SIZE=2048, SPACE_LIMIT=102400'; ALTER DATABASE OPEN; ``` - 备份数据 ```bash [dmdba@localhost ~]$ /data/dm8server/basedir/bin/disql SYSDBA/SYSDBA@localhost:3306 BACKUP DATABASE BACKUPSET '/data/dm8server/databases/material/backup/BACKUP_FILE'; ``` - 拷贝备份文件 ``` # 拷贝备份文件到 B 机器 [dmdba@localhost ~]$ scp -r /data/dm8server/databases/material/backup/BACKUP_FILE dmdba@192.168.88.219:/data/dm8server/databases/material/backup/BACKUP_FILE ``` - 关闭前台实例服务 ``` #(dmdba用户) [dmdba@localhost ~]$ /data/dm8server/basedir/bin/DmServiceMaterial_01 stop ``` - 修改dm.ini配置 ```bash # 配置参数 PORT_NUM=3306 #数据库实例监听端口 RLOG_SEND_APPLY_MON=64 #统计最近 64 次的日志重演信息 DW_INACTIVE_INTERVAL=60 #接收守护进程消息超时时间 ALTER_MODE_STATUS=0 #不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS=2 #不允许备库 OFFLINE 表空间 MAL_INI=1 #打开 MAL 系统 # 更新文件 [root@localhost material]# cd /data/dm8server/databases/material sed -i "s/^\s*PORT_NUM\s*=.*#/ PORT_NUM = $PORT_NUM #/g" dm.ini sed -i "s/^\s*RLOG_SEND_APPLY_MON\s*=.*#/ RLOG_SEND_APPLY_MON = $RLOG_SEND_APPLY_MON #/g" dm.ini sed -i "s/^\s*DW_INACTIVE_INTERVAL\s*=.*#/ DW_INACTIVE_INTERVAL = $DW_INACTIVE_INTERVAL #/g" dm.ini sed -i "s/^\s*ALTER_MODE_STATUS\s*=.*#/ ALTER_MODE_STATUS = $ALTER_MODE_STATUS #/g" dm.ini sed -i "s/^\s*ENABLE_OFFLINE_TS\s*=.*#/ ENABLE_OFFLINE_TS = $ENABLE_OFFLINE_TS #/g" dm.ini sed -i "s/^\s*MAL_INI\s*=.*#/ MAL_INI = $MAL_INI #/g" dm.ini # 查看修改后参数 cat dm.ini|grep -Ei 'PORT_NUM|DW_INACTIVE_INTERVAL|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|RLOG_SEND_APPLY_MON'|grep -Ev 'DCRS_PORT_NUM|AP_PORT_NUM' ``` - 修改dmarch.ini配置 ``` [root@localhost material]# cd /data/dm8server/databases/material [root@localhost material]# cat dmarch.ini ARCH_WAIT_APPLY = 0 #0:高性能(故障手切) 1:事务一致(故障自切) [ARCHIVE_LOCAL] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /data/dm8server/logs-archive/ #本地归档存放路径 ARCH_FILE_SIZE = 1024 #单个归档大小,单位 MB ARCH_SPACE_LIMIT = 51200 #归档上限,单位 MB [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME #新增:实时归档类型 ARCH_DEST = material_02 #新增:实时归档目标实例名(对端) ``` - 创建 dmmal.ini ```bash [root@localhost material]# cd /data/dm8server/databases/material [root@localhost material]# cat dmmal.ini MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间 MAL_TEMP_PATH = /data/dm8server/tmp/maltemp #临时文件目录 MAL_BUF_SIZE = 512 #单个 MAL 缓存大小,单位 MB MAL_SYS_BUF_SIZE = 2048 #MAL 总大小限制,单位 MB MAL_COMPRESS_LEVEL = 0 #MAL 消息压缩等级,0 表示不压缩 [MAL_INST1] MAL_INST_NAME = material_01 #实例名,和 dm.ini 的 INSTANCE_NAME 一致 MAL_HOST = 192.168.88.217 #MAL 系统监听 TCP 连接的 IP 地址 MAL_PORT = 5336 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST = 192.168.88.217 #实例的对外服务 IP 地址 MAL_INST_PORT = 3306 #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致 MAL_DW_PORT = 5436 #实例对应的守护进程监听 TCP 连接的端口 MAL_INST_DW_PORT = 5536 #实例监听守护进程 TCP 连接的端口 [MAL_INST2] MAL_INST_NAME = material_02 #由于本示例中主从实例名称一致,所以出现主从相同情况 MAL_HOST = 192.168.88.219 MAL_PORT = 5336 MAL_INST_HOST = 192.168.88.219 MAL_INST_PORT = 3306 MAL_DW_PORT = 5436 MAL_INST_DW_PORT = 5536 ``` - 创建 dmwatcher.ini ``` [root@localhost material]# cd /data/dm8server/databases/material [root@localhost material]# cat dmwatcher.ini [GRP1] DW_TYPE = GLOBAL #全局守护类型 DW_MODE = MANUAL #MANUAL:故障手切 AUTO:故障自切 DW_ERROR_TIME = 20 #远程守护进程故障认定时间 INST_ERROR_TIME = 20 #本地实例故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_OGUID = 45331 #守护系统唯一 OGUID 值 INST_INI = /data/dm8server/databases/material/dm.ini #dm.ini 文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /data/dm8server/basedir/bin/dmserver #命令行方式启动 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭 ``` - 注册服务 ```bash [root@localhost material]# /data/dm8server/basedir/script/root/dm_service_installer.sh -t dmserver -p Material_01 -dm_ini /data/dm8server/databases/material/dm.ini -m mount [root@localhost material]# [root@localhost material]# /data/dm8server/basedir/script/root/dm_service_installer.sh -t dmwatcher -p WatcherMaterial_01 -watcher_ini /data/dm8server/databases/material/dmwatcher.ini ``` ## 2.2 Slave配置 - 初始化实例 ```bash # 先创建数据库存储目录,并授予权限(root用户) mkdir /data/dm8server/databases chown dmdba.dmdba /data/dm8server/databases -R # 创建数据库实例(dmdba用户) /data/dm8server/basedir/bin/dminit PATH=/data/dm8server/databases \ EXTENT_SIZE=16 PAGE_SIZE=32 LOG_SIZE=2048 CASE_SENSITIVE=0 CHARSET=1 \ LENGTH_IN_CHAR=0 DB_NAME=material INSTANCE_NAME=material_02 PORT_NUM=3306 ``` - 恢复数据 ```bash [dmdba@localhost ~]$ /data/dm8server/basedir/bin/dmrman CTLSTMT="RESTORE DATABASE '/data/dm8server/databases/material/dm.ini' FROM BACKUPSET '/data/dm8server/databases/material/backup/BACKUP_FILE'" [dmdba@localhost ~]$ /data/dm8server/basedir/bin/dmrman CTLSTMT="RECOVER DATABASE '/data/dm8server/databases/material/dm.ini' FROM BACKUPSET '/data/dm8server/databases/material/backup/BACKUP_FILE'" [dmdba@localhost ~]$ /data/dm8server/basedir/bin/dmrman CTLSTMT="RECOVER DATABASE '/data/dm8server/databases/material/dm.ini' UPDATE DB_MAGIC" ``` - 配置dm.ini文件 在 Slave 机器上配置备库的实例名为 material_02,dm.ini 参数修改如下: ``` # 配置参数 #INSTANCE_NAME=material_02 #备库的实例名,已在初始化配置后无需配置 PORT_NUM=3306 #数据库实例监听端口 RLOG_SEND_APPLY_MON=64 #统计最近 64 次的日志重演信息 DW_INACTIVE_INTERVAL=60 #接收守护进程消息超时时间 ALTER_MODE_STATUS=0 #不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS=2 #不允许备库 OFFLINE 表空间 MAL_INI=1 #打开 MAL 系统 ARCH_INI=1 #打开归档配置 # 更新文件 [dmdba@localhost ~]$ cd /data/dm8server/databases/material sed -i "s/^\s*PORT_NUM\s*=.*#/ PORT_NUM = $PORT_NUM #/g" dm.ini sed -i "s/^\s*RLOG_SEND_APPLY_MON\s*=.*#/ RLOG_SEND_APPLY_MON = $RLOG_SEND_APPLY_MON #/g" dm.ini sed -i "s/^\s*DW_INACTIVE_INTERVAL\s*=.*#/ DW_INACTIVE_INTERVAL = $DW_INACTIVE_INTERVAL #/g" dm.ini sed -i "s/^\s*ALTER_MODE_STATUS\s*=.*#/ ALTER_MODE_STATUS = $ALTER_MODE_STATUS #/g" dm.ini sed -i "s/^\s*ENABLE_OFFLINE_TS\s*=.*#/ ENABLE_OFFLINE_TS = $ENABLE_OFFLINE_TS #/g" dm.ini sed -i "s/^\s*MAL_INI\s*=.*#/ MAL_INI = $MAL_INI #/g" dm.ini sed -i "s/^\s*ARCH_INI\s*=.*#/ ARCH_INI = $ARCH_INI #/g" dm.ini # 查看修改后参数 cat dm.ini|grep -Ei 'PORT_NUM|DW_INACTIVE_INTERVAL|ALTER_MODE_STATUS|ENABLE_OFFLINE_TS|MAL_INI|RLOG_SEND_APPLY_MON|ARCH_INI'|grep -Ev 'DCRS_PORT_NUM|AP_PORT_NUM' ``` - 新建dmarch.ini配置 ```bash [dmdba@localhost ~]$ cd /data/dm8server/databases/material/ [dmdba@localhost ~]$ cat dmarch.ini ARCH_WAIT_APPLY = 0 #0:高性能(故障手切) 1:事务一致(故障自切) [ARCHIVE_LOCAL] ARCH_TYPE = LOCAL #本地归档类型 ARCH_DEST = /data/dm8server/logs-archive/ #本地归档存放路径 ARCH_FILE_SIZE = 1024 #单个归档大小,单位 MB ARCH_SPACE_LIMIT = 51200 #归档上限,单位 MB [ARCHIVE_REALTIME1] ARCH_TYPE = REALTIME #实时归档类型 ARCH_DEST = material_01 #实时归档目标实例名(互为对端) ``` - 配置 dmmal.ini 文件 >提示:Slave机器里 `dmmal.ini`与 Master机器的 `dmmal.ini`配置完全相同 ```bash [root@localhost material]# cd /data/dm8server/databases/material [root@localhost material]# cat dmmal.ini MAL_CHECK_INTERVAL = 10 #MAL 链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间 MAL_TEMP_PATH = /data/dm8server/tmp/maltemp #临时文件目录 MAL_BUF_SIZE = 512 #单个 MAL 缓存大小,单位 MB MAL_SYS_BUF_SIZE = 2048 #MAL 总大小限制,单位 MB MAL_COMPRESS_LEVEL = 0 #MAL 消息压缩等级,0 表示不压缩 [MAL_INST1] MAL_INST_NAME = material_01 #实例名,和 dm.ini 的 INSTANCE_NAME 一致 MAL_HOST = 192.168.88.217 #MAL 系统监听 TCP 连接的 IP 地址 MAL_PORT = 5336 #MAL 系统监听 TCP 连接的端口 MAL_INST_HOST = 192.168.88.217 #实例的对外服务 IP 地址 MAL_INST_PORT = 3306 #实例对外服务端口,和 dm.ini 的 PORT_NUM 一致 MAL_DW_PORT = 5436 #实例对应的守护进程监听 TCP 连接的端口 MAL_INST_DW_PORT = 5536 #实例监听守护进程 TCP 连接的端口 [MAL_INST2] MAL_INST_NAME = material_02 #由于本示例中主从实例名称一致,所以出现主从相同情况 MAL_HOST = 192.168.88.219 MAL_PORT = 5336 MAL_INST_HOST = 192.168.88.219 MAL_INST_PORT = 3306 MAL_DW_PORT = 5436 MAL_INST_DW_PORT = 5536 ``` - 配置 dmwatcher.ini 文件 >提示:Slave机器里 `dmwatcher.ini`与 Master机器的 `dmwatcher.ini`配置完全相同 ```bash [root@localhost material]# cd /data/dm8server/databases/material [root@localhost material]# cat dmwatcher.ini [GRP1] DW_TYPE = GLOBAL #全局守护类型 DW_MODE = MANUAL #MANUAL:故障手切 AUTO:故障自切 DW_ERROR_TIME = 20 #远程守护进程故障认定时间 INST_ERROR_TIME = 20 #本地实例故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_OGUID = 45331 #守护系统唯一 OGUID 值 INST_INI = /data/dm8server/databases/material/dm.ini #dm.ini 文件路径 INST_AUTO_RESTART = 1 #打开实例的自动启动功能 INST_STARTUP_CMD = /data/dm8server/basedir/bin/dmserver #命令行方式启动 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭 ``` - 注册服务 ```BASH [root@localhost material]# /data/dm8server/basedir/script/root/dm_service_installer.sh -t dmserver -p Material_02 -dm_ini /data/dm8server/databases/material/dm.ini -m mount [root@localhost material]# [root@localhost material]# /data/dm8server/basedir/script/root/dm_service_installer.sh -t dmwatcher -p WatcherMaterial_02 -watcher_ini /data/dm8server/databases/material/dmwatcher.ini ``` ## 2.3 配置监视器 手动切换:集群各节点的 bin 目录中,存放非确认监视器配置文件。 自动切换:在确认监视器上(非集群节点),存放确认监视器配置文件,并注册后台自启服务。 - 创建 dmmonitor.ini ```bash [dmdba@localhost ~]$ cd /data/dm8server/basedir/bin [dmdba@localhost ~]$ cat dmmonitor.ini MON_DW_CONFIRM = 0 #0:非确认(故障手切) 1:确认(故障自切) MON_LOG_PATH = /data/dm8server/basedir/log #监视器日志文件存放路径 MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件 MON_LOG_FILE_SIZE = 1024 #单个日志大小,单位 MB MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB [GRP1] MON_INST_OGUID = 45331 #组 GRP1 的唯一 OGUID 值 MON_DW_IP = 192.168.88.217:5436 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT MON_DW_IP = 192.168.88.219:5436 ``` - 注册服务 ```bash [root@localhost ~]# /data/dm8server/basedir/script/root/dm_service_installer.sh -t dmmonitor -p MonitorMaterial -monitor_ini /data/dm8server/basedir/bin/dmmonitor.ini ``` - 监视器使用 ![](/media/202304/2023-04-08_115351_9279160.014628951581078131.png) | 命令 | 含义 | |----------------------------|-----------------------| | list | 查看守护进程的配置信息 | | show global info | 查看所有实例组的信息 | | tip | 查看系统当前运行状态 | | login | 登录监视器 | | logout | 退出登录 | | choose switchoverGRP1 | 主机正常:查看可切换为主机的实例列表 | | switchoverGRP1.实例名 | 主机正常:使用指定组的指定实例,切换为主机 | | choose takeoverGRP1 | 主机故障:查看可切换为主机的实例列表 | | takeoverGRP1.实例名 | 主机故障:使用指定组的指定实例,切换为主机 | | choose takeover force GRP1 | 强制切换:查看可切换为主机的实例列表 | | takeover force GRP1.实例名 | 强制切换:使用指定组的指定实例,切换为主机 | > 主机故障后,在备机执行 **`SELECT SF_DW_CHECK_TAKEOVER()`**; 【1:可接管;0:不可接管】。 # 三、 起停服务 ## 3.1 启动数据库 启动数据库并修改参数 - Master机器 ```bash [root@localhost ~]# systemctl start DmServiceMaterial_01.service ``` ```sql [root@localhost ~]# su - dmdba [dmdba@localhost ~]$ /data/dm8server/basedir/bin/disql SYSDBA/SYSDBA@localhost:3306 SQL> SP_SET_OGUID(45331); SQL> ALTER DATABASE PRIMARY; ``` - Slave机器 ```bash [root@localhost ~]# systemctl start DmServiceMaterial_02.service ``` ```sql [root@localhost ~]# su - dmdba [dmdba@localhost ~]$ /data/dm8server/basedir/bin/disql SYSDBA/SYSDBA@localhost:3306 SQL> SP_SET_OGUID(45331); SQL> ALTER DATABASE STANDBY; ``` ## 3.2 启动守护进程 - Master/Slave主机 ```bash # Master主机 [root@localhost ~]# systemctl start DmWatcherServiceWatcherMaterial_01.service # Slave主机 [root@localhost ~]# systemctl start DmWatcherServiceWatcherMaterial_02.service ``` - 启动监视器 ```bash # 监控主机 root@localhost ~]# systemctl start DmMonitorServiceMonitorMaterial.service ``` ## 3.3 停止数据库 停止数据库 - Master机器 ```bash [root@localhost ~]# systemctl stop DmServiceMaterial_01.service ``` - Slave机器 ```bash [root@localhost ~]# systemctl stop DmServiceMaterial_02.service ``` ## 3.4 停止守护进程 - Master/Slave主机 ```bash # Master主机 [root@localhost ~]# systemctl stop DmWatcherServiceWatcherMaterial_01.service # Slave主机 [root@localhost ~]# systemctl stop DmWatcherServiceWatcherMaterial_02.service ``` - 启动监视器 ```bash # 监控主机 root@localhost ~]# systemctl stop DmMonitorServiceMonitorMaterial.service ``` # 四、检验测试 ## 4.1 业务同步测试 - Master主机创建测试数据 ```bash [dmdba@localhost ~]$ /data/dm8server/basedir/bin/disql SYSDBA/SYSDBA@localhost:3306 ``` ```sql -- 创建表空间test01,存储文件到tablespace_test01.dbf,size最小为128MB create tablespace test01 datafile '/data/dm8server/databases/material/tablespace_test01.dbf' size 128 autoextend off; -- 创建表空间索引,存储文件到tablespace_test01_idx01.dbf,size最小为128MB create tablespace test01_idx datafile '/data/dm8server/databases/material/tablespace_test01_idx01.dbf' size 128 autoextend off; -- 创建用户,设置密码,指定默认表空间和默认表索引 create user "test01" identified by "test123456" default tablespace test01 default index tablespace test01_idx; -- 授权dba角色给用户 grant dba to test01; -- 查看文件存储路径 select PATH from v$datafile; -- 切换用户 conn test01/test123456@localhost:3306; -- 创建表 create table table_test01 (id int,name varchar(50),create_date date); -- 插入数据 insert into table_test01 values(1,'达梦','2023-04-05'); insert into table_test01 values(2,'达梦数据库','2023-04-06'); insert into table_test01 values(3,'DM','2023-04-07'); insert into table_test01 values(4,'DMDB','2023-04-08'); insert into table_test01 values(5,'DM8','2023-04-09'); -- 手动提交 commit; -- 查看表所有数据 select * from table_test01; -- 统计表行数 select count(*) from table_test01; -- 查看表对应的表空间名 select TABLE_NAME,TABLESPACE_NAME from user_tables where table_name='TABLE_TEST01'; ``` - Slave主机检验数据同步 ```bash [dmdba@localhost ~]$ /data/dm8server/basedir/bin/disql SYSDBA/SYSDBA@localhost:3306 ``` ```sql -- 查看文件存储路径 select PATH from v$datafile; -- 切换用户 conn test01/test123456@localhost:3306; -- 查看表所有数据 select * from table_test01; -- 统计表行数 select count(*) from table_test01; ``` 示例查询结果如下: ![](/media/202304/2023-04-08_132055_1308840.15951855588976394.png) ## 4.2 自动切换测试 - 正常状态查看 ```bash [dmdba@localhost ~]$ /data/dm8server/basedir/bin/dmmonitor # 查看命令 show ``` ![](/media/202304/2023-04-08_132317_1535740.3123434455660288.png) - 停止主库服务 ```bash [root@localhost ~]# kill -9 $(ps -aux|grep 'bin/dmserver'|grep -v grep|awk '{print $2}') ``` 停止后自动切换 ![](/media/202304/2023-04-08_133421_6588060.279512248675582.png) 停止后自动恢复 ![](/media/202304/2023-04-08_133438_5239090.5387843167388497.png) 当主数据库的网络出现故障或当端口无法正常连接时: - 确认监视器会自动将从库【MATERIAL_02】由`Standby`状态改为`Primary`状态 - 确认监视器会自动将主库【MATERIAL_01】由`Primary`状态改为`Standby`状态 ![](/media/202304/2023-04-08_134319_6421290.4821568385024202.png)
Nathan
April 8, 2023, 1:56 p.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
Markdown文件
PDF文件
Docx文件
share
link
type
password
Update password