Linux系统中编写bash脚本进行mysql的数据同步
一、为何要用脚本做数据同步
(一)、问题
我们的视频监控平台云服务器,需要向上级的服务器定期同步一些数据表的数据,前期做了个程序,可以实现同步。但是,现在数据库的结构改了,结果又需要该程序,原来的开发人员已经做其他工作了,因此造成了很大的麻烦。
考虑到用数据库同步工具,但是,要进行各种配置。而这些数据基本上每周就要同步一次,若采用一些工具的话,都要人工操作,也会造成一些错误。
(二)、脚本的好处
经过仔细的考察,觉得在Linux中使用脚本进行数据同步具有一些好处:
- 自动化:脚本可以在预定时间自动执行数据同步任务,无需人工干预。这样可以节省时间,并确保数据始终保持同步。
- 可重复性:脚本可以重复执行相同的操作,而不会出现人为错误。这对于定期进行的数据同步非常有用。
- 灵活性:脚本可以根据需要进行定制和修改,以满足特定的数据同步需求。通过调整脚本,可以轻松地处理不同的数据源和目标。
- 可靠性:脚本可以捕获并记录执行过程中的错误和异常,以便进行故障排除和问题解决。这有助于提高数据同步的可靠性和稳定性。
- 高效性:使用脚本进行数据同步可以大大提高工作效率。通过批量处理数据,可以更快地完成数据同步任务,减少等待时间。
- 安全性:脚本可以提供对数据的访问控制和加密功能,以确保数据在同步过程中的安全传输和存储。
因此,决定采用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
根据自己的需要,可以写成周期运行的任务,可以做一些适应性的改动。
相关文章:
Linux系统中编写bash脚本进行mysql的数据同步
一、为何要用脚本做数据同步 (一)、问题 我们的视频监控平台云服务器,需要向上级的服务器定期同步一些数据表的数据,前期做了个程序,可以实现同步。但是,现在数据库的结构改了,结果又需要该程序…...

光耦驱动继电器电路图大全
光耦驱动继电器电路图(一) 注: 1U1-1脚可接12V,也可接5V,1U1导通,1Q1导通,1Q1-30V,线圈两端电压为11.7V. 1U1-1脚不接或接地,1U1不通,1Q1截止,1…...

【AI量化分析】小明在量化中使用交叉验证原理深度分析解读
进行交叉验证好处 提高模型的泛化能力:通过将数据集分成多个部分并使用其中的一部分数据进行模型训练,然后使用另一部分数据对模型进行测试,可以确保模型在未见过的数据上表现良好。这样可以降低模型过拟合或欠拟合的风险,提高模…...

2024最新版Visual Studio Code安装使用指南
2024最新版Visual Studio Code安装使用指南 Installation and Usage Guide for the Latest Visual Studio Code in 2024 By JacksonML Visual Studio Code最新版1.85已经于2023年11月由其官网 https://code.visualstudio.com正式发布,这是微软公司2024年发行的的最…...

接口请求重试八种方法
请求三方接口需要加入重试机制 一、循环重试 在请求接口的代码块中加入循环,如果请求失败则继续请求,直到请求成功或达到最大重试次数。 int retryTimes 3; for(int i 0;i < retryTimes;i){try{//请求接口的代码break;}catch(Exception e){//处理…...

【Linux 基础】常用基础指令(上)
文章目录 一、 创建新用户并设置密码二、ls指令ls指令基本概念ls指令的简写操作 三、pwd指令四、cd指令五、touch指令六、rm指令七、mkdir指令八、rmdir 指令 一、 创建新用户并设置密码 ls /home —— 查看存在多少用户 whoami —— 查看当前用户名 adduser 用户名 —— 创建新…...

【RT-DETR有效改进】EfficientFormerV2移动设备优化的视觉网络(附对比试验效果图)
前言 大家好,我是Snu77,这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进,内容持续更新,每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本,同时修改内容也支持Re…...

《动手学深度学习(PyTorch版)》笔记4.4
注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过。…...

Linux/Academy
Enumeration nmap 首先扫描目标端口对外开放情况 nmap -p- 10.10.10.215 -T4 发现对外开放了22,80,33060三个端口,端口详细信息如下 结果显示80端口运行着http,且给出了域名academy.htb,现将ip与域名写到/et/hosts中,然后从ht…...

windows .vscode的json文件配置 CMake 构建项目 调试窗口中文设置等
一、CMake 和 mingw64的安装和环境配置 二、tasks.json和launch.json文件配置 tasks.json {"version": "2.0.0","options": {"cwd": "${workspaceFolder}/build"},"tasks": [{"type": "shell&q…...

uniapp canvas做的刮刮乐解决蒙层能自定义图片
最近给湖南中烟做元春活动,一个月要开发4个小活动,这个是其中一个难度一般,最难的是一个类似鲤鱼跃龙门的小游戏,哎,真实为难我这个“拍黄片”的。下面是主要代码。 <canvas :style"{width:widthpx,height:hei…...
利用SPI,结合数据库连接池durid进行数据服务架构灵活设计
接着上一篇文章业务开始围绕原始凭证展开,而展开的基础无疑是围绕着科目展开的。首先我们业务层面以财政部的小企业会计准则的一级科目引入软件中。下面我们来考虑如何将科目切入软件更加灵活,方便业务扩展、维护与升级。 SPI是首先想到的数据服务方式 为什么会想到它呢?首…...

自动驾驶的决策层逻辑
作者 / 阿宝 编辑 / 阿宝 出品 / 阿宝1990 自动驾驶意味着决策责任方的转移 我国2020至2025年将会是向高级自动驾驶跨越的关键5年。自动驾驶等级提高意味着对驾驶员参与度的需求降低,以L3级别为界,低级别自动驾驶环境监测主体和决策责任方仍保留于驾驶…...
排序算法——希尔排序算法详解
希尔排序算法详解 一. 引言1. 背景介绍1.1 数据排序的重要性1.2 希尔排序的由来 2. 排序算法的分类2.1 比较排序和非比较排序2.2 希尔排序的类型 二. 希尔排序基本概念1. 希尔排序的定义1.1 缩小增量排序1.2 插入排序的变种 2. 希尔排序的工作原理2.1 分组2.2 插入排序2.3 逐步…...

Docker 容器内运行 mysqldump 命令来导出 MySQL 数据库,自动化备份
备份容器数据库命令: docker exec 容器名称或ID mysqldump -u用户名 -p密码 数据库名称 > 导出文件.sql请替换以下占位符: 容器名称或ID:您的 MySQL 容器的名称或ID。用户名:您的 MySQL 用户名。密码:您的 MySQL …...
【Java万花筒】数字信号魔法:Java库的魅力解析
从傅立叶到矩阵:数字信号Java库全景剖析 前言 随着数字信号处理在科学、工程和数据分析领域的广泛应用,开发者对高效、灵活的工具的需求日益增长。本文旨在探讨几个与数字信号处理相关的Java库,通过介绍其特点、用途以及与已有库的关系&…...
面试高频知识点:2线程 2.1 线程池 2.1.2 JDK中常见的线程池实现有哪些?
1. Executors类 Executors类是线程池的工厂类,提供了一些静态方法用于创建不同类型的线程池。然而,它的使用并不推荐在生产环境中,因为它存在一些缺点,比如默认使用无界的任务队列,可能导致内存溢出。 2. ThreadPool…...

Azure Private endpoint DNS 记录是如何解析的
Private endpoint 从本质上来说是Azure 服务在Azure 虚拟网络中安插的一张带私有地址的网卡。 举例来说如果Storage account在没有绑定private endpoint之前,查询Storage account的DNS记录会是如下情况: Seq Name …...
windows 安装sql server 华为云文档
先安装net3.5,剩下安装sqlserver步骤看下面文档 安装SQL Server_弹性云服务器 ECS_最佳实践_搭建Microsoft SharePoint Server 2016_华为云 (huaweicloud.com)...

相同主题文章竟同时发表在同一个2区期刊 | 孟德尔随机化周报(1.10-1.16)
欢迎报名2024年郑老师团队课程课程! 郑老师科研统计培训,包括临床数据、公共数据分析课程,欢迎报名 孟德尔随机化,Mendilian Randomization,简写为MR,是一种在流行病学领域应用广泛的一种实验设计方法,利用…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...

Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...