mysql远程备份_mysql远程备份

相关链接:

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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#!/usr/bin/expect

#FileName:scp.exp

set timeout60

if { [llength $argv] < 2} {

puts"Usage:"puts"$argv0 local_file remote_path"exit1}

set local_file [lindex $argv0]

set remote_path [lindex $argv1]

setpasswdroot123

set passwderror0spawnscp$local_file $remote_path

expect {"*assword:*"{if { $passwderror == 1} {

puts"passwd is error"exit2}

set timeout1000set passwderror1send"$passwd\r"exp_continue

}"*es/no)?*"{

send"yes\r"exp_continue

}

timeout {

puts"connect is timeout"exit3}

}

View Code

backmysql.sh

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#!/bin/bash

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

View Code

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

updatemysql.sh

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#!/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

View Code

安装软件 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值