实战演练 | 使用 Navicat Premium 自动运行数据库复制

news2024/11/18 1:23:29

与同步(使两个数据库的模式和数据同步的一次性过程)不同,复制是一个连续(自动)在两个数据库之间重现数据的过程(尽管模式更新也是可能的)。复制可以异步完成,因此不需要永久连接两个数据库,或者可以在非高峰时间,数据库服务器流量很少时进行,例如在深夜时间。

复制的主要作用是创建所有用户数据库的合并存储库和/或在所有用户之间传播相同级别的信息。在任何一种情况下,结果数据库都是一个分布式数据库,用户可以在其中访问与其任务相关的数据,而不会干扰其他人的工作。数据库复制被称为规范化,为了消除用户之间的数据模糊或不一致。

在 Database Synchronization Strategies(数据库同步策略)白皮书中,我们使用 Navicat Premium 数据库管理系统探索了同步两个相同和不同类型的数据库的策略。在今天的文章中,我们将介绍如何使用 Navicat Premium 的新“自动运行”工具自动运行行数据库复制。如果你想要一起体验,欢迎点击这里下载14天免费全功能试用版。

复制类型

数据库复制有至少三种不同的方式:

  • 快照复制:一台服务器上的数据复制到同一台或不同服务器上的另一个数据库。
  • 合并复制:来自两个或多个数据库的数据被合并到一个数据库中。
  • 事务复制:用户收到数据库的完整初始副本,然后在数据更改时接收定期更新。

在分布式数据库管理系统(DDBMS)中,对一个位置的数据执行的更改、添加和删除会自动反映在存储在所有其他位置的数据中。这样做可确保每个用户访问与所有其他用户相同的数据集。

与同步一样,复制可以是同构的也可以是异构的:

  • 同构:相同的源和目标数据库,即 Percona 到 Percona,MariaDB 到 MariaDB,MySQL 到 MySQL。
  • 异构:不同的源和目标数据库,即 Oracle到Microsoft SQL Server,PostgresSQL 到 Amazon DynamoDB,MySQL 到 Amazon Aurora。

当一个或多个外部业务伙伴使用与我们自己不同的数据库类型的情况出现时,就需要使用异构复制。两种环境之间的自动定期数据复制通常是这种安排的组成部分。

Navicat Premium 的自动运行工具

Navicat Premium 的新自动运行工具在12及以上版本中引入,具有易于使用且直观的界面,可用于创建自动的批处理作业。自动运行是在一个或多个定期间隔运行一个进程,并可在特定日期和时间开始和结束,就像 Windows 任务计划程序一样。除了复制之外,它还可用于各种工作,包括备份、查询和报表。

图 1:Windows 中的 Navicat Premium 自动运行工具

图 2:macOS 中的 Navicat Premium 自动运行工具

用户数据库

我们将使用 Sakila 示例 MySQL 数据库作为我们的用户数据库。它由 MySQL AB 文档团队的前成员 Mike Hillyer 开发,专门用于提供用于书籍、教程、文章等的标准模式。

该数据库以电影业为主题,涵盖从演员和电影制片厂到影碟出租店的所有内容。如果你有兴趣,可以在MySQL Dev 网站上查看完整的模式。

有关使用 Navicat设置Sakila数据库的说明,请参阅 http://databasejournal.com 上的Generating Reports on MySQL Data(生成 MySQL 数据报表)一文。


Navicat Premium 12 中的 Sakila MySQL 数据库结构

快照复制

如上所述,快照复制通过将数据从一个数据库复制到同一台或不同服务器上的另一个数据库,使两个数据库同步。这是三种类型中最简单的一种。

创建数据同步工作

首先必须创建数据同步配置文件,以便将其作为复制进程自动运行。在 Database Synchronization Strategies 白皮书中描述了在 Navicat Premium 中实行同构和异构同步的步骤。出于本教程的目的,我们将在 sakila 和 sakila2 数据库之间进行同构同步作为第一个示例。

提示:创建 sakila 数据库后,可以通过右击导航窗格中的连接并选择“新建数据库”来创建 sakila2 数据库。然后在弹出窗口中输入数据库名(“sakila2”)。

打开数据同步向导:

  • 从菜单栏中选择“工具”->“数据同步”。

  • 数据同步的“选项”选项卡仅包含几个比较选项的复选框。我们可以不去设置它们:/li>

  • 数据同步向导的下一步是映射表。可以通过下拉列表选择目标表。在这例子中,我们不需要提供任何映射指令,因为两个数据库中的表是相同的:

  • 比对数据后,窗口显示将在目标表中插入、更新或删除的记录数。如果你不想包含具有相同数据的表和具有不同结构的表(即换句话说,不会更新的表),则可以取消勾选“显示相同的表和其他”。还有一些复选框可取消选择表或你不希望应用于目标的操作。
    在列表中选择一个表将在底部窗格显示源表和目标表的数据。源和目标之间不同的值会高亮显示。与在顶部窗格中一样,你可以取消勾选你不想应用于目标的记录。

“不同”选项

可以从下拉列表中选择要显示的差异类型。下面是可用的选项:

  • 不同:显示源表和目标表中所有不同的记录。
  • 插入:仅显示目标表中不存在的记录。
  • 更新:仅显示源表和目标表中存在但具有不同值的记录。
  • 删除:仅显示源表中不存在的记录。
  • 相同:显示源表和目标表中存在并具有相同值的记录。
  • 全部行:显示源表和目标表中的所有记录。

在我们的例子中,选择“更新”或“相同”将显示零行,因为没有要更新的行(仅插入)而且没有相同的行:

和以前一样,点击“部署”按钮会生成并显示“部署脚本”:

此屏幕与之前的屏幕一样,包含“保存配置文件”按钮,可让你保存设置以供将来使用。此特定屏幕还有一个用于保存“部署脚本”的按钮。

你仍可以“重新比对”这两个数据库,或继续“运行”部署脚本。这里有一个“遇到错误时继续”复选框。当勺选了此框,在遇到错误时部署不会停止。

在脚本运行时,你可以在“信息日志”中查看其进度。它显示已处理的记录数目和已完成的百分比:

关闭对话框后,我们可以确认 sakila2 数据库的表中有数据:

不要忘记保存配置文件,因为批处理作业将使用它。

创建批处理作业

我们现在将使用 Navicat 的自动运行工具设置在 sakila 和 sakila2 数据库之间的定期复制。

  • 首先,点击主工具栏中的“自动运行”按钮。
  • 然后点击“对象”工具栏中的“新建批处理作业”以打开新建批处理作业选项卡。
  • 在“对象”窗格中浏览源连接、数据库和/或模式。这将使该数据库的已保存的工作显示在底部的“可用的工作”窗格中。
    在“可用的工作”窗格中,选择“数据同步”工作类型,然后双击或拖动工作将其从“可用的工作”列表移动到上面的“已选择的工作”列表中。(你可以以相同的方式从“已选择的工作”列表中删除工作。)

  • 点击自动运行工具栏上的“保存”按钮,并在“保存”对话框中提供描述性名称。

这将启用“设置任务计划”和“删除任务计划”按钮。

“常规”选项卡

在“计划任务”对话框的“常规”选项卡中,你可以提供该任务的说明。此选项卡更提供多个运行选项。

  • 在“安全选项”框中,你可以配置要在其下运行任务的用户或组帐号。有一个选项是无论用户是否登录都会运行任务。如果选择该选项,你需要在保存计划时,在“Windows 任务计划程序”中提供操作系统用户的密码。

你还可以选择将任务作为“隐藏”运行,并将其配置为在特定操作系统上运行。

触发任务

“触发器”选项卡列出了任务的计划。可以将任务配置为以各种计划运行,包括一次、每天、每周、每月,以及每种计划的任何排列。

点击“新建...”按钮以显示“新建触发器”对话框:

相同的任务可以根据多个计划运行。例如,我们可以安排我们的数据库同步任务在每个月的第一天以及每个第二个星期日运行:

设置电子邮件通知

发件人

指定发件人的电子邮箱。例如:“someone@navicat.com”。

收件人, 副本

指定每一个收件人的电子邮箱,以逗号或分号 (;) 分隔。

主旨

以自定义格式指定电子邮件的主旨。

主体

填写电子邮件的内容。

主机 (SMTP 服务器)

为出去的信息输入简单邮件传输协定(SMTP)服务器。

端口

输入连接出去的电子邮件(SMTP)服务器的端口号。

使用验证

如果你的 SMTP 服务器需要验证以发送电子邮件,可勾选这个选项,并输入“用户名”和“密码”。

安全连接

指定连接使用“TLS”、“SSL”安全连接或“永不”。

发送测试邮件

Navicat 将会发送一个测试邮件给你显示是成功或失败。

完成自动工作的配置后,可以点击“自动运行”工具栏中的“开始”按钮对其进行测试。

合并复制

顾名思义,合并复制将来自两个或多个数据库的数据组合到一个数据库中。作为练习,我们将 sakila 和 sakla2 数据库的内容合并到名为“sakila_merged”的第三个数据库中,该数据库将存储合并的数据集。

所需的数据同步工作

合并复制工作将要求我们创建并保存两个数据同步配置文件:每个源数据库一个。这些步骤与上面的“创建数据同步工作”部分完全相同,因此我们在此不再重复了。

创建批处理作业

批处理作业可能由源数据库或目标触发,就像我们在上一节“快照复制”中所做的那样。但是,通常从目标数据库触发批处理作业是最容易的,因为它们都将处同一服务器上。我们也会这样做。

  • 点击主工具栏中的“自动运行”按钮。
  • 然后,点击“对象”工具栏中的“新建批处理作业”以打开新的批处理作业选项卡。
  • 在“对象”窗格中浏览源连接、数据库和/或模式。这将使该数据库的已保存的工作显示在底部的“可用的工作”窗格中。
  • 在“可用的工作”窗格中,选择“数据同步”工作类型,然后双击或拖动工作将其从“可用的工作”列表移动到上面的“已选择的工作”列表中。

  • 点击自动运行工具栏上的“保存”按钮,并在“保存”对话框中提供描述性名称。这将启用“设置任务计划”和“删除任务计划”按钮。
  • 在“计划任务”对话框的“常规”选项卡中,你可以提供该任务的说明。此选项卡更提供多个运行选项。
  • “触发器”选项卡列出了任务的计划。任务可以配置为以各种计划运行,包括一次、每天、每周、每月,以及每种计划的任何排列。这次将运行两个工作而不是一个。
  • 完成自动工作的配置后,可以点击“自动运行”工具栏中的“开始”按钮对其进行测试。

事务复制

在“合并复制”中,只有合并的数据库包含所有最新数据。而每个源数据库仅包含基线数据,以及自首次填充以来插入的内容。在事务复制中,用户会收到数据库的完整初始副本,然后在数据更改时接收定期更新,以便所有数据库都使用相同的数据集。保持多个数据库同步使事务复制成为最复杂的复制类型。

所需的数据同步工作

使用事务复制,所需的数据同步作业数量会大幅增加,因为必须跨所有用户数据库复制数据。例如,假设我们有三个名为 sakila、sakila2 和 sakila3 的数据库。我们可以使用总共六个数据同步工作在所有用户数据库中合并和传播完整数据集:有三个用于合并用户数据库,另外三个使用合并数据集更新它们。

这是包含所有六个工作的自动运行向导:

为了有足够的时间完成数据合并,最好将作业分成两部分,第一部分为合并数据,第二部分在指定的延时后用完整数据集更新用户数据库。

以下是将合并数据集传播到用户数据库的自动运行的例子:

在运行第一次工作两小时后运行这项工作应该有足够的时间来完成合并。因此,如果第一次工作计划在午夜运行,我们会将此工作设置为凌晨 2 点开始:

总结

在数据库同步策略白皮书的后续内容中,我们介绍了如何使用 Navicat Premium 的自动运行工具自动运行数据库复制。与其同步工具结合使用,DBA 能设置预定义的计划,自动运行各种类型的复制。有关 Navicat Premium 的更多信息,请访问产品页面。

往期回顾

  1. 假冒网站引发多重安全风险 | 官方严正声明:切勿在非官方渠道购买或下载 Navicat 软件
  2. Navicat 荣获 Microsoft 金牌合作伙伴
  3. Navicat 16.3 正式支持 OceanBase 企业版​
  4. 免费试用 Navicat 16
  5. Navicat 的 20年发展史
  6. SQL 语句中 WHERE 1=1 的作用
  7. SQL 中计算总行数的百分比
  8. 互动有礼活动进行中 | 奖品为价值 819 元 Navicat Premium
  9. Navicat NAPP 校企合作和申请免费一年期的 Navicat Premium 教育版

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/129963.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Lniux】目录的权限,默认权限,粘滞位详细讲解

大家好,今天详细讲解一些关于目录权限的细节 很多细节都是通过问答方式,希望大家可以先自己思考一下答案然后再听我的分析 欢迎指正错误,我们共同成长 目录 1.目录的权限 2.默认权限 3.粘滞位 1.目录的权限 如果我们要进图一个目录只需要…

ArcGIS基础实验操作100例--实验25统一多分辨率栅格数据

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 基础编辑篇--实验25 统一多分辨率栅格数据 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff0…

springboot admin-server的使用

指标监控可视化文档&#xff1a; 用于管理 Spring Boot 应用程序的管理 UI Spring Boot Admin Reference Guide 一、创建项目 就勾选Spring Web项目即可 二、基础设置 (1) 依赖引入 <dependency><groupId>de.codecentric</groupId><artifactId>sp…

Android: Binder: 彻底顿悟Android Binder

Binder机制可谓是Android 知识体系的重中之中&#xff0c;作为偏底层的基础组件&#xff0c;平时我们很少关注它&#xff0c;但是它却无处不在&#xff0c;这也是android面试考察点之一&#xff0c;本篇将从流程上将Binder通信过一遍。 文章目录 1&#xff1a;Binder作用 2&…

STM32F7-Discovery使用ITM作为调试工具

关于代码的调试手段&#xff0c;我在自己的一篇文章(http://bbs.ickey.cn/index.php?appgroup&actopic&id54944链接中的《STM32F030 Nucleo-开发调试的经验USART的重要性.pdf》)中已经详细谈到&#xff0c;为什么在调试中我们通常使用J-Link或ULINK或ST-Link(ST)或Ope…

机器学习——细节补充

1.matplotlib与seaborn的区别 来源&#xff1a;https://geek-docs.com/matplotlib/matplotlib-ask-answer/difference-between-matplotlib-and-seaborn.html 2.%matplotlib inline使图片嵌入notebook&#xff0c;而不需要使用show()方法 3.IPython与python&#xff1a;IPyth…

中小企业如何选择进销存软件?

企业信息化转型趋势的推动&#xff0c;让很多中小企业也开启了转型的探索。对于企业&#xff0c;一款合适的进销存管理软件&#xff0c;绝对是转型之路上的必备工具&#xff0c;可以帮助企业对经营中的采购、库存、销售等环节进行有效管理监督。 目前&#xff0c;市面上的各种…

three.js 的渲染结构

理解three.js 的渲染结构 1 three.js 的渲染 Three.js 封装了场景、灯光、阴影、材质、纹理和三维算法&#xff0c;让你不必再直接用WebGL 开发项目。three.js 在渲染三维场景时&#xff0c;需要创建很多对象&#xff0c;并将它们关联在一起。 下图便是一个基本的three.js 渲…

Python通知Epic白嫖游戏信息

每周都有免费游戏 - Epic Games 近期看到Epic在送游戏&#xff0c;目前每周都会有活动白嫖。 身为白嫖党&#xff0c;肯定要操作一下。 游戏列表&#xff1a;Epic Games Store 每周免费游戏&#xff08;331&#xff09; | indienova GameDB 游戏库 大致思路&#xff1a; 1、…

把teamtalk中的网络库(netlib)拆出来单独测试实现双工通信效果

这篇文章的基础是上一篇对于将teamtalk中的线程池&#xff0c;连接池单独拆出来的讲解 不是说这个网络库会依赖线程池&#xff0c;连接池&#xff0c;而是上一篇文章中讲了一些base目录中的文件&#xff0c;并且这个网络库会依赖一些base目录里的文件&#xff0c; 文末会将所有…

基于fpga的自动售货机(三段式状态机)

目录 1、VL38 自动贩售机1 题目介绍 思路分析 代码实现 仿真文件 2、VL39 自动贩售机2 题目介绍&#xff1a; 题目分析 代码实现 仿真文件 3、状态机基本知识 1、VL38 自动贩售机1 题目介绍 设计一个自动贩售机&#xff0c;输入货币有三种&#xff0c;为0.5/1/2元&…

JS概览 (JS基础 DOM BOM)

目录 JavaScript JS基础 JS数据类型 函数 变量的作用域 作用域链 预解析 DOM DOM树 获取元素的方法 事件高级 注册和解绑事件 DOM事件流 BOM 和DOM的区别 window 对象的常见事件 window.onload JS执行机制 具体的执行流程 例子 JavaScript JS基础 JS数据类…

鉴源论坛 · 观模丨基于AUTOSAR的TTCAN通信协议的形式化建模与分析

作者 | 郭建 上海控安可信软件创新研究院特聘专家 版块 | 鉴源论坛 观模 汽车工业发展至今&#xff0c;硬件方面如车身材料、发动机等已无太大升值空间&#xff0c;而汽车电子则有着广阔的前景。为此各大汽车厂商对汽车电子的研究都投入了大量的人力财力。2003 年&#xff0c…

链式二叉树的代码总结

今天我带来链式二叉树的代码总结。 目录前言链式二叉树代码实现的五个文档二叉树的例子前序遍历中序遍历后序遍历层序遍历求结点个数的函数求叶子的个数的函数求k层结点个数的函数查找某一个值的函数求二叉树高度的函数判断二叉树是否是完全二叉树的函数开辟二叉树结点的函数销…

【设计模式】工厂方法模式

简单工厂模式的弊端 在简单工厂模式中只提供一个工厂类&#xff0c;该工厂类处于对产品类进行实例化的中心位置&#xff0c;它需要知道每一个产品对象的创建细节&#xff0c;并决定何时实例化哪一个产品类。简单工厂模式最大的缺点是当有新产品要加入到系统中时&#xff0c;必…

实现isReactive和isReadonly

08_实现isReactive和isReadonly 一、实现isReactive isReactive: 检查一个对象是否是由 reactive 创建的响应式代理。 1. 单元测试 // src/reactivity/tests/reactive.spec.tsimport { reactive, isReactive } from ../reactive;describe(reactive, function () {it(happy pa…

Callable接口

前言 获取多线程的方法&#xff0c;我们都知道有三种&#xff0c;还有一种是实现Callable接口 实现Runnable接口实现Callable接口实例化Thread类使用线程池获取Callable接口 Callable接口&#xff0c;是一种让线程执行完成后&#xff0c;能够返回结果的 在说到Callable接口…

【Unity天空盒】卡通渲染中如何实现云的消散效果

写在前面 完成大气渲染之后&#xff0c;接下来就是考虑云渲染了。因为我想做的天空盒本身是想跟着这位大佬Unity 卡通渲染 程序化天空盒 - 知乎里叙述的进程来的&#xff0c;里面云实现的是原神里的云&#xff0c;原神又是在崩3的基础上加上了消散效果。但现在能找到的一些教程…

线程中的sleep, yield, join

1. 前言 今天以具体实例的方法来详细记录下实战中的sleep, yield, join。 到底是什么意思&#xff0c;应该怎么用呢&#xff1f;&#xff1f;&#xff1f; 2. 适合人群 对该类方法的概念比较模糊的人 3. 开始 3.1 sleep 此方法是一个静态方法&#xff0c;可以通过类名直接调…

【MyBatis】安装 + 框架搭建 + 使用 + 优化(全程一条龙服务讲解~)

目录 前言 一、准备工作 1.1、下载MyBatis 1.2、数据库设计 二、搭建框架 2.1、创建Maven项目 2.2、jar包、引入依赖 2.3、创建MyBatis核心配置文件 2.4、映射文件 2.5、通过junit测试功能 2.6、框架优化 三、小结——注意事项 前言 本篇全程从0到1搭建MyBatis框架…