利用expect安装mysql_linux使用mysqldump+expect+crontab实现mysql周期冷备份思路详解

一、遇到的问题

我们使用过mysqldump都知道,使用该命令后,需要我们手动输入 mysql的密码,那么我们就不能够直接在crontab中使用mysqldump实现周期备份。其实我们可以使用expect脚本自动输入密码,从而实现真正的周期备份。如果你不知道什么是expect,建议先请看这篇文章:https://www.jb51.net/article/197865.htm

二、思路

创建一个utils文件,里面存放shell脚本,包括mysqldump、scp等命令

使用expect脚本,执行utils内的脚本,并为其自动输入密码

最后使用驱动脚本,执行expect,在该脚本里面传入需要的参数

思路如下:

080d30003cafd07d0ca36843559fe1e7.png

三、代码

3.1、单机冷备份

(1)mysqldump的shell脚本

backup.sh:

#!/bin/bash

mysql_username=$1

backup_databases=$2

backup_path=$3

mysqldump -u ${mysql_username} -p --databases ${backup_databases} > ${backup_path}

(2)执行mysqldump的expect脚本,能帮助我们自动输入mysql代码

single_cold_backup_service.exp:

#!/usr/bin/expect

set timeout 5

#设置本机信息

set mysql_username [lindex $argv 0]

set backup_database [lindex $argv 1]

set backup_path [lindex $argv 2]

#utils路径

set utils_path /home/hadoop/backup_script/utils

spawn bash ${utils_path}/backup.sh ${mysql_username} ${backup_database} ${backup_path}

expect {

"*assword*" {send "nimabidecao1\r"} #输入密码

}

expect eof

(3)驱动脚本,执行expect,这里可以传入需要的参数

single_cold_backup_service_driver.sh:

#!/bin/bash

#这里的数据就可以写死了

mysql_username=root

backup_databases=school

backup_path=$HOME/backup_data/${backup_databases}.sql

#运行expect脚本

expect $HOME/backup_script/single_cold_backup/single_cold_backup_service.exp ${mysql_username} ${backup_databases} ${backup_path}

这里一定要十分注意自己的路径,强烈建议使用绝对路径来执行

(4)使用crontab周期执行驱动脚本

进入crontab编辑:crontab -e

输入如下内容:

0 9 * * 1 bash /home/hadoop/backup_script/single_cold_backup/single_cold_backup_driver.sh

意思为:每周1早上9点执行一次备份

若你想确定自己想要的时间,可以到这个网址:https://crontab-generator.org/ 去点选自己想要的时间

3.2、双机冷备份

(1)复制远程文件,用于拷贝本地机的mysql备份文件

scp.sh:

#!/bin/bash

local_backup_path=$1

another_user=$2

another_ip=$3

another_backup_path=$4

scp ${local_backup_path} ${another_user}@${another_ip}:${another_backup_path}

(2)执行mysqldump的expect脚本,能帮助我们自动输入mysql代码

double_cold_backup_service.exp:

#!/usr/bin/expect

set timeout 5

#主机信息

set mysql_username [lindex $argv 0]

set backup_database [lindex $argv 1]

set backup_path [lindex $argv 2]

#从机信息

set slave_user [lindex $argv 3]

set slave_ip [lindex $argv 4]

set slave_backup_path [lindex $argv 5]

#utils路径

set utils_path /home/hadoop/backup_script/utils

spawn bash ${utils_path}/backup.sh ${mysql_username} ${backup_database} ${backup_path}

expect {

"*assword*" {send "nimabidecao1\r"} #输入密码

}

spawn bash ${utils_path}/scp.sh ${backup_path} ${slave_user} ${slave_ip} ${slave_backup_path}

expect {

"*assword*" {send "nimabidecao1\r"} #输入密码

}

expect eof

(3)驱动脚本,执行expect,这里可以传入需要的参数

double_cold_backup_service_driver.sh:

#!/bin/bash

#本机信息

mysql_username=root

backup_databases=school

backup_path=$HOME/backup_data/${backup_databases}.sql

#从机信息

slave_user=meizhaowei

slave_ip=172.20.10.14

slave_backup_path=backup_data/doule_cold_backup_data/${backup_databases}.sql

#执行写绝对路径

expect $HOME/backup_script/double_cold_backup/double_cold_backup_service.exp ${mysql_username} ${backup_databases} ${backup_path} ${slave_user} ${slave_ip} ${slave_backup_path}

(4)使用crontab周期执行驱动脚本

0 9 * * 1 bash /home/hadoop/backup_script/double_cold_backup/double_cold_backup_driver.sh

意思是:每周1早上9点执行一次备份

到此这篇关于linux使用mysqldump+expect+crontab实现mysql周期冷备份思路详解的文章就介绍到这了,更多相关mysql周期冷备份内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502269.shtml

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

相关文章

数据结构实验之图论九:最小生成树_初高中数学竞赛训练----图论初步2

例题中有2019年罗马尼亚大师赛第3试题树树:一个连通图,如果没有一个环,则叫树。森林:若干个独立的树形成一个森林。链:一个特殊的树是节点中,除去两个节点的度为1,其它均为2,叫做链。…

在每个运行中运行多个查询_Spring Data JPA的运行原理及几种查询方式

Spring Data JPA的运行原理:PersistenceContext(name"entityManagerFactory") private EntityManager em; Test public void test1(){ //org.springframework.data.jpa.repository.support.SimpleJpaRepositor yfba8bf //System.out.println(this.u…

467python教程_Magnus Lie Hetland的《Python基础教程(第3版)》自学笔记(持续更新中)...

转载请注明原创出处,谢谢!如果读完觉得有收获的话,欢迎点赞加关注。Python基础教程.jpg快速上手:基础知识交互式解释器在Python交互式解释器的提示符>>>后面输入help()可以获取指南,在IDLE中,还可…

java 获取所有带指定注解的类名_SXT DAY023 反射和注解

1. 反射机制介绍_Class对象获取反射机制是 Java 的动态性之一 动态语言:在程序运行时,可以改变程序的结构或变量的 类型。反射机制的常见作用动态的加载类、动态的获取类的信息(属性,方法,构造 器) 动态构造对象 动态调用类和对象的任意方法、…

tomcat勾连mysql_tomcat9.0启动脚本startup.bat的分析

1、 Apache Tomcat的下载和安装从Apache官网https://tomcat.apache.org/可以下载各种版本的tomcat软件,下载的文件格式可以是zip/tar.gz/exe形式的。如下图所示,在64位windows中使用tomcat,我们可以下载"64-bit Windows.zip",直接解…

安卓能硬改的手机机型_【每日新闻】小米11部分镜头参数爆料;华为重新采购手机零部件 重启4G手机生产...

数据铸造影响力关注每日行业热点资讯,掌握业界动态趋势,以下是今天的精彩内容:1、小米11部分镜头参数爆料:超大底50MP主摄,长焦达12MP或48MP2、华为重新采购手机零部件 重启4G手机生产1、小米11部分镜头参数爆料&#…

kafka集群为什么需要三个节点_大白话带你认识 Kafka

前言应大部分的小伙伴的要求,在Yarn之前先来一个kafka的小插曲,轻松愉快。一、Kafka基础消息系统的作用应该大部份小伙伴都清楚,用机油装箱举个例子所以消息系统就是如上图我们所说的仓库,能在中间过程作为缓存,并且实…

mysql对日期的操作_MySql对日期的操作

1、计算俩个日期之间所差的天数select datediff(2018-09-18,2018-09-01)2、计算日期是这周的星期几select dayofweek(2018-09-18)1.因为外国一般都是把星期天认为是一周的开始,所以用这种方法一般都得减去一天才是这周的星期几select date_format(2018-09-17,"…

sql移动加权计算利润_计算机视觉中的半监督学习

作者:Amit Chaudhary编译:ronghuaiyang导读图解半监督的各种方法的关键思想。计算机视觉的半监督学习方法在过去几年得到了快速发展。目前最先进的方法是在结构和损失函数方面对之前的工作进行了简化,以及引入了通过混合不同方案的混合方法。…

.net 启动mysql数据库连接_[ASP.net教程]mysql数据库连接方式(.net)

[ASP.net教程]mysql数据库连接方式(.net)0 2014-07-17 18:01:001.通过ado.net连接(数据库连接串中为中文貌似无法使用)需要添加MySql.Data.dll(可通过安装mysql-connector-net-6.8.3.mis获得)引用MySql.Data.dll调用方式string connectionString “serverlocalhost;port3306;da…

overflowhidden把内容遮住了怎么办_图片有水印怎么办?不用PS,有这4招就够了!...

图片是我们在做 PPT 时经常会使用到的高频元素。往往会在搜索引擎中搜到很多带有水印的图片,怎么办呢?固然 PS 等软件去水印很给力,但是对于连 PPT 都还没有用得很熟悉的同学,让他们再去下载安装 Photoshop 软件,仅仅只…

mysql开窗函数over_oracle分析函数技术详解(配上开窗函数over())

一、Oracle分析函数入门 分析函数是什么? 分析函数是Oracle专门用于 解决复杂报表统计需求 的功能强大的函数, 它可以在数据中进行分组然后计算基于组的某种统计 ,并且每一组的每一行都可以返回一个统计。 分析函数和聚合函数的不同之处是什么…

传递给系统调用的数据区域太小怎么解决_一口气说出“分布式追踪系统”原理!...

“ 在微服务架构中,一次请求往往涉及到多个模块,多个中间件,多台机器的相互协作才能完成。图片来自 Pexels这一系列调用请求中,有些是串行的,有些是并行的,那么如何确定这个请求背后调用了哪些应用&#xf…

语义分割和实例分割_一文读懂语义分割与实例分割

以人工智能为导向的现代计算机视觉技术,在过去的十年中发生了巨大的变化。今天,它被广泛用于图像分类、人脸识别、物体检测、视频分析以及机器人及自动驾驶汽车中的图像处理等领域。图像分割技术是目前预测图像领域最热门的一项技术,原因在于…

游戏自审自查报告_开发的射箭小游戏上线了,分享一下我在开发过程中遇到的问题...

利用业余时间开发的微信小游戏-射箭救人质上线了,主要玩法就是操作弓箭射断绳子把人救下来就可以了。图片资源是我找一个朋友做的。开发过程不算太顺利。磕磕绊绊做了12关。希望大家支持下。谢谢。分享一下我在开发中遇到的问题和部分解决方案、希望对大家有所帮助。…

java 抛出异常的目的_Java实验八,异常

一.实验目的1. 掌握自定义异常类的编写;2. 掌握使用try-catch语句来处理异常。二.实验内容及要求车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品:1. 编写一个Exception的子类DangerException,该子类可以…

postmapping注解_Swagger常用注解

在使用swagger时候如果掌握一些注解的使用,则在开发过程中测试的时候可以事半功倍,尤其在与前端技术进行联调,前端技术在访问swagger中的每个api时,可以很清楚的知道每个url对应的请求类型、参数类型、参数是否非必输、参数个数等…

java map 多个值_java 一个函数EnumMap返回多个值

在开发过程中,经常会有这种情况,就是一个函数需要返回多个值,这是一个问题!!网上这个问题的解决方法:1、使用map返回值;这个方法问题是,你并不知道如何返回值的key是什么&#xff0c…

调用别的方法的返回值_Spring boot如何实现异步调用

Spring boot如何实现异步调用异步调用:一个可以无需等待被调用函数的返回值就让操作继续进行的方法举个例子异步调用就是你 喊 你朋友吃饭 ,你朋友说知道了 ,待会忙完去找你 ,你就去做别的了。同步调用就是你 喊 你朋友吃饭 ,你朋…

照片识别出错_AI跨年龄人脸识别技术在跨年龄寻亲的应用简析

9月3日,央视财经《经济半小时》栏目播出了一段有关失踪儿童找回的视频新闻。在这则新闻中,跨年龄人脸识别技术是最为核心的功臣,深圳警方利用跨年龄人脸识别技术,根据一张3岁孩童的儿童照片找回了失踪了十几年的孩子,让…