基于mysqldump,最好备份的账号用专门备份的账号(只有查询权限的)
思路
主要利用mysqldump -u -p 库名 > 库名.sql 这条命令开始延伸
1.先定义好时间变量,备份的sql名都要最好带上完整时间
2.mysql免交互-e执行查询数据库命令,打印所有数据库名,作为遍历池(-s 是去掉结果中的符号图,我们不需要备份系统数据库,所以搭配grep -v 来排除系统数据库)
3.备份命令后判断执行状态。
步骤:
查询数据库求出数据库名--》遍历,对每一个数据库分别备份---》确定执行状态
分库备份
#!/bin/bash
#mysql db backup script
#2020-10-29
DATE=$(date +%Y%m%d-%H:%M)
USER=root
PASSWD=123456
DB_LIST=$(mysql -u$USER -p$PASSWD -s -e "show databases;"|grep -Ev "information_schema|mysql|performance_schema|new_test|sys|sys_info")
BACKUP_DIR=/data/mysql_back
for db in $DB_LIST
do
if [ ! -d $BACKUP_DIR ];then
mkdir -p $BACKUP_DIR
echo "备份目录$BACKUP_DIR创建完成"
fi
dbname=$BACKUP_DIR/${db}_${DATE}.sql
mysqldump -u$USER -p$PASSWD $db>$dbname 2>/dev/null
if [ $? != 0 ];then
echo "$dbname备份失败"
fi
done
执行结果:
image.png