教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> IT计算机> 数据库> 备份mysql 创建数据库脚本

备份mysql 创建数据库脚本

上传者:戴劲松
|
上传时间:2016-09-17
|
次下载

备份mysql 创建数据库脚本

此脚本将远程主机或者本地主机上的数据库的数据备份到本地。

备份MySQL数据库除了information_schemaperformance_schemamysql自带库的其他生产库。

备份时将MySQL数据库中的每一个库都进行备份(穷举),生成一个包含数据结构和数据的备份文件和一个仅包含数据结构的备份文件。

通常此脚本将结合crontab一起使用,crontab的使用方法已经在脚本中列出。

允许用户修改的变量如下:

1

2

3

4

5

6

7

mysql_host=127.0.0.1                   # 主机地址

mysql_port=3306                        # 主机端口号

mysql_username=dev                      # 备份时使用的用户名

mysql_password=dev                      # 备份时使用的用户名的密码

mysql_basedir=/usr/local/mysql             # mysqlbase目录,如果是自定义安装的mysql,则修改此处,使用软件包安装的mysql则无需修改此处

save_old_backups_for_days=5             # 保存备份文件的天数

mysql_backup_dir=/data/backup/db/mysql     # mysql备份路径

脚本内容如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

7

#!/usr/bin/env bash

# Function description:

# Backup MySQL databases for each, backup schema and schema with data in one action.

 

# Usage:

# bash BackupMysqlByDate.sh

 

# Birth Time:

# 2016-06-24 17:44:43.895515929 +0800

 

# Author:

# Open Source Software written by 'Guodong Ding <dgdenterprise@gmail.com>'

# Blog: http://dgd2010.blog.51cto.com/

# Github: https://github.com/DingGuodong

 

# Others:

# crontabs -- configuration and scripts for running periodical jobs

# SHELL=/bin/bash

# PATH=/sbin:/bin:/usr/sbin:/usr/bin

# MAILTO=root

# HOME=/

# For details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)

# |  .------------- hour (0 - 23)

# |  |  .---------- day of month (1 - 31)

# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  * user-name command to be executed

# m h  dom mon dow   command

# execute on 11:59 per sunday

# 59 11 * * */0 /path/to/BackupMysqlByDate.sh >/tmp/log_backup_mysql_$(date +"\%Y\%m\%d\%H\%M\%S").log

# or

# execute on 23:59 per day

# 59 23 * * * /path/to/BackupMysqlByDate.sh >/tmp/log_backup_mysql_$(date +"\%Y\%m\%d\%H\%M\%S").log

 

USER="`id -un`"

LOGNAME="$USER"

if [ $UID -ne 0 ]; then

    echo "WARNING: Running as a non-root user, "$LOGNAME". Functionality may be unavailable. Only root can use some commands or options"

fi

 

old_PATH=$PATH

declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

 

mysql_host=127.0.0.1

mysql_port=3306

mysql_username=dev

mysql_password=dev

mysql_basedir=/usr/local/mysql

save_old_backups_for_days=5

mysql_bin_mysql=${mysql_basedir}/bin/mysql

mysql_bin_dump=${mysql_basedir}/bin/mysqldump

mysql_backup_dir=/data/backup/db/mysql

 

date_format_type_dir=$(date +%Y-%m-%d)

date_format_type_file=$(date +%Y%m%d%H%M%S)

 

echo "--------------------------------"

echo "=> do backup scheduler start at $(date +%Y%m%d%H%M%S)"

 

# TODO, check user privileges

# check user if have 'RELOAD,EVENT' privileges,etc

# backup role

# GRANT ALTER,ALTER ROUTINE,CREATE,CREATE ROUTINE,CREATE TEMPORARY TABLES,CREATE VIEW,DELETE,DROP,EXECUTE,INDEX,INSERT,LOCK TABLES,SELECT,UPDATE,SHOW VIEW,RELOAD,EVENT ON *.* TO 'dev'@"%";

# FLUSH PRIVILEGES;

 

[ -d ${mysql_basedir} ] && mysql_datadir=${mysql_basedir}/data || mysql_datadir=/var/lib/mysql

[ -x ${mysql_bin_mysql} ] || mysql_bin_mysql=mysql

[ -x ${mysql_bin_dump} ] || mysql_bin_dump=mysqldump

[ -d ${mysql_backup_dir}/${date_format_type_dir} ] || mkdir -p ${mysql_backup_dir}/${date_format_type_dir}

 

mysql_databases_list=""

if [ -d ${mysql_datadir} ]; then

    mysql_databases_list=`ls -p ${mysql_datadir} | grep / |tr -d /`

else

    mysql_databases_list=$(${mysql_bin_mysql} -h${mysql_host} -P${mysql_port} -u${mysql_username} -p${mysql_password}

        -e "show databases;" |& grep -Eiv '(^database$|information_schema|performance_schema|^mysql$)')

fi

 

saved_IFS=$IFS

IFS=' '$' '$' '

for mysql_database in ${mysql_databases_list};do

    ${mysql_bin_dump} --host=${mysql_host} --port=${mysql_port} --user=${mysql_username} --password=${mysql_password}

        --routines --events --triggers --single-transaction --flush-logs 

        --ignore-table=mysql.event --databases ${mysql_database} |& 

        gzip > ${mysql_backup_dir}/${date_format_type_dir}/${mysql_database}-backup-${date_format_type_file}.sql.gz

 

    [ $? -eq 0 ] && echo "${mysql_database} backup successfully! " || 

        echo "${mysql_database} backup failed! "

    /bin/sleep 2

 

    ${mysql_bin_dump} --host=${mysql_host} --port=${mysql_port} --user=${mysql_username} --password=${mysql_password}

         --routines --events --triggers --single-transaction --flush-logs 

         --ignore-table=mysql.event --databases ${mysql_database} --no-data |& 

         gzip > ${mysql_backup_dir}/${date_format_type_dir}/${mysql_database}-backup-${date_format_type_file}_schema.sql.gz

 

    [ $? -eq 0 ] && echo "${mysql_database} schema backup successfully! " || 

        echo "${mysql_database} schema backup failed! "

    /bin/sleep 2

done

IFS=${saved_IFS}

 

save_days=${save_old_backups_for_days:-10}

need_clean=$(find ${mysql_backup_dir} -mtime +${save_days} -exec ls '{}' ;)

    if [ ! -z ${need_clean} ]; then

        find ${mysql_backup_dir} -mtime +${save_days} -exec rm -rf '{}' ;

        echo "$need_clean have been cleaned! "

    else

        echo "nothing can be cleaned, skipped! "

    fi

 

echo "=> do backup scheduler finished at $(date +%Y%m%d%H%M%S)"

echo -e " "

 

declare -x PATH=${old_PATH}

tag:mysqldump,备份MySQL数据库,MySQL数据库备份,mysql备份,mysql备份脚本

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

下载文档

热门试卷

2016年四川省内江市中考化学试卷
广西钦州市高新区2017届高三11月月考政治试卷
浙江省湖州市2016-2017学年高一上学期期中考试政治试卷
浙江省湖州市2016-2017学年高二上学期期中考试政治试卷
辽宁省铁岭市协作体2017届高三上学期第三次联考政治试卷
广西钦州市钦州港区2016-2017学年高二11月月考政治试卷
广西钦州市钦州港区2017届高三11月月考政治试卷
广西钦州市钦州港区2016-2017学年高一11月月考政治试卷
广西钦州市高新区2016-2017学年高二11月月考政治试卷
广西钦州市高新区2016-2017学年高一11月月考政治试卷
山东省滨州市三校2017届第一学期阶段测试初三英语试题
四川省成都七中2017届高三一诊模拟考试文科综合试卷
2017届普通高等学校招生全国统一考试模拟试题(附答案)
重庆市永川中学高2017级上期12月月考语文试题
江西宜春三中2017届高三第一学期第二次月考文科综合试题
内蒙古赤峰二中2017届高三上学期第三次月考英语试题
2017年六年级(上)数学期末考试卷
2017人教版小学英语三年级上期末笔试题
江苏省常州西藏民族中学2016-2017学年九年级思想品德第一学期第二次阶段测试试卷
重庆市九龙坡区七校2016-2017学年上期八年级素质测查(二)语文学科试题卷
江苏省无锡市钱桥中学2016年12月八年级语文阶段性测试卷
江苏省无锡市钱桥中学2016-2017学年七年级英语12月阶段检测试卷
山东省邹城市第八中学2016-2017学年八年级12月物理第4章试题(无答案)
【人教版】河北省2015-2016学年度九年级上期末语文试题卷(附答案)
四川省简阳市阳安中学2016年12月高二月考英语试卷
四川省成都龙泉中学高三上学期2016年12月月考试题文科综合能力测试
安徽省滁州中学2016—2017学年度第一学期12月月考​高三英语试卷
山东省武城县第二中学2016.12高一年级上学期第二次月考历史试题(必修一第四、五单元)
福建省四地六校联考2016-2017学年上学期第三次月考高三化学试卷
甘肃省武威第二十三中学2016—2017学年度八年级第一学期12月月考生物试卷

网友关注视频

二年级下册数学第三课 搭一搭⚖⚖
冀教版小学数学二年级下册第二单元《有余数除法的竖式计算》
冀教版小学数学二年级下册第二单元《余数和除数的关系》
3.2 数学二年级下册第二单元 表内除法(一)整理和复习 李菲菲
人教版二年级下册数学
【部编】人教版语文七年级下册《老山界》优质课教学视频+PPT课件+教案,安徽省
沪教版八年级下册数学练习册20.4(2)一次函数的应用2P8
青岛版教材五年级下册第四单元(走进军营——方向与位置)用数对确定位置(一等奖)
8 随形想象_第一课时(二等奖)(沪教版二年级上册)_T3786594
8.对剪花样_第一课时(二等奖)(冀美版二年级上册)_T515402
3月2日小学二年级数学下册(数一数)
外研版英语七年级下册module3 unit2第一课时
二次函数求实际问题中的最值_第一课时(特等奖)(冀教版九年级下册)_T144339
沪教版牛津小学英语(深圳用)五年级下册 Unit 1
苏科版数学 八年级下册 第八章第二节 可能性的大小
三年级英语单词记忆下册(沪教版)第一二单元复习
【部编】人教版语文七年级下册《过松源晨炊漆公店(其五)》优质课教学视频+PPT课件+教案,辽宁省
六年级英语下册上海牛津版教材讲解 U1单词
冀教版小学英语五年级下册lesson2教学视频(2)
沪教版牛津小学英语(深圳用) 五年级下册 Unit 10
冀教版小学数学二年级下册第二周第2课时《我们的测量》宝丰街小学庞志荣
七年级英语下册 上海牛津版 Unit3
冀教版小学数学二年级下册第二单元《有余数除法的简单应用》
第五单元 民族艺术的瑰宝_16. 形形色色的民族乐器_第一课时(岭南版六年级上册)_T3751175
冀教版小学英语四年级下册Lesson2授课视频
七年级下册外研版英语M8U2reading
外研版八年级英语下学期 Module3
沪教版牛津小学英语(深圳用) 四年级下册 Unit 8
沪教版牛津小学英语(深圳用) 四年级下册 Unit 2
【部编】人教版语文七年级下册《过松源晨炊漆公店(其五)》优质课教学视频+PPT课件+教案,江苏省