编写脚本,支持让用户自主选择,使用mysqldump还是xtraback全量备份

先下载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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值