我用 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. 上面功能,建议先自行练习和测试,然后再到生成环境使用

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

相关推荐
Java编程爱好者6 小时前
做了个Java打包工具,可以双击启动了!
后端
猿与禅6 小时前
Spring Boot 4.0 完整核心特性及实践指南
java·spring boot·后端·spring·重大升级·springboot4.0
平凡运维之路6 小时前
端口转发
后端
运维@小兵7 小时前
Spring-AI系列——Tool Calling获取当前时间
java·后端·spring
Java水解7 小时前
前端与 Spring Boot 后端无感 Token 刷新 - 从原理到全栈实践
前端·后端
镜花水月linyi7 小时前
Java 线程创建的完整链路:从 Java 层 → JVM 层 → 操作系统层
java·后端·面试
czhc11400756637 小时前
c# 1213
开发语言·数据库·c#
voltina7 小时前
【SQL】【事务】
数据库·sql
文心快码BaiduComate7 小时前
我用文心快码Spec 模式搓了个“pre作弊器”,妈妈再也不用担心我开会忘词了(附源码)
前端·后端·程序员
古渡蓝按7 小时前
PostgreSQL数据库在Windows上实现异地自动备份指南-喂饭图文教程
数据库