先下载xtrabackup
[root@localhost ~]#yum install xtrabackup -y
再写脚本
[root@localhost ~]#vim mysql_backup.sh
#!/bin/bash
read -p "请选择MySQL备份方式 { 1:[mysqldump] | 2:[xtrabackup] },请输入数字 " NUM
case $1 in
1)
## mysqldump全量复制
mysqldump -A -F --single-transaction --master-data=2 > /data/mysqldump_backup/all_`date +%Y%m%d%H%M%S`.sql
if [ $? == 0 ];than
echo "mysqldump 备份完成!"
else
echo "备份失败,请检查!"
exit
;;
2)
## xtrabackup
xtrabackup --backup --target-dir=/data/xtrabackup_backup &>/dev/null
if [ $? == 0 ];than
echo "xtrabackup 备份完成!"
else
echo "备份失败,请检查!"
exit
;;
*)
echo "输入错误,请输入1或者2!"
exit
;;
esac
执行备份
[root@localhost data]# mkdir -p /data/{mysqldump_backup,xtrabackup_backup}
[root@localhost data]#
[root@localhost data]#
[root@localhost data]# sh mysql_backup.sh
请选择MySQL备份方式 { 1:[mysqldump] | 2:[xtrabackup] },请输入数字: 1
mysqldump 备份完成!
[root@localhost data]# sh mysql_backup.sh
请选择MySQL备份方式 { 1:[mysqldump] | 2:[xtrabackup] },请输入数字: 2
xtrabackup 备份完成!
[root@localhost data]# ll /data/*
-rw-r--r-- 1 root root 678 Jan 26 23:44 /data/mysql_backup.sh
/data/mysqldump_backup:
total 512
-rw-r--r-- 1 root root 521610 Jan 26 23:45 all_20220126234555.sql
/data/xtrabackup_backup:
total 18460
-rw-r----- 1 root root 386 Jan 26 23:46 backup-my.cnf
drwx------ 2 root root 4096 Jan 26 23:46 hellodb
-rw-r----- 1 root root 18874368 Jan 26 23:46 ibdata1
drwx------ 2 root root 4096 Jan 26 23:46 mysql
drwx------ 2 root root 4096 Jan 26 23:46 performance_schema
drwx------ 2 root root 20 Jan 26 23:46 test
-rw-r----- 1 root root 113 Jan 26 23:46 xtrabackup_checkpoints
-rw-r----- 1 root root 433 Jan 26 23:46 xtrabackup_info
-rw-r----- 1 root root 2560 Jan 26 23:46 xtrabackup_logfile
另外一个写的不错的,保存借鉴一下
#!/bin/bash
date=`date '+%F'`
sock="-S /data/mysql/mysql3306/socket/mysql.sock"
dbdir="/backup/db"
read -p "pleas input you db username :" user
read -p "pleas input you db password :" passwd
#mysqldump方法备份
sqldump(){
while :;do
read -p "Are you bakup all databases: " yn
if [[ "$yn" =~ ^[yY]([Ee][Ss])?$ ]];then
#备份所有库
mysqldump $sock -u${user} -p${passwd} -A -F --single-transaction --master-data=2|gzip > ${dbdir}/all-${date}.sql.gz
echo "database bakup in ${dbdir}/all-${date}.sql.gz"
exit 0
elif [[ "$yn" =~ ^[Nn][Oo]?$ ]];then
mysql $sock -u${user} -p${passwd} -e 'show databases'
read -p "chose you bakup databases :" db
#备份部分库
mysqldump $sock -u${user} -p${passwd} -B ${db}|gzip > ${dbdir}/part-${date}.sql.gz
echo "database bakup in ${dbdir}/part-${date}.sql.gz"
exit 0
else
echo 'please input y or n'
continue 1
fi
done
}
#xtrabackup方法备份
xtrabak(){
read -p "input you backup dir(default /backup/db): " xdbdir
[ -z $xdbdir ] && xdbdir=$dbdir
[ -d $xdbdir ] || mkdir -p $dbdir
mariabackup $sock --backup --target-dir=${xdbdir} --user=$user
}
main(){
read -p "please chose you backup 1:mysqldump,2:xtrabackup: " num
if [ "$num" -eq 1 ];then
sqldump
elif [ $num -eq 2 ];then
xtrabak
else
echo "please input 1 or 2"
fi
}
main