我用 Navicat 这些技能少加了好多班,也为公司挣了不少w

我用 Navicat 的这些技能少加了好多班,也为公司挣了不少w

今天又用 Navicat 解决了一个数据同步的需求,财务又到账一笔收入.......

本文我将结合我过去的实践,给大家推荐一款数据库的运维工具。给大家呈现一下竟然可以用 Navicat 解决这些实际问题 。

熬了几个夜,毫无保留地将这些技能分享,只为博的一个赞,哈哈哈......😁

功能概览

核心功能 描述
数据传输 将 A 处的数据传输到 B 处。主要是表和数据
数据同步 将 A 处的数据和 B 处的数据进行比较,找出差异进行同步。主要是表和数据
结构同步 将 A 处的结构和 B 处的结构进行比较,包括函数、存储过程等。可以导出对应脚本
转储、备份 将数据进行导出。(结构和数据、数据)
快速生成数据 快速生成测试数据;性能压测生成数据
服务器监控 监控服务器的配置数据
逆向工程 快速生成 ER 图
其他功能 打印数据表信息等

以上功能,将结合实际案例,以图文并茂的方式进行讲解。

一、数据传输

这里解释一下数据传输的概念: 从 A 到 B,数据传输是单向的,即将 A 里面有的数据都传输到 B 中。

如下所示:将数据库 database1 传输到数据库 database2 中。

1.1 需求场景

场景 描述
数据库服务商更换 第一年购买了阿里云的 MySQL 数据库,由于价格原因原因等, 第二年换成华为云的 MySQL。需要将阿里云 MySQL 的数据迁移到华为云 MySQL 数据库
数据库资源升级 A 数据库对应存储资源快满了,将其数据库中的数据迁移到资源更好的 B 数据库中
资源安全升级 由于安全等,将环境 A 的数据库迁移到环境 B 中
数据初始化 新项目系统基础数据从预发环境迁移到正式环境等

场景还有很多,不一一举例,那么用 Navicat 如何实现这一需求呢,请往下看。

以测试例子进行举例说明

第一步:找到数据传输

第二步:确定数据传输方向

这一步,确定好方向。方向反了就是事故了。

第三步:高级配置设置。(特殊场景确实高级)

第四步:其他选型配置设置

如图已经标注注意点。

第五步:开始执行

创建前删除目标对象: 如果目标库中有对应的表,勾选上会被删除。如果不勾选,那么第一个遇到错误时继续则必须要勾选,否则执行创建创建的检查存在就直接停止了。不再继续了。

第六步:执行结果

通过这几步,数据就传输完成了。

1.3 注意事项

  1. 注意同步方向, 要明确从哪里到哪里。
  2. 默认情况,从源到目标,目标库中的对应存在会删除被删除,包括数据和结构。如果目标表里面的数据不应该被删除,则这种传输方式会是一种事故,特别注意。 数据同步是一种覆盖的传输。

数据传输务必仔细,拉其他人一起确认。可以对旧的库先做备份,这样确保万无一失。

1.4 其他工具

像上面的这种情况其实还有很多其他工具可以实现的。

工具 优势 劣势
dump 1. 可以dump整个库
  1. 也能dump特殊几个表 | 1. 比较粗粒度; | | 数据库厂商 | 工具成熟 | 1. 付费
  2. 需要网路白名单配置 |

当然还有其他工具,不再举例。

1.5 小结

  1. 如果你只需同步部分字段到目标表,这个工具将是一个不错的选择
  2. 目标库是全新的,将旧的数据库都传输到新的库;不需太多的设置,直接采用默认就好了。
  3. 因为是按照批进行数据传输的,效率比较高。

如果目标库存在表,也存在数据,要找出差异呢?只同步差异呢? 这是我四五年前遇到的一个升级问题。还记得那些加班的夜晚,直到我遇到 Navicat 这个技能。

二、数据同步

2.1 需求场景

我曾用这个数据同步功能做过两个数据库的差异对比!下面是发布在 CSDN 的博客文章,是2018年,一晃 6年过去了.....

场景 描述
系统升级,找到灰度与生产之间的配置数据差异。 找到差异进行执行

当年做 saas 产品,都是先升级产品,再去升级定制的企业; 每次做产品迭代时都要找到大量差异数据进行执行。在没有这个能力之前都是手动处理,非常麻烦。 那些加班的业务真的久久不能忘记......

第一步:选择数据同步

第二步:确认数据同步的方向

第三步:填写配置

第四步:比较差异

这一步:可以根据上一步的选型进行确认。 根据实际情况,可与偶把删除、更新去掉。

特别说明:这种比较是十分消耗资源的操作。 不建议用同步方式去做数据传输。因为会有比多过程会非常的慢。

2.3 注意事项

这是同步过程,需要特别注意,否则会出问题! 会有删除、更新的情况。 这不操作一定要慎重处理。虽然工具很好用,但一旦操作错误,会是重大故障!

当然,除了数据同步以外, 数据库常常会存储过程(函数)等。 以前 saas 产品,升级的时候会遇到存储过程的升级,所以也会非常麻烦。 找出差异脚本估计是我那一个周的工作,但是自从学会下面这个功能以后,老板都对我刮目相看了。

三、结构同步

比较两个数据库之间的结构差异,包括表、视图、函数(存储过程) 等

3.1 需求场景

这个是用得最多的一种能力。 因为产品常常升级,因此会经常遇到增加字段、增加索引、增加函数等。 对于传统的瀑布开发模式,因此每次升级都是比较大的改动,常常会伴随大量的数据库变更。因此要正确、无遗留地整理出 SQL 升级脚本并不是一件简单的事情。有了这个功能后,我解放了。

场景 描述
系统升级,需要升级表结构、比如增加了一个字段;需要升级函数、索引等等 通过比较找到与线上数据库之间的差异,形成 DDL 脚本。快速升级到线上。

根据 DDL 脚本,可以编写出对应的回滚脚本,这也是我当初常常做的事情之一。

第一步:确定数据源。

第二步:确定对象,包括数据表、视图、函数等;这一步会生成脚本

生成差异脚本,需要进行详细的比对,防止不必要的变更到了线上。

最后一步:检查执行结果

3.3 注意事项

注意:可以反向生成回滚脚本,这是我的经典操作之一。 这样到了线上出了问题,可以通过回滚脚本进行回滚,不一定要手动去整理写出回滚脚本。

这一步,我会关注 DELETE、DROP 语句,通过搜索找出这些语句。重点 Review。

任何的变更都是很重要的,务必升级前拉会做好 review 工作。

四、转储 & 备份 & 导出向导 & 快速复制一张表

备份数据是一种非常好的行为! 这些功能,可以备份表、存储过程等。

4.1 需求场景

场景 描述
出于安全角度,备份数据 备份一张表、备份一个库等,"有备无患"

转储 SQL 文件

可以选择结构和数据、只有结构。 可以选择针对一个表、或者一个库;不能编辑具体字段。

备份

备份选型,功能更加丰富。可以选择对象(表、视图、函数)等

导出向导

导出向导功能,将数据导出更多的格式,真的比想象更强大!

快速复制一张表

当需要对一张表做更新操作,为了保证安全,可以快速复制一张表,做备份。

3.3 小结

这些运维工具都是十分方便的。 在做一些高危操作的时,常常可以通过备份来达到"有备无患"。这些功能也深得我心!

五、快速生成测试数据

5.1 需求场景

场景 描述
测试同学需要进行性能测试,以前需要写程序,写脚本才能快速生成大量数据 快速生成压测数据
开发一个新表,需要造一些数据做功能验证 快速生成测试数据

第一步:找到工具入口

第二步:确定表需要生成的数据行

第三步:可以根据高级选型,对生成的数据进行定制!

提效工具,真的太赞了!!!

5.3 小结

可以将这个功能推荐你的测试朋友们,因为很棒,比首先脚本快太多了。要是早知道这个功能,也不至于加班了。

六、其他功能

6.1 服务器监控

知道 mysql 服务器运行时候的配置信息。可以快速进行调整。除非你了解这些变量,否则不要修改它们

6.2 逆向工程 or ER 图

对于快速了解一个系统的表示非常方便的

6.3 全局搜索?

大致定位为全局搜索,查找关键字。但用的比较少。

其他功能就不再一一介绍了。感谢的可以自行下载进行研究。

七、最后总结

  1. 保持对数据的敬畏之心,任何的数据变更都要慎重。生成数据更需要做好 review 工作
  2. 上面功能,建议先自行练习和测试,然后再到生成环境使用

纸上得来终觉浅,绝知此事要躬行!

相关推荐
Chrikk20 分钟前
Go-性能调优实战案例
开发语言·后端·golang
幼儿园老大*23 分钟前
Go的环境搭建以及GoLand安装教程
开发语言·经验分享·后端·golang·go
canyuemanyue23 分钟前
go语言连续监控事件并回调处理
开发语言·后端·golang
杜杜的man25 分钟前
【go从零单排】go语言中的指针
开发语言·后端·golang
Ai 编码助手1 小时前
MySQL中distinct与group by之间的性能进行比较
数据库·mysql
陈燚_重生之又为程序员2 小时前
基于梧桐数据库的实时数据分析解决方案
数据库·数据挖掘·数据分析
caridle2 小时前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
白云如幻2 小时前
MySQL排序查询
数据库·mysql
萧鼎2 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
^velpro^2 小时前
数据库连接池的创建
java·开发语言·数据库