1 mysq备份脚本
在mysql数据库部署完成后,需要增加对数据库的逻辑备份策略,保障数据库安全。
---添加存储过程,触发器以及事件的备份内容
#!/bin/bash
# 获取当前时间并格式化,用于备份文件夹命名
DATE=$(date +%F%H%M%S)
# 数据库连接信息
HOST=localhost
USER=root
PASS=123
# 备份文件存储基础目录
BACKUP_DIR=/data/db_backup
# 获取所有需要备份的数据库列表(排除系统数据库)
DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null | egrep -v "Database|information_schema|mysql|performance_schema")
# 遍历数据库列表进行备份
for DB in $DB_LIST; do
# 为每个数据库创建一个备份文件夹
BACKUP_DB_DIR=$BACKUP_DIR/${DB}_${DATE}
[ ! -d $BACKUP_DB_DIR ] && mkdir -p $BACKUP_DB_DIR &>/dev/null
# 获取当前数据库中的所有表
TABLE_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "use $DB; show tables;" 2>/dev/null)
# 遍历表列表进行备份
for TABLE in $TABLE_LIST; do
# 拼接备份文件名
BACKUP_NAME=$BACKUP_DB_DIR/${TABLE}.sql
# 使用mysqldump命令备份单个表
if ! mysqldump -h$HOST -u$USER -p$PASS $DB $TABLE > $BACKUP_NAME 2>/dev/null; then
echo "$BACKUP_NAME 备份失败!"
fi
done
#备份数据库下面所有的存储过程以及触发器
if ! mysqldump -h$HOST -u$USER -p$PASS $DB --no-create-info --no-data --routines --events --compact --set-gtid-purged=off >$BACKUP_DB_DIR/pro_trigger_event_${DB}.sql 2>/dev/null; then
echo "$BACKUP_NAME 备份失败!"
fi
done
mysql -uroot -p123 -d orcl -v (-f)<123.sql