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.mzph.cn/news/649478.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++实现推箱子游戏

推箱子游戏 运行之后的效果如视频所示,在完成游戏后播放音乐 准备工作:建立一个新的文件夹,并在文件夹中任意增加一张背景图片,以及各个部件的照片文件 因为这里用到了贴图技术,要使用graphic.h这个函数&#xff0c…

用于 C/C++ Debug 的宏函数

Debug.h 用于打印 Debug 信息的小工具&#xff1a; #pragma once#include <stdio.h>#define DEBUG 1#define pn puts("") #define where printf("%s(%d)-<%s>.\n\n", __FILE__, __LINE__, __FUNCTION__)#if (DEBUG 1) #define print_error(…

海外云手机三大优势

在全球化潮流下&#xff0c;企业因业务需求对海外手机卡等设备的需求不断攀升&#xff0c;推动了海外云手机业务的蓬勃发展。相较于自行置备手机设备&#xff0c;海外云手机不仅能够降低成本&#xff0c;还具备诸多优势&#xff0c;让我们深入探讨其中的三大黄金优势。 经济实惠…

【Linux】进程概述

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

统计学-R语言-8.1

文章目录 前言方差分析方差分析的原理什么是方差分析误差分解 单因子方差分析数学模型效应检验 练习 前言 本片开始介绍有关方差分析的知识。 方差分析 方差分析的基本原理是在20世纪20年代由英国统计学家Ronald A.Fisher在进行实验设计时为解释实验数据而首先引入的。方差分…

最新多功能PHP图床源码 /兰空图床Lsky Pro开源版v2.1/ 单纯的图床程序源码

源码介绍&#xff1a; Lsky Pro 是一个用于在线上传、管理图片的图床程序&#xff0c;中文名&#xff1a;兰空图床&#xff0c;你可以将它作为自己的云上相册&#xff0c;亦可以当作你的写作贴图库。 该程序的最初版本诞生于2017年10月&#xff0c;由ThinkPHP 5框架精心打造而…

【Linux 基础】常用基础指令(上)

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

Python高超音速导弹

Python高超音速导弹的全自动化开发研发具有重要性的原因如下&#xff1a; 提高研发效率&#xff1a;全自动化开发可以通过自动化工具和流程&#xff0c;快速完成各种任务&#xff0c;包括代码编写、测试、集成和部署等。这样可以大大提高研发效率&#xff0c;缩短开发周期。 减…

08 BGP 华为官方文档 十一条选路原则

BGP 华为官方文档 十一条选路原则 丢弃下一跳不可达的路由 1&#xff09;比较“协议首选值-pref-val”属性&#xff0c;数值越大越好&#xff0c;默认值是0&#xff0c;只在本设备生效&#xff0c;不在网络中传递 2&#xff09;比较“本地优先级-local_pref”属性&#xff0c;…

Ceph分布式存储自动化运维平台开发实践

文章目录 1. 背景介绍1.1 什么是Ceph&#xff1f;1.1.1 Ceph的核心组件1.1.2 Ceph的优势 1.2 自动化运维的需求目标 2. 平台架构设计和组件版本2.1 平台架构设计2.2 组件版本2.3 模块划分&#xff08;已经脱敏处理&#xff09;2.3.1 当前版本V1.0支持功能2.3.2 前后端代码结构t…

JS-单例设计模式

设计模式&#xff1a;针对特定问题提出的简洁优化的解决方案 构造函数或类仅仅只能实例化一次&#xff0c;得到一个实例对象比如&#xff1a;工具类 在项目中使用工具类实例对象时&#xff0c;每一个实例对象的属性方法与功能作用都是一样的那么在项目中如果每次使用都需要重新…

如何保障主机安全

做好主机安全是非常重要&#xff0c;因为主机安全涉及保护主机的数据存储和处理的保密性、完整性和可用性。主机安全的具体措施包括硬件、固件、系统软件的自身安全以及一系列附加的安全技术和安全管理措施&#xff0c;从而建立一个完整的主机安全保护环境。 主机一旦被黑客入…

利用 “diart“ 和 OpenAI 的 Whisper 简化实时转录

利用 "diart" 和 OpenAI 的 Whisper 简化实时转录 工作原理 Diart 是一个基于人工智能的 Python 库&#xff0c;用于实时记录说话者语言&#xff08;即 "谁在什么时候说话"&#xff09;&#xff0c;它建立在 pyannote.audio 模型之上&#xff0c;专为实时…

Linux CentOS 7 安装mysql的步骤

#wget命令用来从指定的URL下载文件 wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum install mysql-community-server 重启mysql服务 service mysqld restart || systemctl restart mysqld…

RabbitMQ之Window中安装配置与使用

RabbitMQ之Window中安装配置与使用 文章目录 RabbitMQ之Window中安装配置与使用1 安装准备1.1 安装Erlang1.2 ErLnag环境变量配置 2. 安装RabbitMQ2.1 安装2.2 环境变量设置 官网&#xff1a;https://www.rabbitmq.com 下载地址&#xff1a;https://www.rabbitmq.com/download.…

MATLAB中conv和filter函数的区别

文章目录 1.函数简介w conv(u,v)yfilter(b,a,x)讨论情况 2.先说结论3.代码验证 1.函数简介 w conv(u,v) w conv(u,v) 返回向量 u 和 v 的卷积结果&#xff0c;卷积运算是对信号的移位加权求和。 yfilter(b,a,x) 使用由分子和分母系数 b 和 a 定义的有理传递函数对输入数…

Git推送大量内容导致http 413错误

Git推送大量内容导致服务端HTTP 413错误 问题描述 使用git push 大量变更内容&#xff08;超过60M&#xff09;时报 http 413错误&#xff0c;详细错误信息&#xff1a; Compressing objects: 100% (2907/2907), done. Writing objects: 100% (6760/6760), 64.18 MiB | 1.18…

【日常学习笔记】gtest

https://zhuanlan.zhihu.com/p/369466622 int Factorial(int n) {int result 1;for (int i 1; i < n; i) {result * i;}return result; }TEST(TestSuiteName, TestName) 第一个参数可以表示为一个对某一个函数进行测试&#xff0c;第二个参数表示对这个函数测试时的分的几…

微信小程序 仿微信聊天界面

1. 需求效果图 2. 方案 为实现这样的效果&#xff0c;首先要解决两个问题&#xff1a; 2.1.点击输入框弹出软键盘后&#xff0c;将已有的少许聊天内容弹出&#xff0c;导致看不到的问题 点击输入框弹出软键盘后&#xff0c;将已有的少许聊天内容弹出&#xff0c;导致看不到的问…

银行数据仓库体系实践(8)--主数据模型设计

主数据区域中保留了数据仓库的所有基础数据及历史数据&#xff0c;是数据仓库中最重要的数据区域之一&#xff0c;那主数据区域中主要分为近源模型区和整合&#xff08;主题&#xff09;模型区。上一节讲到了模型的设计流程如下图所示。那近源模型层的设计在第2.3和3这两个步骤…