linux 通过scp 复制备份恢复mysql数据表
最近客户有个需求,小弟对于运维的东西也是半瓶醋,所以就果断的摸索了下。折磨了一个晚上终于算是搞定了。因为是两个不同的服务器,本来想用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数据表的更多相关文章
- [转]PLSQL Developer备份恢复oracle数据
本文转自:http://www.cnblogs.com/iampkm/archive/2013/06/09/3128273.html 使用PL sql提供的功能可以快速的备份恢复oracle数据. 1 ...
- PLSQL Developer备份恢复oracle数据
使用PL sql提供的功能可以快速的备份恢复oracle数据. 1 导出存储过程,触发器,序列等所有用户对象.(备份) 在PL/SQL Developer的菜单Tools(工具) => Exp ...
- 用Myisamchk让MySQL数据表更健康
用Myisamchk让MySQL数据表更健康 2011-03-15 09:15 水太深 ITPUB 字号:T | T 为了让MySQL数据库中的数据表“更健康”,就需要对其进行定期体检.在这里笔者推荐 ...
- MYSQL数据表损坏的原因分析和修复方法小结
MYSQL数据表损坏的原因分析和修复方法小结 1.表损坏的原因分析 以下原因是导致mysql 表毁坏的常见原因: 1. 服务器突然断电导致数据文件损坏. 2. 强制关机,没有先关闭mysql 服务. ...
- 谈谈MySQL数据表的类型(转)
谈谈MySQL数据表的类型 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合. 我们通常说的MySql数据库,sql server数据库等等其 ...
- 阿里云ECS(linux)磁盘满触发的mysql的表异常修复案例
阿里云ECS(linux)磁盘满触发的mysql的表异常修复案例 阿里云技术支持:完颜镇江 问题现象: 磁盘空间满了,第一想到的就是删除无用的服务日志或者升级数据盘. 通常是使用du –sh去分析目录 ...
- Mysql数据表的增删改查
---恢复内容开始--- Mysql数据表的增删改查 1.创建表 语法:CREATE TABLE 表名(字段1,字段2,字段3.......) CREATE TABLE `users` ( `us ...
- 随机获取Mysql数据表的一条或多条记录
随机获得Mysql数据表的一条或多条记录有很多方法,下面我就以users(userId,userName,password......)表(有一百多万条记录)为例,对比讲解下几个方法效率问题: sel ...
- (转)MySQL数据表中带LIKE的字符匹配查询
MySQL数据表中带LIKE的字符匹配查询 2014年07月15日09:56 百科369 MySQL数据表中带LIKE的字符匹配查询 LIKE关键字可以匹配字符串是否相等. 如果字段的值与指定的 ...
随机推荐
- visual studio 查找/替换对话框
工具--选项--环境--查找和替换 如下设置: 则会在查找.替换到最后时会弹出提示,比如“查找到达了搜索的起点”,如下图: 原文:http://keleyi.com/a/bjac/27iswh0p.h ...
- sizzle源码分析 (2)ID 类 tag querySelectorAll 快速匹配
不是所有的选择器都需要去分词,生成相应的匹配函数,这样流程比较复杂,当浏览器具备原生的方法去匹配元素是,没有理由不优先匹配,下面看看进入Sizzle后,它是怎么优先匹配这些元素的: function ...
- 【iScroll源码学习01】准备阶段
前言 我们昨天初步了解了为什么会出现iScroll:[SPA]移动站点APP化研究之上中下页面的iScroll化(上),然后简单的写了一个demo来模拟iScroll,其中了解到了以下知识点: ① v ...
- BASIS--笨办法解决ALV_GRID的列剪切丢失纪录的错误
最近经常有业务人员问及在ALV_grid输出报表中,选择某一列,点击左键,并点击弹出菜单的复制文本,复制出的文本存在丢失 (纪录不少,但部分纪录的文本丢失).该如何解决呢? 后来跟踪代码发现这个命令没 ...
- sharepoint 开发相关工具总结
1.CAML Designer 2013 开发caml用 http://biwug-web.sharepoint.com/SitePages/Caml_designer.aspx 2.SharePoi ...
- [Android]异步加载图片,内存缓存,文件缓存,imageview显示图片时增加淡入淡出动画
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3574131.html 这个可以实现ImageView异步加载 ...
- 详细对比IB开发与纯手码开发的优劣。
1.IB是什么? Interface Builder 是一种通过图形化界面搭建UI的方式,并把窗口.菜单栏以及窗口上的各种控件的对象都“冻结”在了一个 NIB文档里:程序运行时,这些对象将会“苏醒”. ...
- 需要记住的几个ASCII码
--------- A--------- a---------
- Android程序意外Crash后自动重启
1.自定义UncaughtExceptionHandler public class UnCeHandler implements UncaughtExceptionHandler { private ...
- 【数据库】MySQL的安装与简单使用
首先我们要下载Mysql的安装包,大家可以到http://mysql.com官网中根据自己的电脑系统版本下载 也可以点击 MySQL资源 下载 密码:btuu 建议下载5.7以上的版本,因为省掉了许多 ...