You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.3 KiB
73 lines
2.3 KiB
#!/bin/bash
|
|
|
|
# 设置数据库配置
|
|
USER="root"
|
|
PASSWORD="密码"
|
|
dbname="数据库"
|
|
DEFAULTS_FILE="/etc/my.cnf" # 指定你的配置文件
|
|
#DATADIR="/var/lib/mysql"
|
|
BASE_BACKUP_DIR="/www/embk/xtr"
|
|
SOCKET_FILE="/tmp/mysql.sock"
|
|
#定义备份详细时间
|
|
backup_time=`date +%Y%m%d%H%M`
|
|
# 获取当前日期
|
|
CURRENT_DATE=$(date +%Y-%m-%d)
|
|
FULL_BACKUP_DIR="$BASE_BACKUP_DIR/$dbname/full_$CURRENT_DATE"
|
|
FULL_BACKUP_LOG="$BASE_BACKUP_DIR/log_full_$CURRENT_DATE.log"
|
|
INCREMENTAL_BACKUP_DIR="$BASE_BACKUP_DIR/incremental_$CURRENT_DATE"
|
|
INCREMENTAL_BACKUP_LOG="$BASE_BACKUP_DIR/log_incremental_$CURRENT_DATE.log"
|
|
|
|
#备份文件的名称 包括路径
|
|
backup_data_filename="$BASE_BACKUP_DIR/$dbname/"$backup_time"_xtr.tar.gz"
|
|
|
|
|
|
## check directory has exists
|
|
if [ ! -e $FULL_BACKUP_DIR ]; then
|
|
mkdir -p $FULL_BACKUP_DIR
|
|
fi
|
|
|
|
|
|
#判断MYSQL是否启动,mysql没有启动则备份退出
|
|
mysql_ps=`ps -ef | grep mysql | wc -l`
|
|
mysql_listen=`netstat -an | grep LISTEN | grep 3306 | wc -l`
|
|
if [ [$mysql_ps == 0] -o [$mysql_listen == 0] ]; then
|
|
`echo "ERROR:MySQL is not running! backup stop!"`
|
|
exit
|
|
fi
|
|
|
|
# 检测
|
|
# 排除库中的平台币
|
|
prefix="data_"
|
|
dbtalbes=$(mysql -u"$USER" -p"$PASSWORD" -D $dbname -e "SHOW TABLES LIKE '$prefix%';" | tail -n +2)
|
|
echo $dbtalbes;
|
|
|
|
|
|
# 全量备份
|
|
|
|
echo "Starting full backup..."
|
|
xtrabackup --user="$USER" --password="$PASSWORD" --databases=$dbname --tables-exclude="failed_jobs|" --socket=/tmp/mysql.sock --backup --target-dir=$FULL_BACKUP_DIR --parallel=8 --compress --compress-threads=2 > "$FULL_BACKUP_LOG" 2>&1
|
|
#xtrabackup --defaults-file="$DEFAULTS_FILE" --backup --target-dir="$FULL_BACKUP_DIR" --user="$USER" --password="$PASSWORD" --socket="$SOCKET_FILE" --databases=$dbname --compress --compress-threads=2 > "$FULL_BACKUP_LOG" 2>&1
|
|
# 归档打包
|
|
`tar -zcPf $backup_data_filename $FULL_BACKUP_DIR/`
|
|
# split
|
|
split -b 20M -d -a 1 $backup_data_filename $backup_data_filename\.
|
|
#del folder
|
|
# 添加上防御条件
|
|
if [ -e $FULL_BACKUP_DIR ];then
|
|
`rm -rf $FULL_BACKUP_DIR`
|
|
fi;
|
|
# 遍历,然后发送email
|
|
# pcount=`ls $backup_data_filename | wc -l`
|
|
tzpatchs=$(ls $backup_data_filename.[0-9]*)
|
|
|
|
echo "Full backup completed."
|
|
# send email
|
|
for tf in ${tzpatchs[@]};do
|
|
`/www/mtool -f $tf -c /www/mail.conf`
|
|
wait
|
|
`rm -rf $tf`
|
|
done
|
|
# 清理
|
|
# `find $BASE_BACKUP_DIR -type f -ctime +3 -exec rm -rf {} \;`
|
|
# 执行完退出
|
|
exit;
|