有两台服务器,一台正式服务器A,一台测试服务器B,现需要将正式服务器A中的数据库每天备份到测试服务器B,提高数据库的容灾性以及防止数据库在测试中出现错误。
1.从正式服务器A中导出需要备份的数据库
使用mysqldump指令导出数据库文件/usr/sbin/mysqldump -u root -ppassword database | gzip > bakdatabaseName.sql.gzpassword为数据库密码,database为需要备份的数据库名
2.将备份的数据库文件发送至测试服务器B
使用scp指令发送备份的数据库文件scp bakdatabaseName.sql.gz root@测试服务器B的IP:/root/mysqlbak/bakdatabaseName.sql.gz
该操作需要输入测试服务器B的密码,所以通过另外一个expect脚本实现与终端的交互从而实现自动输入密码,expect需要安装。
3.通过expect脚本实现运行scp指令后自动输入密码#!/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 yourpassword
set passwderror 0
spawn scp $local_file $remote_pa