因为MYSQLDUMP会为整个库来加一个全局锁定。
如果单纯用MYSQLDUMP进行全库备份会造成以下三个方面的影响。
1、服务器CPU严重阻塞。
2、磁盘I/O直线增加。
3、所有的查询都成了慢查询。
我现在的网站数据库大概是5个G左右,而且每天都有增大。
表结构是MYISAM,INNODB,MEMORY三者混合。
所以单纯用HOTCOPY工具恐怕有点困难。所以我今天简单变了一下我上次写的关于用OUTFILE来备份MYSQL的脚本。
可以解决上面说的三个缺点。
1、备份脚本内容
[david_yeung@localhost ~]$ cat fast_backup
#!/bin/sh
#
# Created by david yeung.
#
# 20080707.
#
# Backup mysql's full data.
#
DBNAME=$1
BACKUPDIR=/home/david_yeung/backup_new
USERNAME=backup_user
PASSWD=123456
TARNAME="$BACKUPDIR"/backup"$1"`date '+%Y%m%d'`
# Add your own database name here.
case "$1" in
my_site);;
*) exit;;
esac
# Get all the tables' name.
NUM=`/usr/local/mysql/bin/mysql -u$USERNAME -p$PASSWD -s -vv -e "show tables" -D $DBNAME|wc -l`
HEADNUM=`expr ${NUM} - 3`
TAILNUM=`expr ${NUM} - 7`
ARR1=`/usr/local/mysql/bin/mysql -u$USERNAME -p$PASSWD -s -vv -e "show tables" -D $DBNAME| head -n"$HEADNUM" | tail -n "$TAILNUM"`
ARR2=($ARR1)
i=0
while [ "$i" -lt "${#ARR2[@]}" ]
do
tmpFileName=${ARR2[$i]}
# The real dump process.
/usr/local/mysql/bin/mysqldump -u$USERNAME -p"$PASSWD" "$DBNAME" "$tmpFileName" >> "$TARNAME"
let "i++"
done
2、因为我们一直用存储过程,所以得单独备份出来。
[david_yeung@localhost ~]$ cat fast_sp
#!/bin/sh
# Created by david yeung 20080122.
#
# Backup site's routine.
TARNAME=/home/david_yeung/backup_new/spBackup"$1"`date '+%Y%m%d'`
/usr/local/mysql/bin/mysqldump -ubackup_user -p123456 -n -t -d -R my_site > "$TARNAME"
3、丢到计划任务里面去,就不管了。
[root@localhost backup_new]# crontab -l
0 01 * * * /home/david_yeung/fast_backup my_site
0 0 * * 5 /home/david_yeung/fast_sp
每天凌晨1点备份数据,每个周五凌晨备份存储过程。
linux下改良版本mysqldump来备份MYSQL数据库
2019-10-23 14:51mysql教程网 Mysql
我的备份脚本都是在凌晨执行的,经常在慢查询日志里面看到这样的信息:select * from table1; 之前一直很纳闷,最后才了解到原来是MYSQLDUMP搞的鬼。
延伸 · 阅读
- 2019-10-22老牌运维教你如何快速分析Linux服务器的性能问题
- 2019-10-22Ubuntu 13.10安装最新Linux内核的可行方法
- 2019-10-22Linux中如何挂载windows共享文件以实现文件传输
- 2019-10-22Linux中如何管理mail电子邮件日志(邮件系统)
- 2019-10-22在Linux系统下查找可移植可执行文件的方法
- 2019-10-22Linux用户登陆邮件提醒功能怎么设置?
精彩推荐
- Mysql
Mysql主从数据库(Master/Slave)同步配置与常见错误
今天小编就为大家分享一篇关于Mysql主从数据库(Master/Slave)同步配置与常见错误,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋...
- Mysql
Mysql中replace与replace into的用法讲解
今天小编就为大家分享一篇关于Mysql中replace与replace into的用法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...
- Mysql
88秒插入1000万条数据到MySQL数据库表的操作方法
这篇文章主要介绍了88秒插入1000万条数据到MySQL数据库表的操作方法,首先给大家说下我用到的数据库表为mysql数据库5.7版本的。具体操作方法大家跟随小编...
- Mysql
MySQL和Redis实现二级缓存的方法详解
这篇文章主要给大家介绍了关于MySQL和Redis实现二级缓存的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,...
- Mysql
mysql5.7.24 解压版安装步骤及遇到的问题小结
这篇文章主要介绍了mysql5.7.24 解压版安装步骤以及遇到的问题 ,文中给大家提出了解决方案,需要的朋友可以参考下...
- Mysql
MySQL 索引分析和优化
索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。...
- Mysql
Mysql中SQL语句不使用索引的情况
今天小编就为大家分享一篇关于Mysql中SQL语句不使用索引的情况,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小...
- Mysql
mysql修改数据库默认路径无法启动问题的解决
这篇文章主要给大家介绍了关于mysql修改数据库默认路径无法启动问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的...