12-2 MySQL数据库备份(分表)

复制代码
#!/bin/bash
source /etc/profile

DATE="$(date +%F_%H-%M-%S)"
DB_IP="172.16.1.122"
HOST="localhost"
PORT="3306"
USER="root"
PASS="Liuchang@2020"
BACKUP_DIR="/data/db_backup"
[ ! -d $BACKUP_DIR ] && mkdir -p $BACKUP_DIR

MYSQL_DUMP="mysqldump -h${HOST} -P${PORT} -u${USER} -p${PASS}"
MYSQL_COMMAND="mysql -h${HOST} -P${PORT} -u${USER} -p${PASS}"
DB_LIST="`$MYSQL_COMMAND -s -e "show databases;" 2>/dev/null |egrep -v "information_schema|performance_schema|sys|mysql"`"

for DB in $DB_LIST; do
    BACKUP_DB_DIR="${BACKUP_DIR}/${DB}_${DATE}"
    [ ! -d $BACKUP_DB_DIR ] && mkdir -p $BACKUP_DB_DIR
    TABLE_LIST="$($MYSQL_COMMAND -s -e "use $DB;show tables;" 2>/dev/null)"
    for TABLE in $TABLE_LIST; do
        BACKUP_NAME="${BACKUP_DB_DIR}/${TABLE}.sql"
        if ! $MYSQL_DUMP $DB $TABLE -R --single-transaction --events --hex-blob --triggers --flush-privileges > $BACKUP_NAME 2>/dev/null; then
            echo "MySQL $DB_IP DATABASE $DB TABLE $BACKUP_NAME BACKUP FAILD" |mail -s "MySQL $DB_IP DATABASE $DB TABLE $TABLE BACKUP FAILD" 2504164765@qq.com
        fi
    done
done


##############补充说明##########################
# 主从复制时全备主库的命令
# mysqldump -uroot -p'Liuchang@2020' -A -F -R --single-transaction --master-data=1 --events --hex-blob --triggers --flush-privileges | gzip > /tmp/mysql_master_20200821.sql.bak.gz

# 普通备份参数:
# -R: 转储存储的例程(功能和过程);
# -E: --events:转储事件;
# -A: 转储所有数据库, 这将与--databases以及所有已选择的数据库相同;
# -B: 转储多个数据库,增加建库语句和use连接库的语句;
# --hex-blob: 转储十六进制格式的二进制字符串(BINARY,VARBINARY,BLOB);
# --triggers: 为每个转储的表转储触发器;
# --flush-privileges: 转储mysql数据库后,发出FLUSH PRIVILEGES语句;
# --single-transaction: 设置事务的隔离级别为可重复读(REPEATABLE READ),用于热备,只适用于MySQL InnoDB引擎。

# 用于MySQL开启binlog时的参数:
# -F: 开始转储之前刷新服务器中的日志文件;
# --master-data=1: 备份中增加binlog日志文件名及对应的位置点,1不加注释,2加注释;

# -d:没有行信息,只备份表结构,不备份表数据; Usage: -d <数据库> <表名称,多个表名称可用空格隔开>
# -t:不要写表创建信息,只备份表数据,不备份表结构;Usage: -t <数据库> <表名称,多个表名称可用空格隔开>
################################################
复制代码

 

posted @   云起时。  阅读(83)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
历史上的今天:
2020-04-24 29、Tomcat只允许指定域名访问,禁用IP地址访问,防止恶意解析
点击右上角即可分享
微信分享提示
主题色彩