通过防火墙安全地将数据库从 MSSQL 链接到 MySQL

通过防火墙安全地将数据库从 MSSQL 链接到 MySQL

我目前正在与公司内的 DBA 和 IT 安全人员进行讨论,并被告知将我们的主数据库(防火墙后面的 MSSQL)安全地链接到我们的 Web 应用程序的唯一方法是制作备份文件,将文件通过 FTP 传输到 Web 服务器,然后运行脚本将导入的备份文件还原到防火墙外部托管的数据库(然后将数据导入 MYSQL)。我很难相信这是最好的解决方案。理想情况下,我希望在主 MSSQL 服务器和为 Web 应用程序提供服务的 MySQL 数据库之间建立双向直接链接,并使这些数据库同步。有人能告诉我这样的解决方案吗,或者我们真的需要依靠 FTP 来穿越防火墙吗?

谢谢!

答案1

这听起来就像一场噩梦。

为什么要尝试保持两个数据库同步?让面向互联网的 Web 应用程序直接访问数据库服务器并没有什么问题。我不是网络专家,但我认为典型的设置是这样的:

  • 部署在 DMZ 中面向互联网的服务器上的 Web 应用程序
  • 托管在内部网络服务器上的 SQL Server
  • 数据库请求由防火墙从 Web 服务器 (DMZ) 转发到数据库服务器的特定 IP 和端口 (内部)

当然还有其他配置,但这是我比较熟悉的配置。

只需确保采取常规预防措施即可:

答案2

如您所知,将制表符分隔文件导入 MySQL 很容易。将 MSSQL 数据导出为与 MySQL 兼容的格式则完全是另一回事。一旦您拥有正确的制表符分隔文件,您就可以像这样导入它们:

TRUNCATE TABLE App;
LOAD DATA LOCAL INFILE 'App.tab' INTO TABLE App LINES TERMINATED BY '\r\n';

要从 MSSQL 中获取数据,您需要:

  1. 将 MSSQL 数据模式导出到 .sql 文件
  2. 将 .sql 模式文件修改为适用于 MySQL 的格式
  3. 将每个表导出到其自己的 .tab 分隔文件,该文件以表的名称命名并与步骤 2 中的数据相匹配。
  4. 所有这些文件推送到 DEV-PRODUCTION 服务器。
  5. 使用 MySQL LOAD DATA 函数导入所有内容。

所有这些都可以使用批处理文件和在 -remote 模式下使用 mysql.exe 编写脚本。远程模式的示例如下(但此示例是导出,而不是您需要的导入):

mysqldump --databases myDB -v -h zzzzzzs9c49.us-east-1.rds.amazonaws.com -u 
user -P 3306 -p > rdsexport.sql

另外,也许看看这个以防万一它能起作用: 对称数据同步

相关内容