1.备份的种类

  1. 完全备份,就是备份整个数据库对象
  2. 事务日志备份, 备份事务日志记录上一次的数据库改变
  3. 增量备份,也叫差异备份
  4. 文件备份

2.备份方式

  1. 逻辑备份, 既备份sql语句,使用mysql自带的mysqldump工具进行备份。备份成sql文件形式
  2. 物理备份, 备份数据库文件

两种备份方式的比较:参考MYSQL自动备份策略的选择与实践

3.备份工具

1.mysqldump

mysqldump是mysql自带的备份工具,属于逻辑备份支持innodb的热备份,备份速度慢,适用于备份数据量小的场景。

对myisam存储引擎的表,只能使用温备份,这个时候要防止数据的写入,所以先加上读锁, --lock-all-tables

mysqldump --databases test --lock-all-tables --flush-logs > /tmp/backup_test_`date+%F-%H-%M`.sql

innodb存储引擎表,可以热备,不必对数据库进行加锁的操作,加一个选项可以进行热备份,--single-transaction

mysqldump --databases test --single-transaction --flush-logs--master-data=2> /tmp/backup_test_`date +%F-%H-%M`.sql

更多mysqldump命令,参考MySQL备份命令mysqldump参数说明与示例

2.基于LVM快照备份

物理备份方式

  1. 基于文件系统的物理备份(LVM的快照)
  2. tar之类的命令对整个数据库目录进行打包备份

备份的流程都是遵循以下:

  1. 开启窗口1,临时锁所有表, mysql> flush tables with read lock; 可以在mysql中使用 show master status; 查看状态, 注意这个窗口不能关闭,直到所有备份完成之后才能关闭
  2. 开启窗口2,tar备份数据库文件, tar -zcvf mysqla1.tar.gz mydata
  3. 备份完成,切换窗口1进行解锁, mysql> unlocktables;

更多参考:MySQL 数据库备份种类以及常用备份工具汇总

4.个人方案

每晚凌晨3点mysqldump备份数据库

#加入定时计划
* 03 * * * /root/mytools/mysqlback.sh

脚本如下:


DB_NAME="res"
DB_USER="root"
DB_PASS="****"
BIN_DIR="/usr/bin/" # mysqldump命令所在路径
BACK_DIR="/data/backdata" # 备份工具的路径
DATE="mysql-`date +'%Y%m%d-%H:%M:%S'`"
LogFile="$BACK_DIR"/dbbakup.log # 日志记录保存的目录
BackNewFile=$DATE.sql $BIN_DIR/mysqldump --opt --force -u$DB_USER -p$DB_PASS $DB_NAME > $BACK_DIR/$DATE.sql
echo -----------------------"$(date +"%y-%m-%d %H:%M:%S")"----------------------- >> $LogFile
echo createFile:"$BackNewFile" >> $LogFile
#-ctime表示创建时间,这里表示删除创建时间为多少天之前的文件,也就是结果只保留多少天的数据
find "/data/backdata/" -ctime +7 -type f -name "*.sql" -print > deleted.txt
echo -e "delete files:\n" >> $LogFile
#循环删除匹配到的文件
cat deleted.txt | while read LINE
do
rm -rf $LINE
echo $LINE>> $LogFile
done echo "---------------------------------------------------------------" >> $LogFile

最新文章

  1. Xamarin.Android广播接收器与绑定服务
  2. ORACLE判别字段是否包含中文
  3. Qt里获取目录的一个另类方法
  4. Velocity(2)——引用
  5. 【JQuery NoviceToNinja系列】01 开篇 Html页面设计和布局
  6. ORACLE 修改日志大小及增加日志成员
  7. VMwave下Ubuntu扩展磁盘空间
  8. 偶然发现www.ghostdogtattoo.com/ 出现的inner.html转换现象
  9. 使用git工具快速push项目到github(精简)
  10. 潭州课堂25班:Ph201805201 WEB 之 CSS 第三课 (课堂笔记)
  11. poj3253哈夫曼树
  12. python中pip
  13. nginx反向代理和tomcat集群(适用于ubutnu16.04及其centos7)
  14. 【API】遍历进程的几种方式
  15. 对多维向量vector<vector<int> > vec进行操作
  16. bzoj1819 电子词典
  17. HTML文档的经常使用标记
  18. POJ2195:Going Home(费用流入门)
  19. JavaWeb—Tomcat
  20. [Postgres]合并多行到一列(转)

热门文章

  1. React后台管理系统-品类的增加、修改和查看
  2. JDBC完美连接方法
  3. Element表单验证(1)
  4. codeforces757E. Bash Plays with Functions(狄利克雷卷积 积性函数)
  5. 基于 win7下虚拟机的 GNSS-SDR安装过程
  6. 正则(re 模块)
  7. 页面刷新 方法总结 JSP刷新
  8. poj 3087 直接模拟
  9. Background Segment CNT
  10. python文件,字符串,二进制的读写