mysql - 如何将多个数据库同步到远程服务器中的一个中央数据库?
问题描述
我有一个项目,其中有多个站点(1500 个客户端站点),每个站点都包含一个 Oracle 数据库,以及一个带有 MySQL 数据库的数据中心,所有客户端站点的所有数据都应该驻留并保持同步。项目范围是实现数据中心和客户端站点之间的同步。
因此,我有几个问题:
是否有实用程序/工具来实现 Oracle 和 MySQL 数据库之间的这种集成和同步?
使用互联网传输/发送数据时保护数据的最佳方法是什么?
解决方案
是的,有许多工具可用于实现此类目标,但最佳解决方案将取决于您组织的技术需求和预算(不要低估这一点的重要性。)我是 Oracle DBA贸易,虽然我在 MySql 中做一些工作,但这些都是以 Oracle 为中心的建议。仅供参考。
对于#1。我建议查看Oracle Golden Gate和Oracle Data Guard。
Golden Gate 是一个数据集成、复制和软件包,可让您近乎实时地跨多个数据库同步数据。使用 Golden Gate,您可以跨多种环境复制数据、事务和 DDL 更改。它可能很难设置,但一旦到位,如果您能够以一种对您的需求有意义的方式利用它,它将为自己付出很多倍的代价。这可能是最具成本效益的解决方案(就工作量、成本等而言),但成本很高,如果您和您的员工不熟悉它,可能需要培训。
Data Guard 也是一种 Oracle 技术,但它更多地用于主/备用数据库设置。它本质上允许您创建两个数据库 - 一个作为发生数据事务的主数据库,另一个作为复制这些事务的备用数据库,也是近乎实时的。我喜欢 Data Guard,因为它可以让您在主要和备用之间无缝转换,而无需最终用户知道它。例如,假设用户连接到您的主数据库,但主数据库所在的文件系统由于某种原因而损坏。您可以对其进行设置,以便数据库会自动将该用户的连接移动到备用数据库并允许他们完成他们的事务,所有这些都不会中断他们的结束。
我提出 Data Guard 是因为与其让您的客户端站点直接复制到您的数据中心,您可能需要考虑设置 Data Guard,以便主数据库可以驻留在客户端,而备用数据库则驻留在客户端。数据中心。这将做两件事 - 1. 创建客户端数据库的本地副本,以便在灾难中轻松恢复。2. 降低网络延迟等导致问题的可能性。如果您的复制策略依赖于那些始终处于启动和可访问性的客户端数据库,那么当这些客户端站点的人员遇到问题时,您就会遇到问题。使用 Data Guard,您可以通过与备用数据库同步来保护自己免受某些风险 - 这意味着而不是来自客户端的更改 -> 直接到数据中心进行同步,它将从客户端主数据库 -> 数据中心备用数据库 -> 数据中心同步。您的安全和网络团队也可能更喜欢这样的解决方案,但这可能会有所不同。
对于#2。每当您在互联网上移动数据时,您都希望使用基本的东西,例如加密、SSL、证书身份验证、防火墙、VPN 等。除此之外,您还需要确保遵守已设定的指导方针和规定在您所在的地区。例如,如果您正在处理银行或金融数据,则可能有法律法规规定了在开放互联网上移动数据的最低要求。同样,如果您正在处理医疗或医疗保健数据,那么该行业可能也有一组不同的最低要求。您的组织应该能够将您与资源联系起来以找到这些要求,但归根结底,遵守法规(如果有的话)的责任将落在设置它的人身上——很可能是你。确保您了解要移动的数据类型,以及围绕该数据的任何法律影响,并据此设置您的技术要求。
如果您使用的数据没有任何规则/规定(假设您只是在移动不需要保护的公开可用数据),您可以只做有效的 - 只要确保您正在做以一种安全的方式,不会危及客户站点或您的数据中心。
推荐阅读
- python - 创建python包时如何从子目录中读取文件
- javascript - React 中的 Axios 获取方法响应无法在我的博客应用程序中显示从 firebase 获取数据作为数组
- java - 我怎么知道客户端是想发送数据还是从服务器接收数据
- node.js - ReactJS 表单,如何获取图像 url 以便插入 mongodb 数据库?
- firebase - 如何从离子选择中获取项目的所有信息?
- python - 使用 pip 安装 tensorflow-data-validation
- sql - 如何:“获取在所有控制台上玩相同游戏的用户的用户编号。”
- wpf - 如何以适当的尺寸导出我的 wpf InkCanvas?
- javascript - Bootstrap 4导航选项卡内容未在初始页面加载时显示内容
- matlab - Matlab Fuzzy c 表示总是给予相同的索引多数所有权