主要利用了mysqldump和sshpass进行备份和免密上传

以下是代码实现:

#!/bin/bash

#该脚本放在主服务器运行

#从服务器账号密码ip
remotehost="xxxxxxxxxx"  #远程主机IP
passwd="xxxxxxxx"      #远程主机密码
user="root"                #远程主机账号

localbackdir=/root/backupdir
remotebackdir=/root/backupdir
curdate=`date +"%Y-%m-%d"`
django_sql=$curdate"-django.sql"
vpnmaintenance_sql=$curdate"-vpn-maintenance.sql

if [ ! -d $localbackdir ];then
echo "test"
echo "本地备份目录不存在,将创建!"
mkdir $localbackdir
docker exec -it mysql mysqldump -u root -p"_VPN3211" django >$localbackdir/$django_sql
docker exec -it mysql mysqldump -u root -p"_VPN3211" vpn-maintenance >$localbackdir/$vpnmaintenance_sql
echo -e "\033[31m 以下是备份内容 \033[0m"
ls -lh $localbackdir
else

echo "本地备份目录存在,即将备份!"
echo `date`

#备份数据库
docker exec -it mysql mysqldump -u root -p"_VPN3211" django >$localbackdir/$django_sql
docker exec -it mysql mysqldump -u root -p"_VPN3211" vpn-maintenance >$localbackdir/$vpnmaintenance_sql
echo -e "\033[31m 以下是备份内容 \033[0m"
ls -lh $localbackdir

#echo $?
fi

#判断远程主机目录是否存在
result=`sshpass -p $passwd ssh $user@$remotehost "[ -d $remotebackdir ]"`
if [ $? == 0 ];then
echo "远程备份目录存在,将直接备份!"
sshpass -p$passwd scp $localbackdir/$django_sql $user@$remotehost:$remotebackdir/$django_sql
sshpass -p$passwd scp $localbackdir/$vpnmaintenance_sql $user@$remotehost:$remotebackdir/$vpnmaintenance_sql
echo -e "\033[31m 以下是备份内容 \033[0m"
sshpass -p$passwd ssh $user@$remotehost ls -lh $remotebackdir
else
echo "$remotebackdir 远程备份目录不存在,将创建!"
sshpass -p$passwd ssh $user@$remotehost mkdir $remotebackdir
sshpass -p$passwd scp $localbackdir/$django_sql $user@$remotehost:$remotebackdir/$django_sql
sshpass -p$passwd scp $localbackdir/$vpnmaintenance_sql $user@$remotehost:$remotebackdir/$vpnmaintenance_sql
sshpass -p$passwd ssh $user@$remotehost ls -lh $remotebackdir
fi

mysql数据库的备份及免密码上传的更多相关文章

  1. 百万行mysql数据库优化和10G大文件上传方案

    百万行mysql数据库优化和10G大文件上传方案 最近这几天正在忙这个优化的方案,一直没时间耍,忙碌了一段时间终于还是拿下了这个项目?项目中不要每次都把程序上的问题,让mysql数据库来承担,它只是个 ...

  2. 使用percona-xtrabackup工具对mysql数据库的备份方案

    使用percona-xtrabackup工具对mysql数据库的备份方案 需要备份mysql的主机 172.16.155.23存放备份mysql的主机 172.16.155.22 目的:将155.23 ...

  3. 一、MySQL中的索引 二、MySQL中的函数 三、MySQL数据库的备份和恢复 四、数据库设计和优化(重点)

    一.MySQL中的索引###<1>索引的概念 索引就是一种数据结构(高效获取数据),在mysql中以文件的方式存在.存储建立了索引列的地址或者指向. 文件 :(以某种数据 结构存放) 存放 ...

  4. Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁

    Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁 一丶安装 pip install PyMySQL 二丶pymysql连接数据库 ### 语法: ...

  5. 如何用SQL语句实现Mysql数据库的备份与还原

    以前一直做android客户端的项目,根本没有开发asp.net mvc的开发,现阶段做了一个模块,参数设置,以及数据库的备份与还原.其需求如下: 参数设置 本项参数设置为对自动数据备份进行设置,管理 ...

  6. mysqldump常用于MySQL数据库逻辑备份

    mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump ...

  7. [知了堂学习笔记]_Java代码实现MySQL数据库的备份与还原

    通常在MySQL数据库的备份和恢复的时候,多是采用在cmd中执行mysql命令来实现. 例如: mysqldump -h127.0.0.1 -uroot -ppass test > d:/tes ...

  8. mysql数据库的备份和还原

    mysql数据库的备份命令:mysqldump -u root  -p 要备份的现有数据库名  >  备份后的sql文件名.sql,例如:  mysqldump -u root -p  heal ...

  9. 关于MySQL数据库的备份方案

    这里简单总结MySQL的备份分为3种:分为冷备份,逻辑备份,热备份. 1.冷备份: 一般主要用于非核心业务,这类业务一般都是允许业务中断的,冷备份的特点就是数度快,恢复时也最为简单.通常直接复物理文件 ...

随机推荐

  1. RSA算法原理与加密解密 求私钥等价求求模反元素 等价于分解出2个质数 (r*X+1)%[(p-1)(q-1)]=0

    Rsapaper.pdf http://people.csail.mit.edu/rivest/Rsapaper.pdf [概述Abstract 1.将字符串按照双方约定的规则转化为小于n的正整数m, ...

  2. Warm up---hdu4612(缩点,树的直径)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4612 给一个无向图, 加上一条边后,求桥最少有几个: 那我们加的那条边的两个顶点u,v:一定是u,v之 ...

  3. python操作mysql数据库读取一个数据库的表写入另一个数据库

    写这个肯定是工作需要了,不啰嗦,直接说事 我现在有两台主机,一台是公司主机,一台是客户主机,要求把公司主机上的三个表同步到客户主机上的数据库 注意是同步,首先就得考虑用linux定时任务或者主从复制, ...

  4. nginx lua模块安装

    1.安装LuaJIT,LuaJIT为LuaJIT is a Just-In-Time Compiler (JIT) for the Lua programming language wget http ...

  5. 数据库触发器,禁止DDL操作

    CREATE TRIGGER [Object_Change_Trigger_DDL] ON DATABASE FOR ALTER_TABLE,DROP_TABLE,CREATE_TABLE,CREAT ...

  6. 005-线程sleep、join、yield、wait、notify、notifyAll、run、start、synchronized

    一.线程sleep join yield wait 1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁.也就是说如果有synchroni ...

  7. 菜单和按钮-EasyUI Menu 菜单、EasyUI Linkbutton 链接按钮、EasyUI Menubutton 菜单按钮、EasyUI Splitbutton 分割按钮

    EasyUI Menu 菜单 通过 $.fn.menu.defaults 重写默认的 defaults. 菜单(Menu)通常用于上下文菜单.它是创建其他菜单组件(比如:menubutton.spli ...

  8. Django model中数据批量导入bulk_create()

    在Django中需要向数据库中插入多条数据(list).使用如下方法,每次save()的时候都会访问一次数据库.导致性能问题: for i in resultlist: p = Account(nam ...

  9. C++语言中的四种类型转换

    1 引子 这篇笔记是根据StackOverflow上面的一个问题整理而成,主要内容是对C/C++当中四种类型转换操作进行举例说明.在之前其实对它们都是有所了解的,而随着自己在进行总结,并敲了一些测试示 ...

  10. link标签 rel="stylesheet"

    首先,link标签是用于当前文档引用外部文档的,其次,这个标签的rel属性用于设置对象和链接目的间的关系,说白了就是指明你链进来的对象是个什么东西的,具体的值及其所表示的关系如下:Alternate: ...