• MySQL Backup--使用mysqldump依次备份所有数据库

    某些场景下需要将数据库分开备份,有些场景又需要将所有数据库合在一起备份,特此整理此备份脚本

    #!/bin/bash
    ##===========================================================================##
    ## use mysqldump to backup all user database, keey 5 days.
    ##===========================================================================##
    ## mysql_backup_database option:
    ## ONE_BACKUP: backup all user database into one zip file
    ## MORE_BACKUP: backup user database into different zip files.
    ## DATABASE_NAME: only backup the specified database.
    
    ##===========================================================================##
    ## mysql backup config
    mysql_exe="/export/servers/mysql/bin/mysql"
    mysqldump_exe="/export/servers/mysql/bin/mysqldump"
    mysql_backup_folder="/export/data/mysql/dumps/"
    mysql_backup_log="${mysql_backup_folder}mysql_dump_log.txt"
    mysql_backup_log_his="${mysql_backup_folder}mysql_dump_log_his.txt"
    mysql_backup_host="127.0.0.1"
    mysql_backup_port=3306
    mysql_backup_user="root"
    mysql_backup_password="rootpwd"
    mysql_backup_database="ONE_BACKUP"
    mysql_backup_table_name_list=""
    mysql_backup_keep_days=5
    
    ##====================================================##
    ## get mysql version
    ##====================================================##
    function get_mysql_version()
    {
        master_version_tmp=`${mysql_exe}     --host="${mysql_backup_host}" --port=${mysql_backup_port}     --user="${mysql_backup_user}" --password="${mysql_backup_password}"     -e "select @@version;"`
        if [[ master_version_tmp == 5.5.* ]]
        then
            mysql_version="mysql55"
        elif [[ master_version_tmp == 5.6.* ]]
        then
            mysql_version="mysql56"
        else
            mysql_version="mysql57"
        fi
    }
    
    ##===========================================================================##
    ## remove expired backup file
    ## keep the backup file of the last N days
    function remove_expired_file()
    {
        echo "$(date "+%Y-%m-%d %H:%M:%S")  start to remove expired backup file." >> ${mysql_backup_log}
        echo "keep days:    ${mysql_backup_keep_days}" >> ${mysql_backup_log}
        find "${mysql_backup_folder}" -mtime +${mysql_backup_keep_days} -name "*" -exec rm -rf {} \;
        echo "$(date "+%Y-%m-%d %H:%M:%S")  start to mysqldump." >> ${mysql_backup_log}
    }
    
    ##===========================================================================##
    ## backup single database
    function backup_single_database()
    {
        current_database_name=$1
        mysql_backup_file_path="${mysql_backup_folder}""${current_database_name}-`date -I`.sql.gz"
        echo "$(date "+%Y-%m-%d %H:%M:%S")  start to backup database ${current_database_name} to ${mysql_backup_file_path}" >> ${mysql_backup_log}
        
        ($mysqldump_exe     --host="${mysql_backup_host}"     --port=$mysql_backup_port     --user="${mysql_backup_user}"     --password="${mysql_backup_password}"     --databases "${current_database_name}"      --set-gtid-purged=OFF     --single-transaction     --hex-blob --opt --quick     --events --routines --triggers     --default-character-set="utf8"     --master-data=2     |gzip > "${mysql_backup_file_path}"     ) 1>>${mysql_backup_log} 2>>${mysql_backup_log} 
    
        if [ $? = 0 ]
        then
            echo "$(date "+%Y-%m-%d %H:%M:%S")  backup database ${current_database_name} success." >> ${mysql_backup_log}
        else
            echo "$(date "+%Y-%m-%d %H:%M:%S")  backup database ${current_database_name} failed." >> ${mysql_backup_log}
        fi
    }
    
    function backup_more_databases()
    {
        for database_name in ${database_name_list};
        do
            if [ "$database_name" == "" ]
            then
                echo "database name can be empty"
            else
                backup_single_database "${database_name}"
            fi
        done
    }
    
    function backup_all_databases()
    {
        mysql_backup_file_path="${mysql_backup_folder}""full-backup-`date -I`.sql.gz"
        echo "$(date "+%Y-%m-%d %H:%M:%S")  start to backup all databases to ${mysql_backup_file_path}" >> ${mysql_backup_log}
        
        ($mysqldump_exe     --host="${mysql_backup_host}"     --port=$mysql_backup_port     --user="${mysql_backup_user}"     --password="${mysql_backup_password}"     --all-databases     --ignore-table=mysql.*     --ignore-table=information_schema.*     --ignore-table=performance_schema.*     --ignore-table=sys.*     --set-gtid-purged=OFF     --single-transaction     --hex-blob --opt --quick     --events --routines --triggers     --default-character-set="utf8"     --master-data=2     |gzip > "${mysql_backup_file_path}"     ) 1>>${mysql_backup_log} 2>>${mysql_backup_log} 
    
        if [ $? = 0 ]
        then
            echo "$(date "+%Y-%m-%d %H:%M:%S")  backup database ${current_database_name} success." >> ${mysql_backup_log}
        else
            echo "$(date "+%Y-%m-%d %H:%M:%S")  backup database ${current_database_name} failed." >> ${mysql_backup_log}
        fi
    }
    
    
    function backup_databases()
    {    
        if [ "${mysql_backup_database}" == "ONE_BACKUP" ];
        then
            backup_all_databases
        elif [ "${mysql_backup_database}" == "MORE_BACKUP" ];
        then
            database_name_list=`${mysql_exe} --host="${mysql_backup_host}" --port=$mysql_backup_port --user="${mysql_backup_user}" --password="${mysql_backup_password}" -Ne "show databases;" |egrep -v "(mysql|sys|test|information_schema|performance_schema|dada_call_center)"`
            backup_more_databases
        else 
            database_name_list=${mysql_backup_database}
            backup_more_databases
        fi
    }
    
    
    ##====================================================##
    ## 1. dump user script on mysql
    ## 2. this script only can be used on mysql 5.7
    ##====================================================##
    function dump_user_script_5_7()
    {
        script_file_path="${mysql_backup_folder}""user-script-`date -I`.sql"
        echo "$(date "+%Y-%m-%d %H:%M:%S")  start backup user script." >> ${mysql_backup_log}
        (echo "select concat(‘show create user ‘‘‘,user,‘‘‘@‘‘‘,host, ‘‘‘;
        ,show grants for ‘‘‘,user,‘‘‘@‘‘‘,host, ‘‘‘;) 
        from mysql.user where user <>root and user<>‘‘ and host <> ‘‘ " | \
        ${mysql_exe} --host="${mysql_backup_host}" --port=${mysql_backup_port}     --user="${mysql_backup_user}" --password="${mysql_backup_password}" -N |     ${mysql_exe} --host="${mysql_backup_host}" --port=${mysql_backup_port}     --user="${mysql_backup_user}" --password="${mysql_backup_password}" -N |     sed "s/$/;/" >> ${script_file_path}) 1>>${mysql_backup_log} 2>>${mysql_backup_log} 
        
        if [ $? = 0 ]
        then
            echo "$(date "+%Y-%m-%d %H:%M:%S")  backup user script success." >> ${mysql_backup_log}
        else
            echo "$(date "+%Y-%m-%d %H:%M:%S")  backup user script failed." >> ${mysql_backup_log}
        fi
    }
    
    
    ##====================================================##
    ## 1. dump user script on mysql
    ## 2. this script only can be used on mysql 5.5
    ##====================================================##
    function dump_user_script_5_5()
    {
        script_file_path="${mysql_backup_folder}""user-script-`date -I`.sql"
        echo "$(date "+%Y-%m-%d %H:%M:%S")  start backup user script." >> ${mysql_backup_log}
        
        (echo "select concat(‘show grants for ‘‘‘,user,‘‘‘@‘‘‘,host, ‘‘‘;‘)  
        from mysql.user where user <>root and user<>‘‘ and host <> ‘‘ " | \
        ${mysql_exe} --host="${mysql_backup_host}" --port=${mysql_backup_port}     --user="${mysql_backup_user}" --password="${mysql_backup_password}" -N |     ${mysql_exe} --host="${mysql_backup_host}" --port=${mysql_backup_port}     --user="${mysql_backup_user}" --password="${mysql_backup_password}" -N |     sed "s/$/;/" >> ${script_file_path}) 1>>${mysql_backup_log} 2>>${mysql_backup_log} 
        
        if [ $? = 0 ]
        then
            echo "$(date "+%Y-%m-%d %H:%M:%S")  backup user script success." >> ${mysql_backup_log}
        else
            echo "$(date "+%Y-%m-%d %H:%M:%S")  backup user script failed." >> ${mysql_backup_log}
        fi
    }
    
    ##===========================================================================##
    
    function backup_mysql_user()
    {
        if [[ mysql_version == "mysql55" ]]
        then
            dump_user_script_5_5
        else
            dump_user_script_5_7
        fi
    }
    
    
    ##===========================================================================##
    function mysql_backup()
    {
        echo > ${mysql_backup_log}
        get_mysql_version
        remove_expired_file
        backup_databases
        backup_mysql_user
        cat ${mysql_backup_log} > ${mysql_backup_log_his}
    }
    
    mysql_backup
    相关文章
    相关标签/搜索
    一,肖一码′期期准香港马会内部免费资枓2019今晚开码结果开奖现场历史开奖资料记录在线查询 宝鸡市| 清徐县| 壤塘县| 呼玛县| 合川市| 崇礼县| 中牟县| 车险| 收藏| 晋城| 阳泉市| 广东省| 金堂县| 兴宁市| 苏州市| 沾益县| 石城县| 裕民县| 黄骅市| 富锦市| 兰西县| 临安市| 清水河县| 海伦市| 西乌珠穆沁旗| 永宁县| 两当县| 桐城市| 运城市| 友谊县| 株洲县| 太和县| 舒城县| 宜川县| 涞源县| 木兰县| 济南市| 仁寿县| 施秉县| 屏东县| 柯坪县| 昌黎县| 萨嘎县| 星子县| 凉城县| 吐鲁番市| 卓资县| 武宣县| 红河县| 融水| 望江县| 旬阳县| 襄垣县| 珲春市| 黑水县| 澄迈县| 邛崃市| 铜梁县| 定兴县| 宜章县| 宝丰县| 阜新市| 会同县| 渭南市| 东乡县| 钦州市| 商南县| 阳春市| 宣城市| 徐闻县| 县级市| 百色市| 汝南县| 长兴县| 三原县| 商丘市| 榆树市| 久治县| 奉化市| 清镇市| 青海省| 镇赉县| 原阳县| 砚山县| 万荣县| 股票| 潮安县| 微山县| 萍乡市| 如皋市| 长白| 麟游县| 咸宁市| 汽车| 子洲县| 亳州市| 汶上县| 深圳市| 定安县| 贵德县| 文化| 丽水市| 娱乐| 昔阳县| 志丹县| 全椒县| 临西县| 安陆市| 教育| 台湾省| 金乡县| 富蕴县| 竹北市| 丹阳市| 江达县| 城市| 黔江区| 浦县| 广东省| 珠海市| 依安县| 邯郸县| 洛隆县| 沙洋县| 搜索| 深水埗区| 台湾省| 南京市| 宜春市| 沁阳市| 康马县| 改则县| 康马县| 金塔县| 子洲县| 汉阴县| 临湘市| 咸宁市| 大石桥市| 崇明县| 明溪县| 民乐县| 德州市| 新竹市| 丰都县| 寿阳县| 嘉兴市| 南康市| 苏州市| 延吉市| 大冶市| 浦县| 南投县| 富川| 北辰区| 历史| 阜康市| 和顺县| 乐山市| 中阳县| 龙川县| 澄迈县| 穆棱市| 灌阳县| 上林县| 濮阳县| 广宁县| 双流县| 儋州市| 东源县| 南昌县| 徐汇区| 曲靖市| 车险| 黄浦区| 水富县| 文成县| 巫山县| 舟曲县| 额尔古纳市| 河源市| 罗城| 通江县| 玉林市| 湖北省| 磐石市| 盘山县| 葵青区| 德江县| 益阳市| 山西省| 淄博市| 永平县| 枞阳县| 大竹县| 托克托县| 利津县| 织金县| 盐边县| 昭觉县| 胶南市| 洮南市| 和硕县| 增城市| 双辽市| 旬邑县| 双鸭山市| 新泰市| 长武县| 讷河市| 保靖县| 道孚县| 曲麻莱县| 施甸县| 合阳县| 湄潭县| 万宁市| 清涧县| 临澧县| 乌兰察布市| 新民市| 伊宁县| 平度市| 辽中县| 衡东县| 策勒县| 宁晋县| 周宁县| 蒙自县| 偏关县| 龙海市| 北碚区| 格尔木市| 正安县| 奉贤区| 文安县| 库车县| 泸定县| 开封县| 泰来县| 广东省| 吕梁市| 县级市| 股票| 新河县| 乐清市| 平南县| 田东县| 化州市| 潮安县| 广东省| 永兴县| 闵行区| 丹凤县| 湘潭市| 若羌县| 海阳市| 凤翔县| 广灵县| 丽江市| 靖江市| 绥德县| 莒南县| 玛沁县| 共和县| 精河县| 盐池县| 元阳县| 潼南县| 泰宁县| 东港市| 紫阳县| 彭泽县| 寿阳县| 灵武市| 建阳市| 彰化县| 彭泽县| 四川省| 旬邑县| 鄂托克旗| 黑龙江省| 山东省| 商水县| 西昌市| 灵寿县| 临清市| 东乡县| 修武县| 徐州市| 武威市| 兖州市| 偏关县| 沙坪坝区| 房产| 鄂尔多斯市| 犍为县| 应用必备| 禹城市| 阜城县| 平乡县| 新营市| 和硕县| 红原县| 宁乡县| 凤阳县| 昌吉市| 大宁县| 平凉市| 莱州市| 木里| 玛沁县| 西乌珠穆沁旗| 郴州市| 临潭县| 辽宁省| 清苑县| 视频| 韶山市| 曲阜市| 新化县| 珲春市| 鄂尔多斯市| 神池县| 略阳县| 偏关县| 沙坪坝区| 永德县| 苏尼特右旗| 永德县| 宣武区| 庐江县| 临洮县| 格尔木市| 河池市| 秭归县| 邹城市| 崇义县| 分宜县| 绥滨县| 柳州市| 卢龙县| 静宁县| 深圳市| 秦安县| 栾川县| 石屏县| 徐水县| 秭归县| 资兴市| 乡城县| 昌吉市| 清水县| 安顺市| 雷山县| 徐闻县| 光山县| 沧州市| 安康市| 蓬莱市| 阜城县| 衡南县| 沭阳县| 革吉县| 兴安盟| 黄梅县| 库尔勒市| 三明市| 绩溪县| 双桥区| 陕西省| 通海县| 吉隆县| 华安县| 昌江| 五河县| 志丹县| 鞍山市| 台中县| 炎陵县| 潜山县| 贡山| 南召县| 桃园市| 陆良县| 五原县| 江阴市| 磴口县| 林口县| 辽宁省| 定边县| 徐闻县| 四会市| 凌源市| 林芝县| 漳州市| 石景山区| 应城市| 临夏县| 长丰县| 东莞市| 眉山市| 漠河县| 六枝特区| 紫阳县| 彭州市| 昭觉县| 汝州市| 卓资县| 怀宁县| 武川县| 灌阳县| 绥棱县| 乌审旗| 大方县| 司法| 星座| 涞源县| 宝丰县| 晴隆县| 麻江县| 定结县| 桃园县| 札达县| 长武县| 平凉市| 理塘县| 栾川县| 铜鼓县| 山阳县| 广德县| 安多县| 山西省| 武陟县| 高台县| 高阳县| 兴安盟| 沙河市| 长宁区| 东阳市| 广平县| 阳曲县| 鄯善县| 丹巴县| 陆良县| 平原县| 台北市| 明溪县| 八宿县| 普兰店市| 阳春市| 丰镇市| 高陵县| 元氏县| 来凤县| 云龙县| 英超| 措勤县| 冕宁县| 深水埗区| 元阳县| 都江堰市| 永胜县| 揭阳市| 高安市| 庄河市| 巍山| 平邑县| 元谋县| 连江县| 仁布县| 论坛| 碌曲县| 秦皇岛市| 乐陵市| 淮南市| 义乌市| 武夷山市| 金寨县| 涟水县| 永嘉县| 徐汇区| 大荔县| 蒙城县| 西城区| 湖北省| 榆林市| 兰西县| 六安市| 青铜峡市| 建瓯市| 巴马| 通州区| 正阳县| 启东市| 保山市| 巴中市| 江津市| 洛阳市| 新巴尔虎右旗| 石家庄市| 金昌市| 江门市| 闵行区| 璧山县| 右玉县| 江陵县| 宁明县| 富蕴县| 宁化县| 娄底市| 武山县| 崇明县| 绥芬河市| 响水县| 濉溪县| 土默特右旗| 长丰县| 探索| 汝南县| 赤城县| 阳山县| 拜城县| 波密县| 乌兰察布市| 海南省| 泸水县| 右玉县| 民县| 丰顺县| 濮阳市| 深圳市| 鹤峰县| 汕尾市| 汕尾市| 铁力市| 读书| 昌都县| 广州市| 长泰县| 清水县| 聊城市| 平山县| 嘉鱼县| 读书| 大安市| 新津县| 子洲县| 天祝| 海门市| 遂溪县| 明溪县| 德州市| 绵竹市| 来凤县| 梨树县| 聂荣县| 邓州市| 昌黎县| 盐源县| 盖州市| 合川市| 固安县| 临澧县| 拜城县| 大厂| 女性| 景泰县| 达拉特旗| 古交市| 山阴县| 张掖市| 南川市| 永春县| 宜川县| 旌德县| 青铜峡市| 盐亭县| 陵水| 山西省| 达日县| 诏安县| 建阳市| 蓝山县| 高尔夫| 凤阳县| 宜春市| 峡江县| 修水县| 襄城县| 广水市| 沈阳市| 阿合奇县| 察哈| 宁乡县| 布尔津县| 达州市| 芦溪县| 若羌县| 九台市| 苍梧县| 玉屏| 吉林市| 卢湾区| 余干县| 马山县| 鸡泽县| 浪卡子县| 墨竹工卡县| 共和县| 雷山县| 浦城县| 彰武县| 桐梓县| 满洲里市| http://3g.jx1870copyrightv.fun http://jx1870attackv.fun http://wap.jx1870carryv.fun http://m.jx1870designv.fun http://3g.jx1870deliverv.fun http://www.jx1870createv.fun http://3g.jx1870closev.fun http://m.jx1870coursev.fun http://m.jx1870approachv.fun http://wap.jx1870correctv.fun http://m.jx1870chairzanv.fun http://wap.jx1870deliverv.fun http://wap.jx1870doublev.fun http://wap.jx1870discountv.fun http://wap.jx1870containv.fun http://wap.jx1870cozzentv.fun http://wap.jx1870displayv.fun http://jx1870airv.fun