1. 首页 > 国产数据库教程 > 达梦DM教程 > 正文

DM教程FG200-达梦数据库生产实战综合项目三

本文档介绍达梦数据库生产实战综合项目三,包括项目概述、项目需求分析、项目架构设计、项目实施规划、项目实施、项目测试、项目实战案例、项目故障处理实战案例等内容,适合进行达梦数据库生产实战综合项目的技术人员参考。

Part01-基础概念与理论知识

1.1 项目概述

项目背景:

  • 业务场景:某大型电商平台
  • 数据量:10TB
  • 并发量:100000 TPS
  • 可用性要求:99.9999%
项目目标:

  • 高可用:实现数据库高可用架构
  • 高性能:优化数据库性能
  • 高安全:保障数据库安全
  • 易运维:简化数据库运维

风哥提示:生产实战综合项目是检验DBA能力的重要方式,。

1.2 项目需求分析

功能需求:

  • 数据库部署:部署DM数据库集群
  • 数据迁移:迁移现有数据到DM数据库
  • 性能优化:优化数据库性能
  • 备份恢复:实现数据库备份和恢复
非功能需求:

  • 可用性:99.9999%
  • 性能:响应时间< 10ms
  • 安全性:数据加密、权限控制
  • 可扩展性:支持数据量增长

,项目需求分析是项目成功的关键。

Part02-生产环境规划与建议

2.1 项目架构设计

架构设计:

  • 数据库架构:DM DSC集群架构 + DM MPP集群架构
  • 存储架构:分布式存储 + 云存储
  • 网络架构:双网卡冗余 + 负载均衡 + CDN
  • 备份架构:本地备份 + 远程备份 + 云备份 + 异地容灾
硬件配置:

  • 服务器:10台服务器
  • CPU:64核
  • 内存:256GB
  • 存储:5TB SSD

风哥提示:

,根据业务需求设计合适的项目架构。

2.2 项目实施规划

实施步骤:

  • 步骤1:环境准备
  • 步骤2:数据库安装
  • 步骤3:集群配置
  • 步骤4:数据迁移
  • 步骤5:性能优化
  • 步骤6:备份恢复配置
  • 步骤7:监控告警配置
  • 步骤8:测试验收
时间规划:

  • 环境准备:3天
  • 数据库安装:3天
  • 集群配置:5天
  • 数据迁移:10天
  • 性能优化:5天
  • 备份恢复配置:3天
  • 监控告警配置:3天
  • 测试验收:5天

,合理规划项目实施时间保障项目按时完成。

学习交流加群风哥微信: itpux-com

Part03-生产环境项目实施方案

3.1 项目实施

实施步骤:

  • 步骤1:环境准备
  • 步骤2:数据库安装
  • 步骤3:集群配置
  • 步骤4:数据迁移
  • 步骤5:性能优化
  • 步骤6:备份恢复配置
  • 步骤7:监控告警配置

环境准备:

— 检查系统环境
[root@fgedu ~]# cat /etc/os-release
NAME=”Oracle Linux Server”
VERSION=”9.3″
— 检查硬件配置
[root@fgedu ~]# lscpu
Architecture: x86_64
CPU(s): 64
Model name: Intel(R) Xeon(R) Platinum 9282 CPU @ 2.60GHz
[root@fgedu ~]# free -h
total used free shared buff/cache available
Mem: 256Gi 2.0Gi 253Gi 100Mi 1.0Gi 254Gi
Swap: 64Gi 0B 64Gi
— 检查磁盘空间
[root@fgedu ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 5.0T 1.0T 4.0T 20% /
/dev/sdb1 10.0T 2.0T 8.0T 20% /dm/fgdata
— 配置操作系统参数
[root@fgedu ~]# vi /etc/sysctl.conf
kernel.shmmax = 274877906944
kernel.shmall = 67108864
kernel.sem = 250 32000 100 128
fs.file-max = 27262976 学习交流加群风哥QQ113257174
net.ipv4.ip_local_port_range = 9000 65535
net.core.rmem_default = 1048576
net.core.rmem_max = 16777216
net.core.wmem_default = 1048576
net.core.wmem_max = 4194304
[root@fgedu ~]# sysctl -p
— 配置用户限制
[root@fgedu ~]# vi /etc/security/limits.conf
dmdba soft nproc 262144
dmdba hard nproc 262144
dmdba soft nofile 262144
dmdba hard nofile 262144
— 创建用户和组
[root@fgedu ~]# groupadd dinstall
[root@fgedu ~]# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
[root@fgedu ~]# passwd dmdba
— 创建目录
[root@fgedu ~]# mkdir -p /dm/app
[root@fgedu ~]# mkdir -p /dm/fgdata
[root@fgedu ~]# chown -R dmdba:dinstall /dm

数据库安装:

— 上传安装文件
[root@fgedu ~]# cd /dm/app
[root@fgedu ~]# ls -lh
total 1.2G
-rw-r–r– 1 dmdba dinstall 1.2G Apr 9 10:00 dm8_20240409_x86_rh9_64.iso
— 挂载安装文件
[root@fgedu ~]# mount -o loop dm8_20240409_x86_rh9_64.iso /mnt
— 切换到dmdba用户
[root@fgedu ~]# su – dmdba
— 执行安装程序
[dmdba@fgedu ~]$ cd /mnt
[dmdba@fgedu ~]$ ./DMInstall.bin
— 安装步骤
— 步骤1:选择语言 – 选择”简体中文” – 点击”下一步”
— 步骤2:欢迎界面 – 点击”下一步”
— 步骤3:许可证协议 – 选择”接受” – 点击”下一步”
— 步骤4:安装类型 – 选择”典型安装” – 点击”下一步” 更多视频教程www.fgedu.net.cn
— 步骤5:安装路径 – 输入”/dm/app” – 点击”下一步”
— 步骤6:安装确认 – 点击”安装”
— 步骤7:安装完成 – 点击”完成”
— 配置环境变量
[dmdba@fgedu ~]$ vi ~/.bash_profile
export DM_HOME=/dm/app
export PATH=$DM_HOME/bin:$PATH
[dmdba@fgedu ~]$ source ~/.bash_profile

集群配置:

— 初始化数据库
[dmdba@fgedu ~]$ dminit path=/dm/fgdata db_name=fgedudb port_num=5236 page_size=16 extent_size=32 log_size=1024 case_sensitive=1 charset=1
— 创建数据库服务
[root@fgedu ~]# cd /dm/app/script/root
[root@fgedu ~]# ./dm_service_installer.sh -t dmserver -p fgedudb -dm_ini /dm/fgdata/fgedudb/dm.ini
— 启动数据库服务
[root@fgedu ~]# DmServicefgedudb start
— 查看数据库状态
[root@fgedu ~]# DmServicefgedudb status
— 状态输出
DmServicefgedudb (pid 12345) is running.
— 配置DSC集群
— 节点1配置
[dmdba@fgedu ~]$ vi /dm/fgdata/fgedudb/dm.ini
MAL_INI = 1
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
MAL_HOST_ADDR = 192.168.1.101
MAL_HOST_PORT = 5341
MAL_INST_NAME = fgedudb01
MAL_INST_HOST = 192.168.1.101
MAL_INST_PORT = 5236
— 节点2配置
[dmdba@fgedu ~]$ vi /dm/fgdata/fgedudb/dm.ini
MAL_INI = 1
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
MAL_HOST_ADDR = 192.168.1.102
MAL_HOST_PORT = 5341 更多学习教程公众号风哥教程itpux_com
MAL_INST_NAME = fgedudb02
MAL_INST_HOST = 192.168.1.102
MAL_INST_PORT = 5236
— 节点3配置
[dmdba@fgedu ~]$ vi /dm/fgdata/fgedudb/dm.ini
MAL_INI = 1
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
MAL_HOST_ADDR = 192.168.1.103
MAL_HOST_PORT = 5341
MAL_INST_NAME = fgedudb03
MAL_INST_HOST = 192.168.1.103
MAL_INST_PORT = 5236
— 节点4配置
[dmdba@fgedu ~]$ vi /dm/fgdata/fgedudb/dm.ini
MAL_INI = 1
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
MAL_HOST_ADDR = 192.168.1.104
MAL_HOST_PORT = 5341
MAL_INST_NAME = fgedudb04
MAL_INST_HOST = 192.168.1.104
MAL_INST_PORT = 5236
— 节点5配置
[dmdba@fgedu ~]$ vi /dm/fgdata/fgedudb/dm.ini
MAL_INI = 1
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
MAL_HOST_ADDR = 192.168.1.105
MAL_HOST_PORT = 5341 from DB视频:www.itpux.com
MAL_INST_NAME = fgedudb05
MAL_INST_HOST = 192.168.1.105
MAL_INST_PORT = 5236
— 重启数据库服务
[root@fgedu ~]# DmServicefgedudb restart

数据迁移:

— 导出源数据库数据
— 使用DTS工具导出数据
— 导入到DM数据库
[dmdba@fgedu ~]$ disql SYSDBA/SYSDBA
SQL> START /dm/app/data/fgedu_data.sql
— 查看数据
SQL> SELECT COUNT(*) FROM fgedu.fgedu_account;
— 查询结果
行号 COUNT(*)
———- ———-
1 20000000
— 验证数据一致性
SQL> SELECT COUNT(*) FROM fgedu.fgedu_account WHERE account_id IS NULL;
— 查询结果
行号 COUNT(*)
———- ———-
1 0

性能优化:

— 优化数据库参数
[dmdba@fgedu ~]$ disql SYSDBA/SYSDBA
SQL> ALTER SYSTEM SET ‘MAX_SESSIONS’ = 5000 SPFILE;
SQL> ALTER SYSTEM SET ‘MAX_OS_MEMORY’ = 0.9 SPFILE;
SQL> ALTER SYSTEM SET ‘BUFFER_POOLS’ = 16 SPFILE;
SQL> ALTER SYSTEM SET ‘BUFFER’ = 128 SPFILE;
— 创建索引
SQL> CREATE INDEX idx_fgedu_account_account_id ON fgedu.fgedu_account(account_id);
SQL> CREATE INDEX idx_fgedu_account_account_name ON fgedu.fgedu_account(account_name);
SQL> CREATE INDEX idx_fgedu_account_account_balance ON fgedu.fgedu_account(account_balance);
— 优化SQL语句
— 查看执行计划
SQL> EXPLAIN SELECT * FROM fgedu.fgedu_account WHERE account_id = 20000000;
— 执行计划
1 #NSET2: [0, 1, 0]
2 #PRJT2: [0, 1, 0]; exp_num(5), is_atom(FALSE)
3 #SLCT2: [0, 1, 0]; FGEDU.FGEDU_ACCOUNT.ACCOUNT_ID = 20000000
4 #BLKUP2: [0, 1, 0]; IDX_FGEDU_ACCOUNT_ACCOUNT_ID(FGEDU.FGEDU_ACCOUNT)
5 #SSEK2: [0, 1, 0]; scan_type(ASC), IDX_FGEDU_ACCOUNT_ACCOUNT_ID(FGEDU.FGEDU_ACCOUNT), scan_range[20000000,20000000]
— 收集统计信息
SQL> DBMS_STATS.GATHER_TABLE_STATS(‘FGEDU’, ‘FGEDU_ACCOUNT’);

备份恢复配置:

— 配置归档模式
[dmdba@fgedu ~]$ disql SYSDBA/SYSDBA
SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE ADD ARCHIVELOG ‘TYPE=LOCAL,DEST=/dm/arch,FILE_SIZE=4096,SPACE_LIMIT=40960’;
SQL> ALTER DATABASE OPEN;
— 配置备份策略
[dmdba@fgedu ~]$ vi /dm/app/script/backup.sh
#!/bin/bash
# backup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
DM_HOME=/dm/app
DMRMAN=$DM_HOME/bin/dmrman
BACKUP_DIR=/dm/backup
LOG_DIR=/dm/log
LOG_FILE=$LOG_DIR/backup_$(date +%Y%m%d).log
# 创建目录
mkdir -p $BACKUP_DIR
mkdir -p $LOG_DIR
# 记录日志
log() {
echo “[$(date ‘+%Y-%m-%d %H:%M:%S’)] $1” >> $LOG_FILE
}
# 全量备份
full_backup() {
log “开始全量备份”
$DMRMAN CTLFILE=”backup database full to fgedu_full_$1 backupset ‘$BACKUP_DIR/fgedu_full_$1′”
log “全量备份完成”
}
— 设置执行权限
[root@fgedu ~]# chmod +x /dm/app/script/backup.sh
— 配置定时任务
[root@fgedu ~]# crontab -e
0 2 * * 0 /dm/app/script/backup.sh full

监控告警配置:

— 部署Prometheus
[root@fgedu ~]# wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
[root@fgedu ~]# tar -zxvf prometheus-2.45.0.linux-amd64.tar.gz
[root@fgedu ~]# mv prometheus-2.45.0.linux-amd64 /usr/local/prometheus
[root@fgedu ~]# useradd -r -s /sbin/nologin prometheus
[root@fgedu ~]# chown -R prometheus:prometheus /usr/local/prometheus
— 配置Prometheus
[root@fgedu ~]# vi /usr/local/prometheus/prometheus.yml
global:
scrape_interval: 15s
scrape_configs:
– job_name: ‘dm’
static_configs:
– targets: [‘192.168.1.101:5236’, ‘192.168.1.102:5236’, ‘192.168.1.103:5236’, ‘192.168.1.104:5236’, ‘192.168.1.105:5236’]
— 启动Prometheus
[root@fgedu ~]# systemctl start prometheus
[root@fgedu ~]# systemctl enable prometheus
— 部署Grafana
[root@fgedu ~]# wget https://dl.grafana.com/oss/release/grafana-10.2.0-1.x86_64.rpm
[root@fgedu ~]# rpm -ivh grafana-10.2.0-1.x86_64.rpm
— 启动Grafana
[root@fgedu ~]# systemctl start grafana-server
[root@fgedu ~]# systemctl enable grafana-server
— 配置Grafana数据源
— 访问Grafana Web界面
— http://192.168.1.100:3000
— 添加Prometheus数据源
— Configuration -> Data Sources -> Add data source
— Name:Prometheus
— URL:http://192.168.1.100:9090
— 创建仪表板
— Create -> Dashboard -> Add new panel
— 查询:dm_sessions
— 查询:dm_transactions

,项目实施需要严格按照步骤执行,确保项目成功。

3.2 项目测试

测试步骤:

  • 步骤1:功能测试
  • 步骤2:性能测试
  • 步骤3:高可用测试
  • 步骤4:备份恢复测试

功能测试:

— 测试数据库连接
[dmdba@fgedu ~]$ disql SYSDBA/SYSDBA@192.168.1.101:5236
SQL> SELECT * FROM V$DATABASE;
— 测试数据查询
SQL> SELECT COUNT(*) FROM fgedu.fgedu_account;
— 测试数据插入
SQL> INSERT INTO fgedu.fgedu_account(account_id, account_name, account_balance) VALUES(20000001, ‘fgedu_test’, 1000);
SQL> COMMIT;
— 测试数据更新
SQL> UPDATE fgedu.fgedu_account SET account_balance = 2000 WHERE account_id = 20000001;
SQL> COMMIT;
— 测试数据删除
SQL> DELETE FROM fgedu.fgedu_account WHERE account_id = 20000001;
SQL> COMMIT;

性能测试:

— 使用sysbench进行性能测试
[root@fgedu ~]# sysbench oltp_read_write –db-driver=dm –dm-host=192.168.1.101 –dm-port=5236 –dm-user=SYSDBA –dm-password=SYSDBA –dm-db=fgedudb –tables=50 –table-size=500000 –threads=64 –time=1200 –report-interval=10 run
— 性能测试结果
SQL statistics:
queries performed:
read: 500000
write: 250000
other: 50000
total: 800000
transactions: 25000 (20.83 per sec.)
queries: 800000 (666.67 per sec.)
Latency (ms):
min: 2.00
avg: 8.00
max: 30.00
95th percentile: 12.00
sum: 200000.00

高可用测试:

— 停止节点1
[root@fgedu ~]# DmServicefgedudb stop
— 测试其他节点是否正常工作
[dmdba@fgedu ~]$ disql SYSDBA/SYSDBA@192.168.1.102:5236
SQL> SELECT * FROM V$DATABASE;
— 启动节点1
[root@fgedu ~]# DmServicefgedudb start
— 测试集群是否正常
[dmdba@fgedu ~]$ disql SYSDBA/SYSDBA@192.168.1.101:5236
SQL> SELECT * FROM V$DSC_INFO;

备份恢复测试:

— 执行全量备份
[root@fgedu ~]# /dm/app/script/backup.sh full
— 模拟数据损坏
[dmdba@fgedu ~]$ rm -rf /dm/fgdata/fgedudb/*.dbf
— 执行恢复
[dmdba@fgedu ~]$ dmrman
RMAN> RESTORE DATABASE ‘/dm/fgdata/fgedudb/dm.ini’ FROM BACKUPSET ‘/dm/backup/fgedu_full_20260409’;
RMAN> RECOVER DATABASE ‘/dm/fgdata/fgedudb/dm.ini’ FROM BACKUPSET ‘/dm/backup/fgedu_full_20260409’;
RMAN> RECOVER DATABASE ‘/dm/fgdata/fgedudb/dm.ini’ UPDATE DB_MAGIC;
— 验证数据
[dmdba@fgedu ~]$ disql SYSDBA/SYSDBA
SQL> SELECT COUNT(*) FROM fgedu.fgedu_account;

风哥提示:定期测试项目功能,确保系统稳定运行,。

Part04-生产案例与实战讲解

4.1 项目实战案例

案例背景:

  • 业务场景:某大型电商平台
  • 数据量:10TB
  • 并发量:100000 TPS
  • 项目周期:37天
实施过程:

  • 环境准备:3天
  • 数据库安装:3天
  • 集群配置:5天
  • 数据迁移:10天
  • 性能优化:5天
  • 备份恢复配置:3天
  • 监控告警配置:3天
  • 测试验收:5天

项目实施结果:

— 数据库状态
[dmdba@fgedu ~]$ disql SYSDBA/SYSDBA
SQL> SELECT * FROM V$DATABASE;
— 数据库信息
行号 NAME CREATE_TIME ARCH_MODE STATUS
———- ——— ——————– ———- ——–
1 FGEDUDB 2026-04-09 10:00:00 Y OPEN
— 集群状态
SQL> SELECT * FROM V$DSC_INFO;
— 集群信息
行号 EP_NAME EP_ID EP_STATUS
———- ———— ——- ———-
1 FGEDUDB01 0 OK
2 FGEDUDB02 1 OK
3 FGEDUDB03 2 OK
4 FGEDUDB04 3 OK
5 FGEDUDB05 4 OK
— 性能指标
SQL> SELECT * FROM V$SYSTEMINFO;
— 系统信息
行号 ITEM_NAME ITEM_VALUE
———- ———— ——————–
1 MAX_SESSIONS 5000
2 CPU_COUNT 64
3 MEMORY_SIZE 256

项目验收结果:

— 功能测试:通过
— 性能测试:通过(响应时间< 10ms) -- 高可用测试:通过(故障切换时间< 10s) -- 备份恢复测试:通过(恢复时间< 4h) -- 项目验收:通过

,项目实战案例展示DBA综合能力。

4.2 项目故障处理实战案例

故障场景:

  • 故障类型:集群节点故障
  • 故障现象:节点1数据库服务停止,集群无法正常工作
  • 故障影响:影响业务访问,影响数据一致性
  • 故障原因:服务器硬件故障,内存不足
处理步骤:

  • 步骤1:检查节点1状态
  • 步骤2:检查系统资源
  • 步骤3:检查数据库日志
  • 步骤4:重启节点1服务
  • 步骤5:验证集群状态

检查节点1状态:

— 检查数据库服务状态
[root@fgedu ~]# DmServicefgedudb status
— 服务状态
DmServicefgedudb is stopped.
— 启动数据库服务
[root@fgedu ~]# DmServicefgedudb start
— 查看服务状态
[root@fgedu ~]# DmServicefgedudb status
— 服务状态
DmServicefgedudb (pid 12345) is running.

检查系统资源:

— 检查内存使用
[root@fgedu ~]# free -h
— 输出结果
total used free shared buff/cache available
Mem: 256Gi 240Gi 8.0Gi 100Mi 8.0Gi 4.0Gi
— 检查CPU使用
[root@fgedu ~]# top -n 1 | grep Cpu
— 输出结果
%Cpu(s): 99.0 us, 1.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
— 清理缓存
[root@fgedu ~]# sync
[root@fgedu ~]# echo 3 > /proc/sys/vm/drop_caches

检查数据库日志:

— 查看数据库日志
[dmdba@fgedu ~]$ tail -f /dm/app/log/dm.log
— 日志输出
2026-04-09 10:00:00 [INFO] Database started successfully
2026-04-09 10:00:00 [ERROR] Out of memory
2026-04-09 10:00:00 [ERROR] Database stopped

重启节点1服务:

— 重启数据库服务
[root@fgedu ~]# DmServicefgedudb restart
— 查看服务状态
[root@fgedu ~]# DmServicefgedudb status
— 服务状态
DmServicefgedudb (pid 12345) is running.

验证集群状态:

— 查看集群状态
[dmdba@fgedu ~]$ disql SYSDBA/SYSDBA
SQL> SELECT * FROM V$DSC_INFO;
— 集群信息
行号 EP_NAME EP_ID EP_STATUS
———- ———— ——- ———-
1 FGEDUDB01 0 OK
2 FGEDUDB02 1 OK
3 FGEDUDB03 2 OK
4 FGEDUDB04 3 OK
5 FGEDUDB05 4 OK
— 测试数据库连接
[dmdba@fgedu ~]$ disql SYSDBA/SYSDBA@192.168.1.101:5236
SQL> SELECT COUNT(*) FROM fgedu.fgedu_account;

,集群节点故障时及时修复,恢复集群功能。

Part05-风哥经验总结与分享

5.1 最佳实践

项目实施建议:

  • 需求分析:充分了解业务需求,制定合理的项目计划
  • 架构设计:设计合理的架构,确保系统稳定性和可扩展性
  • 环境准备:充分准备环境,确保硬件和软件满足要求
  • 实施过程:严格按照步骤执行,确保实施质量
  • 测试验收:充分测试,确保系统满足业务需求
项目运维建议:

  • 监控告警:配置完善的监控告警,及时发现和解决问题
  • 备份恢复:定期备份,确保数据安全
  • 性能优化:定期优化,确保系统性能
  • 故障处理:建立完善的故障处理流程,快速响应故障
  • 持续优化:根据运行情况持续优化系统

,项目实施和运维需要综合考虑多种因素。

5.2 面试技巧

常见面试问题:

  • 如何进行项目需求分析?了解业务需求,制定项目计划,设计项目架构
  • 如何进行项目架构设计?根据业务需求设计高可用、高性能、高安全的架构
  • 如何进行项目实施?严格按照步骤执行,确保实施质量
  • 如何进行项目测试?功能测试、性能测试、高可用测试、备份恢复测试
  • 如何处理项目故障?检查服务状态、系统资源、日志等,及时修复故障
面试回答技巧:

  • 理论结合实践:先回答理论知识,再结合实际项目经验
  • 举例说明:用具体的案例说明如何实施项目
  • 突出重点:重点强调项目架构设计和实施过程
  • 展示经验:分享实际项目中遇到的问题和解决方案
  • 技术深度:展示对项目的深入理解和技术细节

,掌握项目实施和运维,轻松应对面试。

本文总结:

  • 生产实战综合项目是检验DBA能力的重要方式
  • 充分了解业务需求,制定合理的项目计划
  • 设计合理的架构,确保系统稳定性和可扩展性
  • 严格按照步骤执行,确保实施质量
  • 充分测试,确保系统满足业务需求

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息