1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/bash

BAK_HOME=/data2/backup/soc-oper-db
ARCHIVE_DIR=$BAK_HOME/archives
if [ ! -d $ARCHIVE_DIR ];then mkdir -p $ARCHIVE_DIR;fi

DB_USER=xxxxx
DB_PASS=xxxxxxx
BACK_CMD=/bin/mariabackup

if [ ! -d $BAK_HOME ];then mkdir -p $BAK_HOME;fi

LOG_FILE="$BAK_HOME/logs/db_backup.log.`date +%F`"
TARGET_DIR=$BAK_HOME/"`date +%F`"
if [ ! -d $TARGET_DIR ];then mkdir -p $TARGET_DIR;fi

echo LOG_FILE=$LOG_FILE
echo "db_backup start at `date +%'F-%T'`" > $LOG_FILE

#Backup /etc/my.cnf
mkdir -p $TARGET_DIR/my_cnf.bak
/bin/cp -rf /etc/my.cnf* $TARGET_DIR/my_cnf.bak

#Backup mariadb
ulimit -n 65535
$BACK_CMD --backup --target-dir="$TARGET_DIR" -u$DB_USER -p $DB_PASS >> $LOG_FILE 2>&1
if [ $? -eq 0 ];then
cd $BAK_HOME
bak_dir=`find ./ -maxdepth 1 -mmin -300 | awk -F/ '{print $NF}' | grep ^20 | head -1`
tar zcvf $ARCHIVE_DIR/$HOSTNAME_insecprod_db_$bak_dir.tar.gz $bak_dir >> $LOG_FILE 2>&1

#clear History backup
find $BAK_HOME -maxdepth 1 -mmin +720 | grep -E '/20[0-9]{2}-[0-9]{2}-[0-9]{2}$' | xargs rm -rf
find $BAK_HOME -name "$HOSTNAME_insecprod_db_*.tar.gz" -atime +3 | xargs rm -rf
fi

echo "db_backup finish at `date +%'F-%T'`" >> $LOG_FILE