本文主要是介绍Linux自动备份数据库文件到另一台服务器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
假设服务器A是一台数据库服务器,服务器B是一台备份服务器,我们需要在A服务器上编写数据备份与文件推送到服务器B的脚步
back.sh
备份保存目录
folder=/home/mysql-back-up
rm -rf /home/mysql-back-up
mkdir $folder
cd $folder
day=`date +%Y-%m-%d`
mkdir -p "$day"
cd $day
#数据库服务器ip,填写服务器的公网地址即可
host=serverIP
#用户名
user=userName
#密码 自己写
password=myPassword
#要备份的数据库名
#db=dbName
db=dbName
#执行备份语句
/usr/local/mysql/bin/mysqldump -h$host -u$user -p$password $db > ./backFileName.sql
#推送文件到备份服务器
/usr/local/scp.exp /home/mysql-back-up/ 服务器用户@服务器地址:/home/
通过expect脚本实现运行scp指令后自动输入密码
需要安装expect ,yum install expect
scp.exp
#!/usr/bin/expect#FileName:scp.expset timeout 60if { [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 myPasswordset passwderror 0spawn scp -r -p $local_file $remote_pathexpect {"*assword:*" {if { $passwderror == 1 } {puts "passwd is error"exit 2}set timeout 1000set passwderror 1send "$passwd\r"exp_continue}"*es/no)?*" {send "yes\r"exp_continue}timeout {puts "connect is timeout"exit 3}}
把myPassword改成服务器B的密码即可
1、脚本需要加上权限 chmod -R 777 back.sh
2、创建定时任务
a)、crontab -e
b)、0 1 * * * sh /usr/local/back.sh #每天凌晨一点执行
c)、/bin/systemctl restart crond.service 重启cron
这篇关于Linux自动备份数据库文件到另一台服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!