百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Navicat使用教程:使用Navicat Premium 12自动执行数据库复制(4)

wxin55 2024-10-27 15:55 11 浏览 0 评论

Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。

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

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

这篇文章将介绍如何使用Navicat Premium的新自动化实用程序自动执行数据库复制。

合并复制

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

所需的数据同步作业

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

创建批处理作业

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

  1. 单击主工具栏中的“Automation”按钮。
  2. 然后单击“Objects”工具栏中的“New Batch Job”以打开“New Batch Job”选项卡。
  3. 在“Objects”窗格中浏览上的源连接、数据库和/或架构。这将使该数据库的已保存作业显示在“Available Jobs”底部窗格中。
  4. 在“Available Jobs”窗格中,选择数据同步作业类型,然后通过双击或拖动将作业从“Available Jobs”列表移动到上面的“Selected Jobs”列表。


  1. 单击“Automation”工具栏上的“Save”按钮,并在“Save”对话框中提供描述性名称。这将启用“the Set Task Schedule”和“Delete Task Schedule”按钮。
  2. 在“Task Schedule”对话框的“General”选项卡中,您可以再次提供任务的说明,并提供执行任务的几个选项。
  3. 在“Triggers”选项卡中,可以将任务配置为按各种计划运行,包括一次、每天、每周、每月以及每种计划的任意排列。这一次,将执行两个作业而不是一个。
  4. 完成自动化作业的配置后,可以通过单击自动化工具栏中的“Start”按钮来测试它。

事务复制

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

所需的数据同步作业

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

下面是包含所有六个作业的自动化向导:



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

下面是将合并数据集传播到用户数据库的自动化作业的外观:



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



结论

这篇文章介绍了如何使用Navicat Premium 12的自动化实用程序自动执行数据库复制。它与它的同步工具结合使用,允许DBA自动执行各种类型的复制,以按照预先定义的计划运行。

点击“了解更多”下载产品最新版

↓↓↓

相关推荐

ES6中 Promise的使用场景?(es6promise用法例子)

一、介绍Promise,译为承诺,是异步编程的一种解决方案,比传统的解决方案(回调函数)更加合理和更加强大在以往我们如果处理多层异步操作,我们往往会像下面那样编写我们的代码doSomething(f...

JavaScript 对 Promise 并发的处理方法

Promise对象代表一个未来的值,它有三种状态:pending待定,这是Promise的初始状态,它可能成功,也可能失败,前途未卜fulfilled已完成,这是一种成功的状态,此时可以获取...

Promise的九大方法(promise的实例方法)

1、promise.resolv静态方法Promise.resolve(value)可以认为是newPromise方法的语法糖,比如Promise.resolve(42)可以认为是以下代码的语...

360前端一面~面试题解析(360前端开发面试题)

1.组件库按需加载怎么做的,具体打包配了什么-按需加载实现:借助打包工具(如Webpack的require.context或ES模块动态导入),在使用组件时才引入对应的代码。例如在V...

前端面试-Promise 的 finally 怎么实现的?如何在工作中使用?

Promise的finally方法是一个非常有用的工具,它无论Promise是成功(fulfilled)还是失败(rejected)都会执行,且不改变Promise的最终结果。它的实现原...

最简单手写Promise,30行代码理解Promise核心原理和发布订阅模式

看了全网手写Promise的,大部分对于新手还是比较难理解的,其中几个比较难的点:状态还未改变时通过发布订阅模式去收集事件实例化的时候通过调用构造函数里传出来的方法去修改类里面的状态,这个叫Re...

前端分享-Promise可以中途取消啦(promise可以取消吗)

传统Promise就像一台需要手动组装的设备,每次使用都要重新接线。而Promise.withResolvers的出现,相当于给开发者发了一个智能遥控器,可以随时随地控制异步操作。它解决了三大...

手写 Promise(手写输入法 中文)

前言都2020年了,Promise大家肯定都在用了,但是估计很多人对其原理还是一知半解,今天就让我们一起实现一个符合PromiseA+规范的Promise。附PromiseA+规范地址...

什么是 Promise.allSettled()!新手老手都要会?

Promise.allSettled()方法返回一个在所有给定的promise都已经fulfilled或rejected后的promise,并带有一个对象数组,每个对象表示对应的pr...

前端面试-关于Promise解析与高频面试题示范

Promise是啥,直接上图:Promise就是处理异步函数的API,它可以包裹一个异步函数,在异步函数完成时抛出完成状态,让代码结束远古时无限回掉的窘境。配合async/await语法糖,可...

宇宙厂:为什么前端离不开 Promise.withResolvers() ?

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发。1.为什么需要Promise.with...

Promise 新增了一个超实用的 API!

在JavaScript的世界里,Promise一直是处理异步操作的神器。而现在,随着ES2025的发布,Promise又迎来了一个超实用的新成员——Promise.try()!这个新方法简...

一次搞懂 Promise 异步处理(promise 异步顺序执行)

PromisePromise就像这个词的表面意识一样,表示一种承诺、许诺,会在后面给出一个结果,成功或者失败。现在已经成为了主流的异步编程的操作方式,写进了标准里面。状态Promise有且仅有...

Promise 核心机制详解(promise机制的实现原理)

一、Promise的核心状态机Promise本质上是一个状态机,其行为由内部状态严格管控。每个Promise实例在创建时处于Pending(等待)状态,此时异步操作尚未完成。当异步操作成功...

javascript——Promise(js实现promise)

1.PromiseES6开始支持,Promise对象用于一个异步操作的最终完成(包括成功和失败)及结果值的表示。简单说就是处理异步请求的。之所以叫Promise,就是我承诺,如果成功则怎么处理,失败怎...

取消回复欢迎 发表评论: