略微加速

略速 - 互联网笔记

跳板机访问达梦

2025-03-20 leiting (45阅读)

标签 数据库

为了在外网通过达梦工具将MySQL数据导入内网的达梦数据库(需跳板机访问),可按照以下步骤操作:


步骤 1:建立SSH隧道(端口转发)

通过跳板机将外网机器的本地端口与内网达梦数据库端口绑定,实现间接访问。

端口转发要设置sshd_config的AllowTcpForwarding yes

命令示例:

ssh -N -L <本地端口>:<达梦数据库内网IP>:<达梦端口> <跳板机用户名>@<跳板机IP> -p <跳板机SSH端口>
  • 参数说明

    • <本地端口>:外网机器上的空闲端口(如 3307)。

    • <达梦数据库内网IP>:<达梦端口>:内网达梦的实际地址(如 192.168.1.100:5236)。

    • <跳板机用户名>@<跳板机IP>:跳板机的SSH登录信息。

执行后:访问外网机器的 localhost:3307 等价于访问内网的达梦数据库。


步骤 2:配置达梦工具连接达梦数据库

在达梦工具(如 DTS 或 dmfldr)中,使用以下配置:

  • 数据库类型:达梦

  • 主机127.0.0.1 或 localhost

  • 端口3307(即SSH隧道绑定的本地端口)

  • 用户名/密码:达梦数据库的账号权限。


步骤 3:从MySQL导出数据并导入达梦

方案一:使用达梦DTS工具

  1. 导出MySQL数据

    • 使用 mysqldump 导出数据为SQL文件:

      mysqldump -u <mysql用户> -p <数据库名> > mysql_data.sql
    • 或导出为CSV格式(适合表数据):

      mysql -u <用户> -p -e "SELECT * FROM 表名" -B <数据库名> | sed 's/\t/,/g' > data.csv
  2. 通过DTS导入数据

    • 在DTS中选择 “文件→数据库” 任务。

    • 源文件选择导出的SQL/CSV文件。

    • 目标数据库配置为通过SSH隧道转发的达梦连接(localhost:3307)。

    • 执行映射和数据类型转换(注意达梦与MySQL的数据类型差异)。


方案二:使用dmfldr(高速导入工具)

  1. 从MySQL导出为文本文件

    mysql -u <用户> -p -e "SELECT * FROM 表名 INTO OUTFILE '/tmp/data.txt' FIELDS TERMINATED BY ','"
  2. 编写dmfldr控制文件(如 load.ctl):

    OPTIONS(characters_code='UTF-8', errors=1000, rows=100000, direct=true)LOAD DATA
    INFILE '/tmp/data.txt'
    INTO TABLE 目标表名
    FIELDS ','
  3. 执行导入

    dmfldr userid=达梦用户/密码@localhost:3307 control=load.ctl

方案三:通过ODBC驱动跨库访问

  1. 配置MySQL ODBC数据源

    • 在外网机器安装MySQL ODBC驱动,并配置DSN。

  2. 在达梦DTS中设置双数据源

    • 源:MySQL ODBC数据源。

    • 目标:达梦数据库(通过SSH隧道地址 localhost:3307)。

    • 直接通过DTS界面执行跨库数据传输。


注意事项

  1. 网络稳定性:SSH隧道可能因网络波动中断,建议使用 autossh 或 tmux 保持连接。

  2. 数据兼容性

    • 检查达梦与MySQL的字段类型、字符集(如 utf8mb4)、保留字差异。

    • 处理自增主键、索引、触发器等对象的迁移。

  3. 性能优化

    • 大批量数据导入时,分批次提交或调整事务大小。

    • 达梦开启快速加载模式(如 dmfldr 的 direct=true)。

  4. 权限检查:确保跳板机用户有权访问达梦数据库,且防火墙放行相关端口。


北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3