相关链接:
https://blog.csdn.net/LiuHuan_study/article/details/81512831
https://www.cnblogs.com/ryanzheng/p/8444128.html

1.跨服务器备份
原理:服务器A 192.168.100.200
mysql root 123456

服务器B 192.168.100.201
mysql root 123456

在A服务器上编写脚本 backmysql.sh 用于备份A服务器上MYSQL数据库制定库到B服务器上
scp.exp 用于ssh免密码登录

scp.exp

#!/usr/bin/expect

#FileName:scp.exp

set timeout 

if { [llength $argv] < } {

puts "Usage:"

puts "$argv0 local_file remote_path"

exit 

}

set local_file [lindex $argv ]

set remote_path [lindex $argv ]

set passwd root123

set passwderror 

spawn scp $local_file $remote_path

expect {

"*assword:*" {

if { $passwderror ==  } {

puts "passwd is error"

exit 

}

set timeout 

set passwderror 

send "$passwd\r"

exp_continue

}

"*es/no)?*" {

send "yes\r"

exp_continue

}

timeout {

puts "connect is timeout"

exit 

}

}

backmysql.sh

#!/bin/bash

backupdir=/home/backup

mysql_bin_dir=/usr/bin    #mysqldump的路径

databaseName=agm    #备份的数据库名字

bakdatabaseName=backup_agm    #备份的数据库全部表的文件名

mysqluser=root    #正式服务器A的mysql用户名

mysqlpwd=    #正式服务器A的mysql密码

targetServerUser=root    #测试服务器B的用户名

targetServerIP=192.168.100.201    #测试服务器B的IP地址

targetpath=/home/backup    #测试服务器B备份路径

time=`date +%Y%m%d`    #当天的日期年月日

#从数据库导出数据库备份文件
$mysql_bin_dir/mysqldump -u$mysqluser -p$mysqlpwd $databaseName | gzip > $backupdir/$bakdatabaseName$time.sql.gz #保留3天内的备份文件,时间可通过-mtime 后的 + 修改
find $backupdir -name "$bakdatabaseName*.sql.gz" -type f -mtime + -exec rm -f {} \; > /dev/null >& #将备份文件发送到测试服务器B
/home/backup/scp.exp $backupdir/$bakdatabaseName$time.sql.gz $targetServerUser@$targetServerIP:$targetpath/$bakdatabaseName$time.sql.gz

在B服务器上编写脚本updatemysql.sh用于恢复数据到B服务器mysql上

updatemysql.sh

#!/bin/bash

# FileName:updatemysql.sh

# This is a ShellScript For Auto DB Backup and Delete old Backup

backupdir=/home/backup           #测试服务器B数据库备份文件路径

mysql_bin_dir=/usr/bin            #测试服务器B的mysql的安装路径

databaseName=agm               #数据库名字

bakdatabaseName=backup_$databaseName      #备份的数据库的文件名

mysqluser=root                     #测试服务器B的mysql用户名

mysqlpwd=                    #测试服务器B的mysql密码

time=` date +%Y%m%d `              #当天的日期:年月日

#先删除前一天的数据库
$mysql_bin_dir/mysql -u $mysqluser -p$mysqlpwd -e "drop database $databaseName;" #创建新的数据库
$mysql_bin_dir/mysql -u $mysqluser -p$mysqlpwd -e "create database $databaseName;" #将备份的数据库文件导入到mysql中
gzip -dc $backupdir/$bakdatabaseName$time.sql.gz | $mysql_bin_dir/mysql -u $mysqluser -p$mysqlpwd $databaseName #保留3天内的备份文件,时间可通过-mtime 后的 + 修改
find $backupdir -name "*.sql.gz" -type f -mtime + -exec rm -f {} \; > /dev/null >&

安装软件 yum install crontabs
ssh免密码登录
mysql 远程登录权限

backmysql.sh
backupdir=/home/backup
mysql_bin_dir=/usr/bin #mysqldump的路径
databaseName=agm #备份的数据库名字
bakdatabaseName=backup_agm #备份的数据库全部表的文件名
mysqluser=root #正式服务器A的mysql用户名
mysqlpwd=123456 #正式服务器A的mysql密码
targetServerUser=root #测试服务器B的用户名
targetServerIP=192.168.100.201 #测试服务器B的IP地址
targetpath=/home/backup #测试服务器B备份路径
time=`date +%Y%m%d` #当天的日期年月日
#从数据库导出数据库备份文件
$mysql_bin_dir/mysqldump -u$mysqluser -p$mysqlpwd $databaseName | gzip > $backupdir/$bakdatabaseName$time.sql.gz
#保留3天内的备份文件,时间可通过-mtime 后的 +2 修改
find $backupdir -name "$bakdatabaseName*.sql.gz" -type f -mtime +2 -exec rm -f {} \; > /dev/null 2>&1
#将备份文件发送到测试服务器B
/home/backup/scp.exp $backupdir/$bakdatabaseName$time.sql.gz $targetServerUser@$targetServerIP:$targetpath/$bakdatabaseName$time.sql.gz

scp.exp
#!/usr/bin/expect
#FileName:scp.exp
set timeout 60
if { [llength $argv] < 2} {
puts "Usage:"
puts "$argv0 local_file remote_path"
exit 1
}
set local_file [lindex $argv 0]
set remote_path [lindex $argv 1]
set passwd root123
set passwderror 0
spawn scp $local_file $remote_path
expect {
"*assword:*" {
if { $passwderror == 1 } {
puts "passwd is error"
exit 2
}
set timeout 1000
set passwderror 1
send "$passwd\r"
exp_continue
}
"*es/no)?*" {
send "yes\r"
exp_continue
}
timeout {
puts "connect is timeout"
exit 3
}
}

updatemysql.sh
#!/bin/bash
# FileName:updatemysql.sh
# This is a ShellScript For Auto DB Backup and Delete old Backup
backupdir=/home/backup #测试服务器B数据库备份文件路径
mysql_bin_dir=/usr/bin #测试服务器B的mysql的安装路径
databaseName=agm #数据库名字
bakdatabaseName=backup_$databaseName #备份的数据库的文件名
mysqluser=root #测试服务器B的mysql用户名
mysqlpwd=123456 #测试服务器B的mysql密码
time=` date +%Y%m%d ` #当天的日期:年月日
#先删除前一天的数据库
$mysql_bin_dir/mysql -u $mysqluser -p$mysqlpwd -e "drop database $databaseName;"
#创建新的数据库
$mysql_bin_dir/mysql -u $mysqluser -p$mysqlpwd -e "create database $databaseName;"
#将备份的数据库文件导入到mysql中
gzip -dc $backupdir/$bakdatabaseName$time.sql.gz | $mysql_bin_dir/mysql -u $mysqluser -p$mysqlpwd $databaseName
#保留3天内的备份文件,时间可通过-mtime 后的 +2 修改
find $backupdir -name "*.sql.gz" -type f -mtime +2 -exec rm -f {} \; > /dev/null 2>&1

mysql远程备份的更多相关文章

  1. mysql 远程备份

    #远程备份./innobackupex --defaults-file=/etc/my.cnf --no-timestamp --user xxx --host 192.168.1.123 \--pa ...

  2. mysql数据库备份并且实现远程复制

    一.实现ssh 远程登陆 机器环境: 192.167.33.108 clent 用户:crawler 192.167.33.77 server 用户:crawler 1.客户端 生成密钥 /home/ ...

  3. centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾

    centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾 系统:centos6.5 1.创建脚本目录 mkdir -p /usr/local/sh/ 创建备份web ...

  4. Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...

  5. 转 MySQL 数据备份与还原

    MySQL 数据备份与还原 原贴:http://www.cnblogs.com/kissdodog/p/4174421.html   一.数据备份 1.使用mysqldump命令备份 mysqldum ...

  6. mysql自动备份维护shell脚本 (copy)

    #!/bin/bash #Mysql 自动备份 压缩并上传到 指定ftp #设想每天凌晨3点备份mysql #编辑crontab配置文件 # * * * backupmysql.sh #压缩并以&qu ...

  7. Mysql数据库备份和按条件导出表数据

    Mysql数据库备份和按条件导出表数据   一.备份数据库 # mysqldump -u root -p  dbcurr>/home/20090219.sql   mysqldum为备份命令,- ...

  8. MySQL恢复备份读书笔记

    1. 任何执行时间长于 wait_timeout或interactive_timeout选项值得备份,都会导致会话被关闭,这也会隐含执行UNLOCK TABLES命令.2. 对于使用FLUSH TAB ...

  9. 用rsync从Linux到Windows远程备份

    论 rsync是Linux系统下的数据镜像备份工具,从软件的命名上就可以看出来 了——remote sync.rsync支持大多数的类Unix系统,无论是Linux.Solaris还是BSD上都经过了 ...

随机推荐

  1. POJ 2240 【这题貌似可以直接FLOYD 屌丝用SPFA通过枚举找正权值环 顺便学了下map】

    题意: 给了n种硬币的名称,给了m种硬币间的转换关系. 从任意兑换地点开始兑换,看是否能够通过兑换的方式增加金钱. 思路: 用SPFA不断对各个点进行松弛操作,寻找正权值的环.如果找到则输出Yes. ...

  2. 2017年icpc西安网络赛 Maximum Flow (找规律+数位dp)

    题目 https://nanti.jisuanke.com/t/17118 题意 有n个点0,1,2...n-1,对于一个点对(i,j)满足i<j,那么连一条边,边权为i xor j,求0到n- ...

  3. Java数组操作方法收集(快速判断某个值在这个数组中)

    Java数组操作最高效的方式是循环取值,如果转换成集合那么就会分配内存,效率不如前者,但是方法多,需要在性能调优上去权衡.切记:数组是数组,集合是集合. 下面是收集最常用的数组转成集合的操作方法: i ...

  4. Spring的AOP AspectJ切入点语法详解(转)

    一.Spring AOP支持的AspectJ切入点指示符 切入点指示符用来指示切入点表达式目的,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指示 ...

  5. 微服务 Framework

    Dubbo :https://github.com/dubbo Spring Cloud :https://github.com/spring-cloud

  6. [转]linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结

    原文:http://www.jb51.net/LINUXjishu/43356.html ------------------------------------------------------- ...

  7. Unable to connect to database server to retrieve database list; Arcgis 连接不上postsql库;

    在C:\Program Files (x86)\ArcGIS\Desktop10.2\bin 目录下添加 pg依赖的插件 插件下载地址:

  8. C++卷积神经网络实例:tiny_cnn代码具体解释(6)——average_pooling_layer层结构类分析

    在之前的博文中我们着重分析了convolutional_layer类的代码结构.在这篇博文中分析相应的下採样层average_pooling_layer类: 一.下採样层的作用 下採样层的作用理论上来 ...

  9. properties文件读取配置信息

    public static void main(String[] args){ String printerName=""; String path = "C:\\Bar ...

  10. 【iOS系列】-程序开启后台运行

    [iOS系列]-程序开启后台运行 iOS程序是伪后台的运行,可是有时候我们需要让其在后台也要进行一些操作,我们可以让其伪装成音乐的APP,这样就可以让程序后台进行相关操作了,具体做法如下: 1:在Ap ...