最近客户有个需求,小弟对于运维的东西也是半瓶醋,所以就果断的摸索了下。折磨了一个晚上终于算是搞定了。因为是两个不同的服务器,本来想用ftp,无奈小弟不是很熟悉,所以就用了scp,但是scp有个问题就是要输入密码才能复制,这下把小弟急坏了,那我这shell脚本咋办,

我的需求是我要每天定时导出三个表,然后通过scp复制到另外一台服务器上,再恢复这三个表的数据。

俗话说,家事找度娘,小弟就翻阅了度娘的衣柜,终于算是找到了件合身的衣服。

该文章链接是这个http://blog.csdn.net/xifeijian/article/details/19998129

为了避免链接不能用了,我就斗胆copy了,

在远程拷贝的时候,需要配置scp的 无密码 复制文件和目录。在编写Shell脚本的时候非常有用,你不希望shell脚本在执行过程中因为要检验密码被打断而报权限错误吧。

整个过程如下:

本地服务器:A
远程服务器:B

1.在 A 上运行 ssh-keygen -t rsa 在/home/openpf/.ssh下生成id_rsa 和 id_rsa.pub 两个文件,然后在/home/openpf/.ssh下复制备份一份id_rsa.pub 命名为 id_rsa.pub.A,以便拷贝到服务器B,如图所示:

2. 在 B 上也同样运行 ssh-keygen -t rsa

3. 在 B 的/home/openpf/.ssh下创建authorized_keys文件,把A 中 id_rsa.pub.A 文件传到 B服务器/home/openpf/.ssh 下,
    通过 cat 命令 把id_rsa.pub.A 追写到 authorized_keys 文件中,命令如下:

scp ./id_rsa.pub.A  B的IP:/home/openpf/.ssh
   cat id_rsa.pub.A  >>  authorized_keys

4.配置完毕

测试:

scp ./id_rsa.pub.A  10.16.133.200:/home/openpf/.ssh   无需输入密码执行成功

 

命令:

复制文件:
 1.将本地文件拷贝到远程
       scp 文件名 用户名@计算机IP:远程路径
 2.从远程将文件拷回本地
       scp 用户名@计算机IP:文件名 本地路径

复制目录:
  1.将本地目录拷贝到远程
        scp -r 目录名 用户名@计算机IP:远程路径
  2.从远程将目录拷回本地
        scp -r 用户名@计算机IP:目录名本地路径

以上的目录可以自己建

我的是在/root/.ssh

这样第一步scp就完成了。贴下我的shell脚本代码,小弟献丑了

#!/bin/bash
HOSTNAME="xxxx" #数据库ip
PORT="3306" #端口
USERNAME="root" #用户名
PASSWORD="xxxxx" #密码
DBNAME="rcbc" #数据库名称
TABLECUSUSER="cus_user" #数据库中表的名称
TABLECUSRANK="cus_rank" #数据库中表的名称
TABLECUSUSERBODY="cus_user_body"
backUpDir=/root/backup/mysql/question/ #保存路径
#3.设置文件备份文件名
filecususer=cus_user
filecususerbody=cus_user_body
filecusrank=cus_rank
dumpfilecususer=$backUpDir$filecususer`date -d now +%Y%m%d`.sql
dumpfilecususerbody=$backUpDir$filecususerbody`date -d now +%Y%m%d`.sql
dumpfilecusrank=$backUpDir$filecusrank`date -d now +%Y%m%d`.sql
#备份数据表
/usr/bin/mysqldump -u$USERNAME -P$PORT -p$PASSWORD -h$HOSTNAME $DBNAME $TABLECUSUSER > $dumpfilecususer
/usr/bin/mysqldump -u$USERNAME -P$PORT -p$PASSWORD -h$HOSTNAME $DBNAME $TABLECUSUSERBODY > $dumpfilecususerbody
/usr/bin/mysqldump -u$USERNAME -P$PORT -p$PASSWORD -h$HOSTNAME $DBNAME $TABLECUSRANK > $dumpfilecusrank

#删除昨天的数据
rm -f $backUpDir$filecususer`date -d -1day +%Y%m%d`.sql
rm -f $backUpDir$filecususerbody`date -d -1day +%Y%m%d`.sql
rm -f $backUpDir$filecusrank`date -d -1day +%Y%m%d`.sql

我是先备份然后再删除昨天备份的sql脚本

然后就是恢复数据了

脚本如下

#!/bin/bash
HOSTNAME=xxxx" #数据库信息
PORT="3306"
USERNAME="root"
PASSWORD="xxxx"
DBNAME="rcbc" #数据库名称
TABLECUSUSER="cus_user" #cus_user表
TABLECUSRANK='cus_rank' #cus_rank表
TABLECUSBODY='cus_user_body' #cus_user_body

#删除数据
delete_user_sql="delete from ${TABLECUSUSER}"
delete_rank_sql="delete from ${TABLECUSRANK}"
delete_body_sql="delete from ${TABLECUSBODY}"
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${delete_user_sql}"
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${delete_rank_sql}"
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${delete_body_sql}"
DATE=`date +%Y%m%d`

#复制数据
scp -r root@远程服务器ip:/root/backup/mysql/question /root/backup/mysql/scp

#执行恢复命令
/usr/bin/mysql -uroot -predcollar@2015 rcbc <<EOF
source /root/backup/mysql/scp/question/cus_user${DATE}.sql;
source /root/backup/mysql/scp/question/cus_rank${DATE}.sql;
source /root/backup/mysql/scp/question/cus_user_body${DATE}.sql;
EOF
exit;

以上就是小弟的全部内容了,献丑了。望指正

linux 通过scp 复制备份恢复mysql数据表的更多相关文章

  1. [转]PLSQL Developer备份恢复oracle数据

    本文转自:http://www.cnblogs.com/iampkm/archive/2013/06/09/3128273.html 使用PL sql提供的功能可以快速的备份恢复oracle数据. 1 ...

  2. PLSQL Developer备份恢复oracle数据

    使用PL sql提供的功能可以快速的备份恢复oracle数据. 1  导出存储过程,触发器,序列等所有用户对象.(备份) 在PL/SQL Developer的菜单Tools(工具) => Exp ...

  3. 用Myisamchk让MySQL数据表更健康

    用Myisamchk让MySQL数据表更健康 2011-03-15 09:15 水太深 ITPUB 字号:T | T 为了让MySQL数据库中的数据表“更健康”,就需要对其进行定期体检.在这里笔者推荐 ...

  4. MYSQL数据表损坏的原因分析和修复方法小结

    MYSQL数据表损坏的原因分析和修复方法小结 1.表损坏的原因分析 以下原因是导致mysql 表毁坏的常见原因: 1. 服务器突然断电导致数据文件损坏. 2. 强制关机,没有先关闭mysql 服务. ...

  5. 谈谈MySQL数据表的类型(转)

    谈谈MySQL数据表的类型 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合. 我们通常说的MySql数据库,sql server数据库等等其 ...

  6. 阿里云ECS(linux)磁盘满触发的mysql的表异常修复案例

    阿里云ECS(linux)磁盘满触发的mysql的表异常修复案例 阿里云技术支持:完颜镇江 问题现象: 磁盘空间满了,第一想到的就是删除无用的服务日志或者升级数据盘. 通常是使用du –sh去分析目录 ...

  7. Mysql数据表的增删改查

    ---恢复内容开始--- Mysql数据表的增删改查 1.创建表   语法:CREATE TABLE 表名(字段1,字段2,字段3.......) CREATE TABLE `users` ( `us ...

  8. 随机获取Mysql数据表的一条或多条记录

    随机获得Mysql数据表的一条或多条记录有很多方法,下面我就以users(userId,userName,password......)表(有一百多万条记录)为例,对比讲解下几个方法效率问题: sel ...

  9. (转)MySQL数据表中带LIKE的字符匹配查询

    MySQL数据表中带LIKE的字符匹配查询 2014年07月15日09:56    百科369 MySQL数据表中带LIKE的字符匹配查询 LIKE关键字可以匹配字符串是否相等. 如果字段的值与指定的 ...

随机推荐

  1. 通用高性能 Windows Socket 组件 HP-Socket v2.2.2 正式发布

    HP-Socket 是一套通用的高性能 Windows Socket 组件包,包含服务端组件(IOCP 模型)和客户端组件(Event Select 模型),广泛适用于 Windows 平台的 TCP ...

  2. Spring4学习笔记 - Bean的生命周期

    1 Spring IOC 容器对 Bean 的生命周期进行管理的过程: 1)通过构造器或工厂方法创建 Bean 实例 2)为 Bean 的属性设置值和对其他 Bean 的引用 3)调用 Bean 的初 ...

  3. HTML+AngularJS+Groovy如何实现登录功能

    AngularJS是一款优秀的前端JS框架,已经被用于Google的多款产品当中.AngularJS核心特性有:MVVM.模块化.自动化双向数据绑定.语义化标签.依赖注入等.AngularJS认为声明 ...

  4. CSS实现DIV水平 垂直居中-1

    水平大家都知道,一般固定宽度给个margin:0 auto:就可以了.下面实现水平垂直都居中 HTML <div class="parent"> </div> ...

  5. ID卡和IC卡

    1.ID卡 ID卡就是一种身份识别卡,卡内除了卡号之外,无任何加密功能. ID卡的工作原理:它是由卡.读卡器.后台控制器组成的. (1)读卡器通过天线发射射频信号 (2)当卡进入信号范围内后卡被激活 ...

  6. Emacs学习心得之 基础配置

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Emacs学习心得之 基础配置 1.前言2.基础配置 一.前言 本篇博文记录了Emacs的一 ...

  7. Android 短信的备份

    接着上文<Android 内容提供者的实现>,继续实战 打开File Exploer,找到mmssms.db数据库,导出 打开mmssms.db 新建项目,布局如下: <Relati ...

  8. 你真的了解UIView吗?

    一:首先查看一下关于UIView的定义 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIView : UIResponder <NSCoding, UIAppe ...

  9. new ActiveXObject("Scripting.FileSystemObject") 时抛出异常 .

    使用JScript读写本地文件时,会使用Scripting.FileSystemObject控件. IE默认是不允许运行这类“未标记为安全执行脚本的ActiveX控件”的. 因此执行下行代码时: fs ...

  10. 利用grep命令查找文件内容

    例如查找PHP源码某个函数的具体实现 grep -rn "PHP_FUNCTION(socket_accept)" ./ext