MySQL日志管理、备份
在生产中,数据的重要性尤其的高,在我们听过的各种生产上的事故中,关于数据丢失误删的占了大多数,并导致了很严重的后果,所以数据备份对于我们来说非常重要。
MySQL日志管理
MySQL的日志默认保存位置为:/usr/local/mysql/data下
配置文件位于:/etc/my.cnf文件中的[mysqld]内
日志类型和作用
- redo重做日志:达到事务一致性(每次重启会重做)
作用:确保日志的持久性,防止在发生故障,脏页未写入磁盘。重启数据库会进行redo log执行重做,达到事务一致性
- undo 回滚日志
作用:保证数据的原子性,记录事务发生之前的一个版本,用于回滚。innodb事务可以重复读和读取已提交
- errorlog 错误日志
用来记录当MySQL启动、停止或运行时发生的错误信息,默认开启
- slow query log 慢查询日志
记录执行时间过场的sql,时间阈值可以设置,只记录执行成功,另一个作用在于提醒优化
- bin log二进制日志
用于主从辅助,实现主从同步,记录的内容是数据库中执行的sql语句
用来记录所有更新了数据或者已经潜在更新了数据的语句,记录了数据的更改,可用于数据恢复,默认已开启
- relay log中继日志
用于数据库主从同步,将主库发来的bin log保存在本地,然后从库进行回放
- general log 普通日志
记录数据库的操作明细,默认关闭,开启后会降低数据库性能
配置文件
vim /etc/my.cnf
[mysqld]
#错误日志
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 或log_bin=mysql-bin
#慢查询日志
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=5 #设置超时时间
#配置文件添加完后需要重启MySQL
systemctl restart mysql
cd /usr/localmysql/data
ls
日志查询
#variables 表示变量
#like 表示模糊查询
#%xxx,以什么结尾,xxx%以什么开头,%xxx%包含
#查看通用查询日志是否开启
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;
数据备份
备份的主要目的是灾难恢复,可以用来测试应用、回滚数据修改、查询历史数据、审计等
数据备份的重要性
在企业中,数据的价值至关重要,数据保障了企业业务的正常运行。因此,数据的安全性及数据的可靠性是运维的重中之重,任何数据的吊事都可能对企业产生严重的后果。
通常情况下,造成数据丢失的原因有一下几种:
- 程序错误
- 人为操作错误
- 运算错误
- 磁盘故障
- 灾难(火灾、地震、盗窃等)
备份的类型
物理备份
是对数据库操作系统的物理文件,如数据文件、日志文件的备份。这种类型的备份适用于在出现问题的时候需要快速恢复的大型重要数据库
- 冷备份(脱机备份):是在关闭数据库的时候进行的 tar
- 热备份(联机备份):数据库在运行状态,依赖于数据库的日志文件(mysqlhotcopy mysqlbackup)
- 温备份:数据库锁定表格(不可写入但是可读)的状态下进行备份操作(mysq