当前位置: 首页 > news >正文

Linux系统中编写bash脚本进行mysql的数据同步

一、为何要用脚本做数据同步

(一)、问题

        我们的视频监控平台云服务器,需要向上级的服务器定期同步一些数据表的数据,前期做了个程序,可以实现同步。但是,现在数据库的结构改了,结果又需要该程序,原来的开发人员已经做其他工作了,因此造成了很大的麻烦。

        考虑到用数据库同步工具,但是,要进行各种配置。而这些数据基本上每周就要同步一次,若采用一些工具的话,都要人工操作,也会造成一些错误。

(二)、脚本的好处

       经过仔细的考察,觉得在Linux中使用脚本进行数据同步具有一些好处:

  1. 自动化:脚本可以在预定时间自动执行数据同步任务,无需人工干预。这样可以节省时间,并确保数据始终保持同步。
  2. 可重复性:脚本可以重复执行相同的操作,而不会出现人为错误。这对于定期进行的数据同步非常有用。
  3. 灵活性:脚本可以根据需要进行定制和修改,以满足特定的数据同步需求。通过调整脚本,可以轻松地处理不同的数据源和目标。
  4. 可靠性:脚本可以捕获并记录执行过程中的错误和异常,以便进行故障排除和问题解决。这有助于提高数据同步的可靠性和稳定性。
  5. 高效性:使用脚本进行数据同步可以大大提高工作效率。通过批量处理数据,可以更快地完成数据同步任务,减少等待时间。
  6. 安全性:脚本可以提供对数据的访问控制和加密功能,以确保数据在同步过程中的安全传输和存储。

因此,决定采用navicat的命令行工具为主,编写bash脚本,实现数据库的同步

二、navicat及安装

(一)、navicat介绍

        Navicat是一款强大的数据库管理工具,支持多种数据库系统,包括MySQL、Oracle、PostgreSQL、SQLite、SQL Server等。以下是关于Navicat的详细介绍:

(1)连接和管理多种数据库:Navicat可以方便地连接本地的或者远程的数据库,并提供一套完善的数据库管理功能,如数据导入/导出、数据同步、数据备份和还原等。

(2)可视化数据库结构:Navicat能够直观地显示数据库的结构,用户可以通过图形化的方式对数据库进行设计和操作。

(3)高效的数据查询和管理:Navicat提供强大的数据查询和管理功能,用户可以快速地查询、编辑和删除数据,以及执行复杂的SQL查询语句。

(4)安全性:Navicat支持SSL加密连接,可以保证数据传输的安全性。同时,它也支持用户权限管理,可以根据不同用户的角色和权限来限制对数据库的访问。

(5)可定制性:Navicat提供了丰富的定制选项,用户可以根据自己的需要调整界面的颜色、字体和布局等。

(6)多平台支持:Navicat支持多种操作系统,包括Windows、Mac OS和Linux等。

(7)高度兼容性:Navicat与各种数据库版本兼容,包括旧版本和新版本。

(8)丰富的文档支持:Navicat提供了详细的文档和教程,帮助用户更好地理解和使用该工具。

(9)强大的技术支持:Navicat提供了专业的技术支持,用户可以通过官方网站、论坛和邮件等方式获得帮助。

        Navicat是一款功能强大、易于使用的数据库管理工具,适用于各种规模的企业和开发者。无论您是要管理个人的小型数据库还是大型企业的数据库,Navicat都能够提供全面的解决方案。

(二)、navicat的安装及启动

        下面以centos为例,来阐述navicat的安装和运行

1、安装步骤

        步骤1:打开终端或SSH连接到CentOS服务器。

        步骤2:确保您的系统已安装了EPEL(Extra Packages for Enterprise Linux)仓库。如果没有安装,请运行以下命令进行安装:

[root@localhost ~]#sudo yum install epel-release

        步骤3:安装Navicat。在CentOS中,您可以使用YUM命令来安装Navicat。运行以下命令进行安装:

[root@localhost ~]#sudo yum install navicat

        步骤4:等待安装完成。安装过程可能需要一些时间,具体时间取决于您的服务器性能和网络速度。

2、启动

安装完成后,您可以通过几种方式运行navicat:

(1)运行Navicat命令来启动Navicat:

[root@localhost ~]# Navicat

(2)通过web浏览器来使用

        Navicat将启动并在您的默认Web浏览器中打开。您可以使用Navicat的管理界面来连接和管理数据库。

(3)命令行工具来使用navicat

      这里就不累述了。

三、编写bash脚本实现数据同步

        使用Navicat提供的命令行工具Navicat Command Line,通过编写脚本文件来执行数据同步的命令。Navicat Command Line提供了丰富的命令和选项,可以满足各种数据同步的需求。

        以下做了个简单的数据同步脚本,用于在Linux centos系统上使用Navicat Command Line进行数据同步:

#!/bin/bash  # 源数据库信息  
source_host="本地DB的主机名"  
source_port="本地端口"  
source_username="本地DB的用户名"  
source_password="本地用户密码"  
source_database="本地DB"  # 目标数据库信息  
target_host="目标DB的主机名"  
target_port="目标端口"  
target_username="目标的用户名"  
target_password="目标用户密码"  
target_database="目标DB"  # 同步选项  
options="-server=MySQL -method=备库同步 -type=full -source=$source_database -target=$target_database -user=$source_username -password=$source_password -host=$source_host -port=$source_port -to=$target_host -toPort=$target_port -toUser=$target_username -toPassword=$target_password"  # 执行数据同步命令  
/path/to/navicat-commandline $options

        若数据库结果发生了变化,比如,在数据库的 TestTable表中增加了一个 addStr1 ,128位,字符串格式,也可以进行数据库同步,脚本可以写成如下:

#!/bin/bash  # 源数据库信息  
source_host="本地DB的主机名"  
source_port="本地端口"  
source_username="本地DB的用户名"  
source_password="本地用户密码"  
source_database="本地DB"  # 目标数据库信息  
target_host="目标DB的主机名"  
target_port="目标端口"  
target_username="目标的用户名"  
target_password="目标用户密码"  
target_database="目标DB"  # 同步选项  
options="-server=MySQL -method=备库同步 -type=full -source=$source_database -target=$target_database -user=$source_username -password=$source_password -host=$source_host -port=$source_port -to=$target_host -toPort=$target_port -toUser=$target_username -toPassword=$target_password -columnAddStr1='128' -columnAddStr1Type='string'"  # 执行数据同步命令  
/path/to/navicat-commandline $options

根据自己的需要,可以写成周期运行的任务,可以做一些适应性的改动。

http://www.lryc.cn/news/288542.html

相关文章:

  • 光耦驱动继电器电路图大全
  • 【AI量化分析】小明在量化中使用交叉验证原理深度分析解读
  • 2024最新版Visual Studio Code安装使用指南
  • 接口请求重试八种方法
  • 【Linux 基础】常用基础指令(上)
  • 【RT-DETR有效改进】EfficientFormerV2移动设备优化的视觉网络(附对比试验效果图)
  • 《动手学深度学习(PyTorch版)》笔记4.4
  • Linux/Academy
  • windows .vscode的json文件配置 CMake 构建项目 调试窗口中文设置等
  • uniapp canvas做的刮刮乐解决蒙层能自定义图片
  • 利用SPI,结合数据库连接池durid进行数据服务架构灵活设计
  • 自动驾驶的决策层逻辑
  • 排序算法——希尔排序算法详解
  • Docker 容器内运行 mysqldump 命令来导出 MySQL 数据库,自动化备份
  • 【Java万花筒】数字信号魔法:Java库的魅力解析
  • 面试高频知识点:2线程 2.1 线程池 2.1.2 JDK中常见的线程池实现有哪些?
  • Azure Private endpoint DNS 记录是如何解析的
  • windows 安装sql server 华为云文档
  • 相同主题文章竟同时发表在同一个2区期刊 | 孟德尔随机化周报(1.10-1.16)
  • 网络安全的使命:守护数字世界的稳定和信任
  • 【七、centos要停止维护了,我选择Almalinux】
  • 架构师之路(十六)计算机网络(传输层)
  • python 调用SumatraPDF 静默打印PDF
  • nginx部署https域名ssl证书
  • Python学习之路-Django基础:HelloDjango
  • 完成NAT实验
  • uniapp 用web-view嵌套网页地址并传参
  • 时序数据库Tdengine 批量插入避免因为主键ts时间重复导致数据被覆盖掉
  • 【小白教程】幻兽帕鲁服务器一键搭建 | 支持更新 | 自定义配置
  • Chatgpt的崛起之路