目录
数据备份的重要性
- 在生产环境汇总,数据的安全性至关重要
- 任何数据的丢失都可能查收严重的后果
造成数据丢失的原因
- 程序错误
- 认为操作错误
- 运算错误
- 磁盘故障
- 灾难,盗窃
一,mysql日志概述
mysql 的日志默认报错位置在。/usr/local/mysql/data下
1,redo 重做日志,达到事务的一致性(每次重启会重做)
- 作用:确保日志的持久性。防止在发生故障,脏 页未写入磁盘,重启数据库会进行redo log执行重做,达到事务一致性
2,undo,回滚日志
- 作用,保证数据的原子性,记录事务发生之前的一个版本,用于回滚,innodb事务可重复读和读取已提交隔离级别就是通过mvcc+undo实现的
3,errorlog 错误日志
- 作用:mysql本身启动,停止,运行期间发生的错误信息
4,slow query log 慢查询日志
- 作用:记录执行时间过长的sql,时间阈值(10s) 可以配置,只记录执行成功
- 另一个作用:在于提醒优化
5,bin。log 二进制日志
- 作用:用于主从复制,实现主从同步
- 记录的内容是:数据库中执行的sql语句
6,relay log 中继日志
- 作用:用于数据库主从同步,将主库发来的bin.log保存在本地,然后从库进行回放
7,general log 普通日志
- 作用:记录数据库的操作明细,默认关闭,开启后会降低数据库性能。
2,日志配置文件
日志文件开启关闭日志的位置
vim /etc/my.cnf
#错误日志
log-error=/usr/local/mysql/data/mysql_error.log
#通用查询日志
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log
#二进制日志
log-bin=mysql-bin
#慢查询日志
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=5
2、修改完成需要重新mysql服务
systemctl restart mysqld.service
当我们重启了myslq服务之后,会在数据库目录下,生成以下日志文件
当我们重新启动mysql服务,二进制文件会重新生成一个新的二进制文件
3,日志配置文件的查询
#登入mysql
mysql -u root -p[密码]
#查看通用查询日志是否开启
show variables like 'general%';
#查看二进制日志是否开启
show variables like 'log_bin%';
#查看慢查询日功能是否开启
show variables like '%slow%';
#查看慢查询时间设置
show variables like 'long_query_time';
#在数据库中设置开启慢查询的方法
set global slow_query_log=ON;
查看二进制日志是否开启
二,mysql备份类型
数据库备份可以物理备份和逻辑备份
物理备份是对数据库操作系统的物理文件(如数据文件,日志文件)的备份,这种类型的备份适用于在出现问题的时候需要快速恢复的大型重要数据库。
1,物理备份
- 物理备份有分为,冷备份,热备份,温备份
1.1,冷备份
是在关闭数据库的时候进行备份,可以直接(tar)
- 关闭mysql数据库
- 使用tar命令直接打包数据库文件夹
- 直接替换现有mysql目录即可(usr/local/mysql/data数据目录)
1.2 热备份
数据库处于运行状态,依赖数据库的日志文件进行备份(第三方工具:mysqlhotcopy)
1.3 温备份
数据库锁定表格,只可以读,不可以写入的状态下进行备份(mysqldump备份)
2,逻辑备份
逻辑备份是对数据库逻辑组件的备份,表示为逻辑数据库结构,这种类型的备份适用于可以编辑数据值或结构。
从数据库的备份策略角度来看,备份又可以分为完全备份,差异备份,增量备份。
2.1 完全备份
每次对数据进行完整备份,即对整个数据库,数据库结构,和文件结构的备份,保存的是完整备份的数据库,是差异备份和增量备份的基础完全备份的备份,与恢复操作都非常简单,但是数据存在大量的重复并且会占用大量的磁盘空间,备份的时间也很长。
优势
- 备份恢复操作简单
劣势
- 随着备份的次数越来越多,占用的磁盘空间和资源也较多
- 数据存在大量的重复
2.2。差异备份
备份那些自从上次完全备份之后被修改过的所以文件,备份的时间节点是从上次完整备份起,备份数据量会越来越大,恢复数据是,只需要恢复上次的完整备份与最近的一次差异备份
优势
恢复时只需要恢复完全备份和就近一次的备份文件
劣势
数据会越来越大
2.3增量备份
只有那些在上次完全备份或者增量备份后后被修改的文件才会被备份,上次完整备份或上次增量备份的时间为时间点,仅备份期间内的数据变化,因此备份是数据量小,占用空间小,备份速度快,但是恢复时,需要从上一次的完整备份开始到最后一次增量备份之间的所以增量依次恢复,如中间某次的备份数据损坏,将导致数据的丢失。
优势
没有重复的备份数据,备份数据量不打,所需时间短。
劣势
数据恢复比较麻烦,中间任何一个备份的数据都不能损坏,不然导致数据的丢失。
2,4 如何选择逻辑备份的策略
完全备份:一周进行一次全备,区内的时间需要在不提供业务的时间区间进行,晚上10点到早上5点进行全备
增量备份:一天一次增量备份
差异备份:1/2/3天一次增量备份
3,常用的备份方法
1,物理备份
备份时 数据库处于关闭状态,直接打包数据库文件(tar)
备份速度快,恢复时也是最简单的
缺点:数据的实时性较差,不能在业务正常运行的时候进行tar备份,要在服务停止的时候
2,专用备份工具mysqldump或者mysqlhotcopy
mysqldump 常用的逻辑备份工具
mysqlhotcopy 拥有备份myisam和archive表
3,启用二进制日志进行增量备份
进行增量备份,需要刷新二进制日志
4,第三方工具备份
免费的mysql 热备份软件 percona xtrabackup mysqlbackup
四 mysql完全备份
是对整个数据库,数据库结构和文件结构的备份
保存的是备份完成时刻的数据库
是差异备份与增量备份的基础
优点
备份恢复简单
缺点
数据存在大量的重复
占用大量的备份空间
备份与恢复时间长
1,数据库完全备份分类
1,物理冷备份与恢复
关闭mysql数据库
使用tar命令直接打包数据库文件夹
直接替换现有mysql目录即可(usr/local/mysql/data)
2,mysqldump备份与恢复
mysql自带的备份工具,可方便实现对mysql的备份
可以将指定的库,表导出为sql脚本
使用命令mysql 导入备份的数据