美文网首页
mysqldump备份脚本、命令(用于innodb不锁表)

mysqldump备份脚本、命令(用于innodb不锁表)

作者: 夜清溟 | 来源:发表于2023-06-27 10:52 被阅读0次
    
    mysqldump --single-transaction --quick --triggers --routines --events --user=<用户名> --password=<密码> --host=<主机名> -B <数据库名1>  <数据库名2> |gzip > backup.sql.gz 
    
    

    --single-transaction:使用事务来确保备份数据的一致性。
    --quick:以快速模式进行备份,减少锁定时间。
    --routines:备份存储过程和函数。
    --triggers:备份触发器。
    --events 参数用于备份 MySQL 数据库中的事件(events)
    --user=<用户名>:指定用于连接到数据库的用户名。
    --password=<密码>:指定连接到数据库所需的密码。请确保在命令行中使用密码时注意安全性。
    --host=<主机名>:指定数据库服务器的主机名或 IP 地址。
    <数据库名>:要备份的数据库的名称。
    管道(|)和 gzip 命令,将备份结果压缩为 gzip 格式,以减少备份文件的大小。
    backup.sql:将备份结果输出到名为 backup.sql 的文件中。您可以根据需要更改备份文件的名称和路径。

    备份脚本(并发5个,同时备份五个数据库):

    #!/bin/bash
    # Full backup database.
    
    db_user="*****"
    db_pass="**********************"
    db_host1="************************"
    db_host2="************************"
    db_name_1="/Data/sh/dbback/db_name_1"
    db_name_2="/Data/sh/dbback/db_name_2"
    bak_dir="/db_back/db_bak_sql"
    date_dir="/db_back/db_bak_sql/`date -I`"
    
    source /etc/profile
    
    if [ ! -f $date_dir ];then
            mkdir -p $date_dir
    fi
    
    
    echo "start_time : `date +%m-%d_%H:%M:%S`" >> $date_dir/time.txt
    
    process=5
    tmp_fifofile=/tmp/$$.fifo
    mkfifo $tmp_fifofile
    exec 86<>$tmp_fifofile
    rm $tmp_fifofile
    
    for i in `seq $process`
    do
            echo >&86
    done
    
    function dbdump() {
            while read line
            do
                    read -u 86
                    {
                    /usr/bin/mysqldump  --default-character-set=utf8 --single-transaction --quick --triggers --routines --events -u$db_user -p$db_pass -h$1 $line |gzip > $date_dir/$line.sql.gz
                    echo >&86
                    }&
            done < $2
            wait
    }
    
    
    
    dbdump $db_host1 $db_name_1
    dbdump $db_host2 $db_name_2
    
    
    exec 86>&-
    
    echo "finish_time : `date +%m-%d_%H:%M:%S`" >> $date_dir/time.txt
    
    cd $bak_dir
    tar --remove-files  -czvf `date -I`.tar.gz `date -I` &>/dev/null 
    

    相关文章

      网友评论

          本文标题:mysqldump备份脚本、命令(用于innodb不锁表)

          本文链接:https://www.haomeiwen.com/subject/owzgydtx.html