MySQL自动备份可通用shell脚本

最近在整理服务器的脚本,发现以前写的MySQL每天自动备份脚本写的不太好,就重新写了一个:
#!/bin/bash
####目录环境的配置####
export datetime=`date +"%Y%m%d"`
export mysqlbin_dir="/usr/local/mysql/bin"
export datadir="`$mysqlbin_dir/mysql -h localhost -uroot -A -Bse "show variables like ‘datadir‘;" |awk ‘{print $2}‘`"
export mysql_backup="/data/backup/mysql_backup"
export masterbakdir="$mysql_backup/masterbakdir"
export database="database"

if [ ! -e "$masterbakdir/"$datetime"" ];then
        mkdir -p $masterbakdir/"$datetime"
fi

if [ ! -e "$mysql_backup/logs" ];then
        mkdir -p "$mysql_backup/logs"
fi
####记录主库库状态####
$mysqlbin_dir/mysql -h localhost -A -e "select now();show master status\G;" |tee -a $masterbakdir/"$datetime"/masterstat_${datetime}.log
echo "============================start mysqldump `date`" | tee -a $masterbakdir/"$datetime"/masterstat_${datetime}.log
####mysqldump####
$mysqlbin_dir/mysqldump --allow-keywords --opt $database > $masterbakdir/$database-$datetime.sql
if [ $? -eq 0  ]
      then
                echo "`date` database backup success" |tee -a $masterbakdir/"$datetime"/masterstat_${datetime}.log
        else
                echo "`date` database backup fail" |tee -a $masterbakdir/"$datetime"/masterstat_${datetime}.log
fi
echo "============================end mysqldump `date`"|tee -a $masterbakdir/"$datetime"/masterstat_${datetime}.log
####删除30天前的备份,并且做日志#####
find $masterbakdir -type f -ctime +30 -name "$database*" -exec rm -vf {} \; >> $mysql_backup/logs/free-${datetime}.log
find $mysql_backup/logs -type f -ctime +30 -name "free-*" -exec rm -vf {} \;
然后再crontab中添加定时,一般都是在没什么人使用时没有数据写入时,因为备份是要确保数据同步要加只读锁,比如每天凌晨4点:
00 04 * * * /usr/local/scripts/master_dbbak.sh
在这里要注意的是如果是需要备份整个库,势必就有备份到mysql库,那么mysqldump就要添加--events --ignore-table=mysql.event参数,用来忽略mysql.event这张表,不然mysqldump后就会有警告:
Warning: Skipping the data of table mysql.event. Specify the --events option explicitly
如果数据多时会增加不必要的系统开销,mysql.event表记录的是当前库中创建的事件,在mysql没有启用时,一般是空的。
这个是一个基础脚本,以后还可以在这个基础上在添加上备份失败发邮件等等。
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-02/140392.htm

原文地址:https://www.cnblogs.com/SyncNavigator-V8-4-1/p/11015823.html

时间: 2024-08-27 16:57:56

MySQL自动备份可通用shell脚本的相关文章

mysql增量备份二进制日志shell脚本

#!/bin/bash #?Date:2017-10 #?Description:backup?mysql?binary?logs #?Version:0.1 db_user="root" myisam_db="mysql" db_passwd="123456" host="localhost" export?PATH="/usr/local/mysql/bin:/usr/local/sbin:/usr/local/

mysql自动备份维护shell脚本

/opt/backup_online.sh #!/bin/bash#功能说明:本功能用于备份数据库 #数据库用户名dbuser='root'#数据库密码dbpasswd='zLaaa'#数据库名,可以定义多个数据库,中间以空格隔开,如:test test1 test2dbname='adb bdb '#备份时间backtime=`date +%Y%m%d%H%M%S`#日志备份路径logpath='/opt/garbageBackup/'#数据备份路径datapath='/opt/garbage

linux下的mysql自动备份shell

#!/bin/bash # mysql 的备份脚本 # 备份原理: # 1 # 使用列举出所有的库; # 2 # 使用每个库,列举出每张表,除了指定忽略的库; # 3 # 使用mysqldump 导出每一张表到文件:主机名/年月日/库/表.mysqldump.sql # 4 # 验证每张表的sql文件是否包含完成标志; # 5 # 压缩每个sql文件并删除本sql文件 # 6 # 强制删除超过x天的备份文件夹全部文件 # 7 # 发送处理日志到指定email # 8 # 请配合同步工具多处服务器

mysql 自动备份和nginx自动安装脚本

一.自动备份Mysql脚本: 如下脚本为mysql自动备份脚本,仅供参考,可以根据实际情况修改. #!/bin/sh #auto backup mysql #wugk #Define PATH定义变量 BAKDIR=/data/backup/mysql/`date +%Y-%m-%d` MYSQLDB=webapp MYSQLPW=backup MYSQLUSR=backup #must use root user run scripts 必须使用root用户运行,$UID为系统变量 if [

mysql自动备份脚本及异地定时FTP

分享个自己写的mysql自动备份脚本.定时执行设置及windows自动FTP,请大家指教. 前提环境:mysql数据库服务器开启vsftpd,并配置合适帐号以便能被内网存储服务器FTP 第一步:编写mysql自动执行脚本 #!/bin/sh # mysql_db_backup.sh: backup mysql databases. # # Last updated: Wed Nov  9 07:01:01 CST 2011 # ----------------------------------

linux下mysql自动备份和自动删除文件功能实现

1 , mysql无密码登录 shell>vi ~/.my.cnf [client] host=localhost user=root password=123456 2,备份脚本 #!/bin/bash #自动备份数据库blog表脚本 #verserion 1.0 #author zhanggang cd /opt/crontab/databack Now=`date '+%Y-%m-%d %H:%M:%S'` FILE=backup-$Now.sql mysqldump blog > $F

MySQL自动备份并提交到码云Git仓库 – 任我乐

之所以选择码云是因为其私有仓库是免费的,而私有仓库是收费,约7+美元一月,对于个人开发者似乎也是一笔不小的费用. 在创建自动将备份上传到码云仓库前,建议您先看下以下文章: <如何通过Git将本地项目推送到码云或GitHub> 对于不太了解的朋友来说,此文章非常有用,否则在进行以下步骤时会出现各种报错. 实现方案: 登录到码云 创建私有仓库 服务器生成ssh公钥 创建SSH公钥 以上步骤在上文中有详细说明. 1.创建shell脚本文件: $ cd /mnt/renwole $ vim mysql

Windows下MYSQL自动备份批处理

windows下MYSQL自动备份批处理 2011-05-04 09:16:45|  分类: mysql|举报|字号 订阅 按系统时间进行备份 注意mysql安装路径中如果有空格.就要把,.bat文件拷到相应目录下面. 1.按系统时间进行直接拷贝 net stop mysqlxcopy data\*.* d:\bonadb\%date:~0,10%\ /y /s/enet start mysql 2.用压缩软件,压缩备份 net stop mysqlc:\progra~1\winrar\winr

Linux下定时任务实现mysql自动备份并上传远程ftp

Linux下定时任务实现mysql自动备份并上传远程ftp 1.创建保存备份文件的目录:/home/mysql_datacd /homemkdir mysql_data2.创建备份脚本文件:/home/mysql_data/mysql_databak.shcd /homecd  mysql_datatouch mysql_databak.shvim  mysql_databak.sh #!/bin/sh DUMP=/usr/bin/mysqldump#mysqldump备份文件执行路径 OUT_