数据库操作以及备份基础版
工具:Centos7(expect需要自己下载)
linux中操作数据库,退出mysql使用exit
mysql备份脚本编写
具体代码
#!/bin/bash
#获取当前时间
time=$(date +%Y%m%d)
#使用awk命令,分别获取到账号,密码,数据库以及数据库下的表
# 账号(i)
for i in `awk '{print $1}' mysql-config.txt`
do
# 密码(j)
j=`awk -v h="$i" '{ if(h==$1) print $2 }' mysql-config.txt`
# 数据库(k)
k=`awk -v h="$i" '{ if(h==$1) print $3 }' mysql-config.txt`
# 表(t)
for t in `awk '{print $1}' tables.txt`
do
# 使用mysqldump命令进行数据库的表备份
mysqldump -u$i -p$j $k $t > /home/$t-$time.sql
done
done
# echo命令进行输出,等同于print
echo "===数据库备份完成啦==="
使用expect,对多台电脑进行数据库备份操作(前提是每台电脑都有数据库备份的脚本以及配置文件,且路径一致)
mysql.sh代码
#! /bin/bash
# dir 脚本所在的目录
dir=$(cd $(dirname $0);pwd)
# 使用awk命令,分别获取到ip(i),账号(j),密码(k)
for i in `awk '{print $1}' hosts-config.txt`
do
j=` awk -v h="$i" '{ if(h==$1) print $2 }' hosts-config.txt`
k=` awk -v h="$i" '{ if(h==$1) print $3 }' hosts-config.txt`
# 使用expect 一键执行所有的电脑上的数据库备份
expect $dir/mysql.exp $i $j $k
done
mysql.exp代码
#!/usr/bin/expect -f
#设置参数
set ip [lindex $argv 0 ]
set user [lindex $argv 1 ]
set passwd [lindex $argv 2 ]
#设置超时时间
set timeout 10
spawn ssh $user@$ip
expect {
"(yes/no)" { send "yes\r"; exp_continue}
"password:" { send "$passwd\r" }
}
expect -re "(.*)(]#|~>|~?#|\\\$)"
send "/root/mysql_bak.sh\r"
expect -re "(.*)(]#|~>|~?#|\\\$)"
send "exit\r"
expect eof
一键执行,配上crontab命令可以实现定时执行数据库的备份
赞赏
如果这个有帮助到你并且你很想支持后续开发和维护,那么你可以扫描下方二维码随意打赏我,我将不胜感激
如果有需要接口自动化的框架,也可以直接加我微信: xl_love_grl