Linux Shell脚本之利用mysqldump备份MySQL数据库(详细注解)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Linux Shell脚本之利用mysqldump备份MySQL数据库(详细注解),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4786字,纯文字阅读大概需要7分钟。
内容图文
设计该脚本的一些设计、编写考虑:
该脚本适用于编译安装mysql和通过yum或apt-get等安装方式
该脚本可以反复执行,不会重复覆盖数据
可增加,删除N天前的备份以节省磁盘空间
充分利用mysqldump的自带锁表功能、刷新日志、复制等功能
利用mysqldump命令备份MySQL数据库的脚本(不带注释版,适合生产环境使用)
#!/bin/bash MYSQLDBUSERNAME=root MYSQLDBPASSWORD=password MYSQBASEDIR=/usr/local/mysql MYSQL=$MYSQBASEDIR/bin/mysql MYSQLDUMP=$MYSQBASEDIR/bin/mysqldump BACKDIR=/var/backup/db DATEFORMATTYPE1=$(date +%Y-%m-%d) DATEFORMATTYPE2=$(date +%Y%m%d%H%M%S) [ -d $MYSQBASEDIR ] && MYSQDATADIR=$MYSQBASEDIR/data || MYSQDATADIR=/var/lib/mysql [ -x $MYSQL ] || MYSQL=mysql [ -x $MYSQLDUMP ] || MYSQLDUMP=mysqldump [ -d ${BACKDIR} ] || mkdir -p ${BACKDIR} [ -d ${BACKDIR}/${DATEFORMATTYPE1} ] || mkdir ${BACKDIR}/${DATEFORMATTYPE1} DBLIST=`ls -p $MYSQDATADIR | grep / |tr -d /` for DBNAME in $DBLIST do ${MYSQLDUMP} --user=${MYSQLDBUSERNAME} --password=${MYSQLDBPASSWORD} --routines --events --triggers --single-transaction --flush-logs --databases ${DBNAME} | gzip > ${BACKDIR}/${DATEFORMATTYPE1}/${DBNAME}-backup-${DATEFORMATTYPE2}.sql.gz [ $? -eq 0 ] && echo "${DBNAME} has been backuped successful" || echo "${DBNAME} has been backuped failed" /bin/sleep 5 done
利用mysqldump命令备份MySQL数据库的脚本(带注释版,适合学习和测试使用)
#!/bin/bash # MYSQLDBUSERNAME是MySQL数据库的用户名,可自定义 MYSQLDBUSERNAME=root # MYSQLDBPASSWORD是MySQL数据库的密码,可自定义 MYSQLDBPASSWORD=password # MYSQBASEDIR是MySQL数据库的安装目录,--prefix=$MYSQBASEDIR,可自定义 MYSQBASEDIR=/usr/local/mysql # MYSQL是mysql命令的绝对路径,可自定义 MYSQL=$MYSQBASEDIR/bin/mysql # MYSQLDUMP是mysqldump命令的绝对路径,可自定义 MYSQLDUMP=$MYSQBASEDIR/bin/mysqldump # BACKDIR是数据库备份的存放地址,可以自定义修改成远程地址 BACKDIR=/var/backup/db # 获取当前时间,格式为:年-月-日,用于生成以这种时间格式的目录名称 DATEFORMATTYPE1=$(date +%Y-%m-%d) # 获取当前时间,格式为:年月日时分秒,用于生成以这种时间格式的文件名称 DATEFORMATTYPE2=$(date +%Y%m%d%H%M%S) # 如果存在MYSQBASEDIR目录,则将MYSQDATADIR设置为$MYSQBASEDIR/data,具体是什么路径,就把data改成什么路径,否则将MYSQBASEDIR设定为/var/lib/mysql,可自定义 [ -d $MYSQBASEDIR ] && MYSQDATADIR=$MYSQBASEDIR/data || MYSQDATADIR=/var/lib/mysql # 如果mysql命令存在并可执行,则继续,否则将MYSQL设定为mysql,默认路径下的mysql [ -x $MYSQL ] || MYSQL=mysql # 如果mysqldump命令存在并可执行,则继续,否则将MYSQLDUMP设定为mysqldump,默认路径下的mysqldump [ -x $MYSQLDUMP ] || MYSQLDUMP=mysqldump # 如果不存在备份目录则创建这个目录 [ -d ${BACKDIR} ] || mkdir -p ${BACKDIR} [ -d ${BACKDIR}/${DATEFORMATTYPE1} ] || mkdir ${BACKDIR}/${DATEFORMATTYPE1} # 获取MySQL中有哪些数据库,根据mysqldatadir下的目录名字来确认,此处可以自定义,TODO DBLIST=`ls -p $MYSQDATADIR | grep / |tr -d /` # 从数据库列表中循环取出数据库名称,执行备份操作 for DBNAME in $DBLIST # mysqldump skip one table # -- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly. # mysqldump --ignore-table=mysql.event # http://serverfault.com/questions/376904/mysqldump-skip-one-table # --routines,备份存储过程和函数 # --events,跳过mysql.event表 # --triggers,备份触发器 # --single-transaction,针对InnoDB,在单次事务中通过转储所有数据库表创建一个一致性的快照,此选项会导致自动锁表,因此不需要--lock-all-tables # --flush-logs,在dump转储前刷新日志 # --ignore-table,忽略某个表,--ignore-table=database.table # --master-data=2 ,如果启用MySQL复制功能,则可以添加这个选项 # 将dump出的sql语句用gzip压缩到一个以时间命名的文件 do ${MYSQLDUMP} --user=${MYSQLDBUSERNAME} --password=${MYSQLDBPASSWORD} --routines --events --triggers --single-transaction --flush-logs --ignore-table=mysql.event --databases ${DBNAME} | gzip > ${BACKDIR}/${DATEFORMATTYPE1}/${DBNAME}-backup-${DATEFORMATTYPE2}.sql.gz # 检查执行结果,如果错误代码为0则输出成功,否则输出失败 [ $? -eq 0 ] && echo "${DBNAME} has been backuped successful" || echo "${DBNAME} has been backuped failed" # 等待5s,可自定义 /bin/sleep 5 done
执行效果:
[root@htvm ~]# ./backupmysqlbydate.sh mysql has been backuped successful test has been backuped successful [root@htvm ~]# ls /var/backup/db/2015-07-27/ mysql-backup-20150727195515.sql.gz test-backup-20150727195515.sql.gz [root@htvm ~]#
标签:mysqldump,备份MySQL数据库,MySQL数据库备份,mysql备份,mysql备份脚本
--end--
本文出自 “通信,我的最爱” 博客,请务必保留此出处http://dgd2010.blog.51cto.com/1539422/1678653
Linux Shell脚本之利用mysqldump备份MySQL数据库(详细注解)
标签:mysqldump 备份mysql数据库 mysql数据库备份 mysql备份 mysql备份脚本
本文系统来源:http://dgd2010.blog.51cto.com/1539422/1678653
内容总结
以上是互联网集市为您收集整理的Linux Shell脚本之利用mysqldump备份MySQL数据库(详细注解)全部内容,希望文章能够帮你解决Linux Shell脚本之利用mysqldump备份MySQL数据库(详细注解)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。