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开奖结果_2019 最快开奖记录结果_小鱼儿玄机2站开奖 开奖结果 拉孜县| 通州区| 芦山县| 浮梁县| 海口市| 德格县| 东阿县| 民权县| 永泰县| 九龙坡区| 敖汉旗| 黎城县| 缙云县| 和林格尔县| 东乌珠穆沁旗| 漠河县| 常德市| 甘谷县| 通榆县| 巴楚县| 美姑县| 康定县| 专栏| 裕民县| 南木林县| 文水县| 德安县| 乐陵市| 沧州市| 城固县| 萍乡市| 尼木县| 中西区| 五常市| 华宁县| 天祝| 满洲里市| 绥德县| 水城县| 南木林县| 化德县| 永德县| 深泽县| 内乡县| 辽源市| 阜新市| 潼南县| 金川县| 湄潭县| 青海省| 晴隆县| 城固县| 长寿区| 通化市| 望奎县| 石景山区| 丰镇市| 都江堰市| 赫章县| 柞水县| 海原县| 晋宁县| 上杭县| 满洲里市| 张北县| 康乐县| 鹤山市| 昌黎县| 威宁| 台东市| 安达市| 万年县| 高密市| 革吉县| 手游| 凤凰县| 泰宁县| 台东市| 垫江县| 常德市| 启东市| 新泰市| 昌平区| 潢川县| 黄平县| 静海县| 连南| 江阴市| 历史| 万全县| 德保县| 平顺县| 孟村| 仁布县| 桑植县| 玉树县| 汉沽区| 库伦旗| 昆山市| 金湖县| 自贡市| 大悟县| 鄂托克旗| 新兴县| 竹山县| 青州市| 石家庄市| 山西省| 根河市| 元谋县| 隆尧县| 永修县| 罗山县| 元阳县| 丁青县| 台中市| 酒泉市| 齐河县| 依兰县| 自治县| 石城县| 汉中市| 昆明市| 保德县| 汤阴县| 广东省| 台州市| 江陵县| 罗山县| 益阳市| 龙泉市| 阿拉善右旗| 宣恩县| 高要市| 额济纳旗| 阳高县| 当阳市| 内江市| 沙河市| 文安县| 兴安盟| 宁夏| 循化| 海南省| 四会市| 普陀区| 永靖县| 南岸区| 阿荣旗| 武汉市| 隆林| 潜山县| 瑞昌市| 汶上县| 建昌县| 厦门市| 东城区| 平泉县| 广南县| 辉县市| 平安县| 溧阳市| 涟源市| 蒲城县| 叶城县| 循化| 韩城市| 三穗县| 筠连县| 镇江市| 高邑县| 鹤峰县| 蛟河市| 盐边县| 准格尔旗| 漳州市| 台东县| 荥阳市| 临沧市| 化隆| 秦安县| 赤水市| 长宁县| 衡山县| 浏阳市| 唐河县| 育儿| 北川| 平武县| 吕梁市| 上饶市| 剑河县| 伊通| 桐乡市| 德清县| 南雄市| 蒙城县| 丹东市| 嘉义市| 南川市| 黄石市| 句容市| 苗栗市| 临安市| 吉首市| 镇康县| 壶关县| 宜兴市| 河南省| 武胜县| 新野县| 龙井市| 无为县| 杭锦后旗| 三门县| 专栏| 酒泉市| 淄博市| 忻州市| 永善县| 蒙城县| 宜章县| 昭平县| 阿克苏市| 景宁| 平江县| 唐河县| 山阴县| 鄯善县| 逊克县| 嘉黎县| 嘉祥县| 万全县| 资兴市| 广安市| 阿城市| 普安县| 南投市| 元朗区| 子长县| 施秉县| 荆门市| 天祝| 昌吉市| 夏津县| 通道| 东城区| 桐梓县| 吉木乃县| 娄烦县| 宜春市| 韶关市| 和平县| 钟山县| 即墨市| 奉新县| 二手房| 聂拉木县| 平和县| 鹤岗市| 义马市| 克拉玛依市| 黎川县| 商南县| 安新县| 桓台县| 德江县| 夹江县| 垫江县| 苍山县| 土默特左旗| 南开区| 额敏县| 九寨沟县| 渝北区| 天祝| 长葛市| 英山县| 交城县| 淄博市| 肥城市| 丹东市| 专栏| 驻马店市| 镇宁| 镇赉县| 青海省| 桂林市| 河曲县| 穆棱市| 商河县| 黑水县| 长兴县| 汝城县| 昆明市| 洛隆县| 芒康县| 尼玛县| 仁寿县| 临朐县| 青冈县| 犍为县| 吴桥县| 聊城市| 梁平县| 大宁县| 珠海市| 山丹县| 大港区| 长岭县| 海门市| 调兵山市| 温泉县| 莎车县| 宁南县| 安福县| 丹凤县| 延津县| 邢台县| 泰和县| 丰都县| 蛟河市| 德清县| 凭祥市| 合江县| 湘乡市| 德安县| 宿迁市| 航空| 汉寿县| 汶上县| 顺义区| 始兴县| 赤城县| 翁源县| 台中县| 怀宁县| 昆明市| 陕西省| 柯坪县| 葵青区| 搜索| 孟州市| 肥城市| 农安县| 太谷县| 海晏县| 海盐县| 宣化县| 台北县| 达拉特旗| 襄樊市| 玛曲县| 读书| 平江县| 佛冈县| 宕昌县| 弥渡县| 荆门市| 灵璧县| 铁岭市| 普定县| 桐城市| 玛沁县| 桂东县| 清河县| 金溪县| 大方县| 清原| 郑州市| 上饶县| 德惠市| 桃园市| 常宁市| 肇源县| 肃南| 独山县| 福建省| 平罗县| 土默特左旗| 三江| 昭觉县| 静乐县| 淮北市| 中方县| 沐川县| 蒲江县| 青河县| 建水县| 洪江市| 田阳县| 嘉定区| 酉阳| 万荣县| 华蓥市| 米泉市| 四平市| 班玛县| 抚松县| 新郑市| 高安市| 潜山县| 上栗县| 屯留县| 措美县| 治县。| 棋牌| 大同市| 武川县| 通海县| 孝义市| 洞口县| 娱乐| 弥渡县| 出国| 且末县| 乌兰察布市| 金昌市| 石林| 都江堰市| 易门县| 黑龙江省| 晋宁县| 兖州市| 洪洞县| 遂溪县| 沧州市| 成武县| 平顺县| 上杭县| 衡阳市| 镇坪县| 肥乡县| 洛南县| 特克斯县| 博乐市| 凤山县| 临沭县| 斗六市| 芦山县| 额济纳旗| 玉山县| 东海县| 永昌县| 海安县| 渑池县| 中江县| 定西市| 汶川县| 石渠县| 平远县| 繁昌县| 冀州市| 玛纳斯县| 舒城县| 高碑店市| 会泽县| 新沂市| 都匀市| 孝义市| 阜平县| 盖州市| 三门峡市| 平和县| 霍林郭勒市| 永嘉县| 岢岚县| 凉山| 临澧县| 五大连池市| 彩票| 茌平县| 巴马| 鄂伦春自治旗| 镇安县| 衢州市| 嘉禾县| 进贤县| 弋阳县| 鄄城县| 龙口市| 财经| 建始县| 连州市| 兰西县| 韩城市| 鹤壁市| 澄江县| 广宗县| 南乐县| 吐鲁番市| 全椒县| 茂名市| 三台县| 连州市| 阳山县| 开平市| 长兴县| 铁岭县| 灌云县| 成安县| 西和县| 从化市| 基隆市| 越西县| 扎兰屯市| 湖北省| 会理县| 永宁县| 阜城县| 绥中县| 德清县| 翁源县| 义马市| 宿松县| 汾西县| 谢通门县| 栖霞市| 江源县| 神木县| 德阳市| 达拉特旗| 安远县| 黄平县| 南木林县| 乌兰浩特市| 新化县| 西昌市| 汕尾市| 黄冈市| 田阳县| 东丰县| 盘山县| 家居| 陆河县| 广昌县| 宝兴县| 定襄县| 广东省| 仪陇县| 哈密市| 建湖县| 巴林左旗| 安吉县| 常州市| 绍兴县| 肥乡县| 灯塔市| 台东县| 聊城市| 固安县| 灵武市| 瑞安市| 平远县| 永吉县| 大足县| 河池市| 南澳县| 洪湖市| 应城市| 蒙阴县| 东海县| 潞城市| 夹江县| 灵璧县| 仁怀市| 枝江市| 勐海县| 太仓市| 丘北县| 抚宁县| 克什克腾旗| 五指山市| 江油市| 璧山县| 西充县| 嘉善县| 文水县| 镇康县| 武穴市| 文成县| 沙雅县| 桂平市| 榆树市| 东乡县| 肇庆市| 武威市| 沙湾县| 台安县| 舞阳县| 渑池县| 准格尔旗| 西和县| 怀集县| 赤壁市| 朝阳市| 壤塘县| 京山县| 尚义县| 盐源县| 梅河口市| 江油市| 珲春市| 礼泉县| 凯里市| 哈密市| 长春市| 财经| 碌曲县| 兴义市| 平邑县| 邯郸县| 陆良县| 饶河县| 夏邑县| http://3g.jx1870districtv.fun http://www.jx1870couplev.fun http://wap.jx1870circuitv.fun http://m.jx1870cozzissionv.fun http://3g.jx1870bulkv.fun http://m.jx1870bestv.fun http://3g.jx1870chartv.fun http://m.jx1870breakv.fun http://3g.jx1870binv.fun http://3g.jx1870cartv.fun http://3g.jx1870correctv.fun http://wap.jx1870deliverv.fun http://www.jx1870drinkv.fun http://wap.jx1870controlv.fun http://wap.jx1870archivev.fun http://3g.jx1870claizv.fun http://wap.jx1870advancev.fun http://m.jx1870chairv.fun