`
被触发
  • 浏览: 37085 次
文章分类
社区版块
存档分类
最新评论

MySQL自动化备份脚本使用说明

 
阅读更多

1   功能介绍

脚本名 bakrec_mysql.sh

脚本存放路径 保证统一

备份路径 须根据具体服务器的分区情况,放到一个剩余空间较大的分区.

备份目录名 统一为backupdb

 

 

各个参数说明如下:

-a: backup all database #全库备份

-e: backup each database#分库备份

-d: backup single/multi database#备份指定的一个库或者多个库

-t: backup single/multi table of single database#备份一个库下面的一个表或者多个表

-b: backup binlog#备份binlog日志,备份过程,每次记录最后的二进制文件号,将之前范围内的binlog打包(bz2格式),放在$DIR_BACKUP目录下

-r: recover all database(!require password!)#恢复全库,为保安全,恢复时需要输入密码

-o: recover single database/talbe,you should be designation database name(!require password!)#恢复单库或单表,恢复时需要输入密码

-p: create connect mysql password#创建连接mysql的密码文件,存放位置$DIR_MySQL/etc目录下,权限是600

-s: configuration rsyncd#创建rsyncd服务(因backup机上有rsyncd服务,故不需要在每台DB server上创建rsyncd服务)

    If you want ceate a rsyncd, you should enter 'bakrec_mysql.sh -s cet'

    If you want restart rsyncd, you should enter 'bakrec_mysql.sh -s rst'

-c: sync to backup center#同步到backup机

 

 

2   备份策略 2.1     分库备份

在脚本的LIST_EXCLUDE_DB='(test|information_schema|performance_schema)'可以过滤不备份的数据库.

备份路径 根据服务器具体分区情况而定

备份目录名统一 backupdb

 

 

关于是否打开binlog的函数解释

function backup()

{

read_pwd

LOGBIN_STATUS=`$CMD_MYSQL -u$USER -p$PASSWD -N -s -e "SHOW VARIABLES LIKE 'log_bin'" | gawk '{print $2}'`

if [ $LOGBIN_STATUS = "ON" ]; then

  MASTER='--master-data=2'

else

  MASTER=' '

fi

}

这个函数的功能是检测MySQL服务器有没有打开binlog日志,如果打开,则在备份的时候添加--master-data=2这个参数,否则不添加.

 

 

分库备份在脚本中的实现函数为backup_each

function backup_each()

{

backup

for db in $($CMD_MYSQL -u$USER -p$PASSWD -N -s -e "SHOW DATABASES"|egrep -v $LIST_EXCLUDE_DB)

do

  $CMD_MYSQLDUMP -u$USER -p$PASSWD -x -R $MASTER $db --databases |gzip >$HOSTNAME.$db.$TIME.sql.gz

done

# delete 7 days ago

for db in $($CMD_MYSQL -u$USER -p$PASSWD -N -s -e "SHOW DATABASES"|egrep -v $LIST_EXCLUDE_DB)

do

  if [ ! -f $HOSTNAME.$db.$TIME_7.sql.gz ]; then

    echo

  else

    rm $HOSTNAME.$db.$TIME_7.sql.gz -f

  fi

done

}

功能说明:

依次备份除列表之外的所有库,在本机会自动删除7天之前的备份

2.2     binlog备份

binlog备份在脚本中的实现函数为backup_binlog

function backup_binlog()

{

if [ -s $DIR_BACKUP/mysql-bin.queue ]; then

  read POS < $DIR_BACKUP/mysql-bin.queue

  cd $DIR_DATA

  tar -jcvf $DIR_BACKUP/$TIME_YM/$HOSTNAME.$POS.$TIME.bz2 `gawk -F'/' '{print $2}' $BINLOG_NAME.index |sed -n "/$POS/,//p"`

  cd -

  if [ -f $DIR_BACKUP/$TIME_YM/$HOSTNAME.$POS.$TIME_7.bz2 ]; then

    rm $DIR_BACKUP/$TIME_YM/$HOSTNAME.$POS.$TIME_7.bz2 -f

  fi

fi

# write last pos

gawk -F'/' '{print $2}' $DIR_DATA/$BINLOG_NAME.index | tail -n 1 >$DIR_BACKUP/mysql-bin.queue

}

逻辑如下:

1,如果检测到$DIR_BACKUP/mysql-bin.queue这个文件,并且文件大小大于0个字节.则读取这个文件内容,并付给变量POS,然后执行tar –jcvf命令,并删除7天之前的备份,否则直接执行gawk命令.

2,gawk命令的意思是把当前binlog日志的编号记录到$DIR_BACKUP/mysql-bin.queue文件内.

 

2.3     推到备份机

实现功能代码如下

  c)

    rsync -czrpt  --password-file=$DIR_BIN/bakrec_mysql.password $DIR_BACKUP/$TIME_YM backupdbuser@192.168.0.1::backup/$HOSTNAME

    result_status

    ;;

 

rsync参数的意思如下:

c: 打开校验开关,强制对文件传输进行校验

z: 对备份的文件在传输时进行压缩处理(节省网络带宽,消耗本机CPU)

r: 对子目录以递归模式处理

p: 保持文件权限

t: 保持文件时间信息

 

同步的目录$DIR_BACKUP/$TIME_YM

backup主机IP地址192.168.0.1

 

result_status函数功能,如果该语句执行失败,则发送邮件给db-request

 

2.4     backup机设置

在backup机上面修改rsync配置,添加模块backup上面的配置如下

uid = root

gid = root

max connections = 10

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

 

[backupdb.cn5]

path = /backup

hosts allow = *

hosts deny = *

ignore errors

read only = no

list = no

auth users = user

secrets file = ****/password

 

说明

password为rsync连接的密码文件,格式

user:password

权限600

 

3   使用说明 3.1     定义变量

根据服务器情况,可能会修改如下变量

DIR_MYSQL='/usr/local/mysql'

DIR_BACKUP="/tmp/backup"

 

对于rpm安装,或者非常规的安装,可能还需要修改

CMD_MYSQLDUMP="$DIR_MYSQL/bin/mysqldump"

CMD_MYSQL="$DIR_MYSQL/bin/mysql"

 

3.2     创建MySQL密码文件

执行脚本,加-p参数,自动创建$DIR_MYSQL/etc/passwordfile文件,输入密码,脚本会自动写入该文件

 

# bash bakrec_mysql.sh  -p

Please enter MySQL(user=root)'s password:

 

验证密码文件创建成功与否,以及权限600

# ls -l $FILE_PASSWD

查看密码文件内容

# cat $FILE_PASSWD

 

3.3     创建rsync密码文件

权限600

3.4     测试备份与推送

bash –x 脚本名 测试的参数

可以看到脚本的执行过程.

 

-c参数是将备份目录内容,推送到backup机

3.5     crontab设置

crontab执行脚本出错总结:

    1) 脚本本身问题

    2) 脚本执行权限问题

    3) 脚本名字拼写问题,指定了错误的脚本名

    4) 遗漏了脚本中需要的密码文件

    5) 备份的目录不存在

分享到:
评论

相关推荐

    mysql自动实现备份脚本

    "mysql自动实现备份脚本" 提供了一种高效的方法,通过编写Bash shell脚本来自动化这一过程。下面将详细介绍这个脚本的工作原理、重要性以及如何配置和使用。 1. **Bash脚本简介** Bash是Unix和Linux系统中的默认...

    Windows下MySql自动备份脚本(有备份日志,且可以删除历史备份).zip

    "Windows下MySql自动备份脚本(有备份日志,且可以删除历史备份)"的资源提供了一个解决方案,它是一个批处理脚本(MysqlAutoBackup.bat),能够自动化执行MySQL的备份过程,同时生成备份日志并清理历史备份。...

    mysql 自动备份数据库脚本

    "mysql 自动备份数据库脚本" 提供了一种自动化的方法,通过Windows的定时任务服务(taskschd.msc)来定期执行数据库的备份,避免了手动操作的繁琐和可能的人为错误。 MySQL的自动备份主要涉及以下几个核心知识点: ...

    mysql自动备份shell脚本

    以下是一些关于如何创建和使用MySQL自动备份shell脚本的详细说明: 首先,我们需要一个能够执行备份、压缩、清理旧备份并(可选地)将备份文件传输到远程位置或发送电子邮件通知的脚本。以下两个示例提供了不同选项...

    mysql自动化备份方案

    ### MySQL自动化备份方案详解 #### 一、方案背景与需求分析 在当今信息化时代,数据安全成为企业关注的焦点。数据库作为存储企业核心数据的重要工具,其安全性与稳定性至关重要。对于许多公司而言,数据库服务器...

    Linux平台Mysql自动备份脚本

    ### Linux平台Mysql自动备份脚本详解 #### 一、引言 在信息化时代,数据安全至关重要。数据库作为存储业务核心数据的关键组件,其稳定性和可靠性直接影响到整个系统的可用性。MySQL作为全球广泛使用的开源关系型...

    mysql自动备份数据库脚本

    MySQL自动备份数据库脚本是IT运维中的重要环节,它能够定期保存数据库数据,防止数据丢失,确保业务连续性。在本场景中,我们有一个名为`auto_mysql_back.sh`的shell脚本,它用于自动化MySQL数据库的备份过程。下面...

    Windows server服务器下MySql自动定时备份脚本-可以删除历史备份.zip

    本文将详细解析如何使用提供的“Windows server服务器下MySql自动定时备份脚本-可以删除历史备份.zip”来实现这一目标。 该压缩包包含两个文件:`MySqlAutoBackup-1.4.bat`和`说明.txt`。`MySqlAutoBackup-1.4.bat`...

    mysql备份脚本-按日期进行备份,并进行压缩

    ### MySQL备份脚本知识点解析 #### 一、脚本概述 该脚本主要实现了MySQL数据库的备份功能,并根据当前日期创建对应的备份文件夹与备份文件,同时对备份文件进行了压缩处理。此脚本适用于Windows环境。 #### 二、...

    mysql数据备份脚本

    3. **自动化备份**:在批处理文件中,你可以设置一个定时任务(如 Windows 的计划任务)来定期执行这个命令。例如,你可以每天凌晨执行一次备份。 4. **考虑增量备份和差异备份**:除了全量备份,你还可以考虑实施...

    mysql上线自动备份脚本

    ### MySQL自动备份脚本知识点详解 #### 一、脚本背景及目的 本文介绍的MySQL自动备份脚本主要用于在线环境中对MySQL数据库进行定期备份,并同时实现了本地与远程FTP服务器的双重备份策略。此脚本已经经过了长时间的...

    mysql备份脚本.rar

    8. **自动化备份** 为了提高效率,通常会将备份脚本集成到自动化流程中,如使用Linux的cron job或者Windows的任务计划程序。 9. **备份策略** 根据业务的恢复点目标(RPO)和恢复时间目标(RTO),制定合适的备份策略...

    MYSQL服务器自动备份脚本(可设置保留天数)

    最后,为了实现自动化,你需要将这个脚本添加到计划任务中。在Linux系统中,可以使用`cron`服务来安排任务。例如,如果你希望每天凌晨1点运行备份脚本,可以在crontab中添加以下条目: ```bash 0 1 * * * /path/to/...

    Mysql备份可以执行的shell脚本

    这里我们关注的是使用shell脚本来实现MySQL的自动化备份。shell脚本是一种强大的工具,能够帮助我们编写一系列命令,实现批处理操作,提高工作效率。下面我们将深入探讨如何利用shell脚本来执行MySQL备份。 首先,...

    Mysql自动备份脚本

    MySQL自动备份脚本是数据库管理中的一个重要环节,它确保了数据的安全性和可恢复性。在IT行业中,数据丢失可能会导致重大损失,因此定期备份是非常必要的。以下是对标题和描述中涉及的知识点的详细说明: 1. **...

    MySQL数据库自动备份与清理脚本

    1、mysql数据库自动备份与清理2、支持mysql 5.7与mysql 8.03、基于mysql enterprise backup备份4、支持备份数据通过ftp上传或通过rsync上传5、支持自定义备份数据定期清理

    mysql自动安装脚本,备份配置,慢日志配置,配置文件

    `backup-3306.sh` 是一个针对MySQL服务端口3306的备份脚本。定期备份数据库至关重要,以防数据丢失或损坏。此脚本可能会包含连接到MySQL服务器、锁定表以防止数据更改、导出所有数据库或特定数据库、压缩备份文件并...

    Mysql_备份脚本

    根据给定的文件信息,我们可以总结出以下关于MySQL备份脚本的重要知识点: ### MySQL备份脚本概述 在IT行业中,数据安全是至关重要的,而数据备份则是保障数据安全的关键环节之一。MySQL作为广泛使用的数据库管理...

    基于xtrabackup的MySQL数据库备份及还原Shell脚本.zip

    一个典型的`xtrabackup`备份脚本可能包含以下部分: - **环境变量设置**:定义数据库连接信息,如用户名、密码、主机名等。 - **备份路径**:指定备份文件的存储位置。 - **备份操作**:根据需求选择全量或增量备份...

    mysql自动备份脚本

    MySQL自动备份脚本是数据库管理中的重要工具,它能够定期保存数据库的数据,以防意外丢失或系统故障。在本文中,我们将深入探讨MySQL自动备份脚本的原理、编写方法以及如何利用shell脚本来实现这一功能。 首先,...

Global site tag (gtag.js) - Google Analytics