mysql不锁表备份
背景:医院客户反馈,凌晨录入患者信息时,会提示录不进去,经排查该时段是mysqldump备份时间,由于录入时间与备份时间冲突,所以觉得修改备份参数,在备份是不锁表。
原备份脚本:
#!/bin/bash
date=`date +%Y%m%d-%H%M%S`
mysqldump --opt -P 3306 -h localhost -uroot -S /data/mysql/data/mysql.sock -p'Pass@W0rd' --all-databases 2>/dev/null |gzip > /data/backup/mysql_fullback-${date}.sql.gz
if [ $? -eq 0 ];then
echo "$(date +%Y%m%d-%H%M%S) :backup complete !" >> /data/backup/backup.log
else
echo "$(date +%Y%m%d-%H%M%S) :backup failed !" >> /data/backup/backup.log
fi
cd /data/backup
#tar -zcvf mysql_fullback-${date}.sql.tgz mysql_fullback-${date}.sql --remove-files
find /data/backup/ -type f -mtime +15 |xargs rm -f
修改后的备份脚本
#!/bin/bash
date=`date +%Y%m%d-%H%M%S`
mysqldump --skip-opt --single-transaction -P 3306 -h localhost -uroot -S /data/mysql/data/mysql.sock -p'Pass@W0rd' --all-databases 2>/dev/null |gzip > /data/backup/mysql_fullback-${date}.sql.gz
if [ $? -eq 0 ];then
echo "$(date +%Y%m%d-%H%M%S) :backup complete !" >> /data/backup/backup.log
else
echo "$(date +%Y%m%d-%H%M%S) :backup failed !" >> /data/backup/backup.log
fi
cd /data/backup
#tar -zcvf mysql_fullback-${date}.sql.tgz mysql_fullback-${date}.sql --remove-files
find /data/backup/ -type f -mtime +15 |xargs rm -f
其他命令
mysql mysqldump 只导出表结构 不导出数据
mysqldump --opt -d 数据库名 -u root -p > xxx.sql
备份数据库
mysqldump 数据库名 >数据库备份名
mysqldump -A -u用户名 -p密码 数据库名>数据库备份名
mysqldump -d -A --add-drop-table -uroot -p >xxx.sql
- 导出结构不导出数据
mysqldump --opt -d 数据库名 -u root -p > xxx.sql
- 导出数据不导出结构
mysqldump -t 数据库名 -uroot -p > xxx.sql
- 导出数据和表结构
mysqldump 数据库名 -uroot -p > xxx.sql
- 导出特定表的结构
mysqldump -uroot -p -B 数据库名 --table 表名 > xxx.sql