mysqldump不锁表备份

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
  1. 导出结构不导出数据
mysqldump --opt -d 数据库名 -u root -p > xxx.sql
  1. 导出数据不导出结构
mysqldump -t 数据库名 -uroot -p > xxx.sql  
  1. 导出数据和表结构
mysqldump 数据库名 -uroot -p > xxx.sql  
  1. 导出特定表的结构
mysqldump -uroot -p -B 数据库名 --table 表名 > xxx.sql  

你可能感兴趣的:(数据库,mysql,sql)