一文了解mysql日志与备份恢复

本文详细介绍了MySQL日志的类型及作用,包括redo、undo、errorlog、slow query log、bin log和relay log。此外,还阐述了数据库备份的重要性,并分类讨论了物理备份与逻辑备份的区别。接着,详述了不同类型的备份操作,如冷备份、mysqldump备份(温备份)和增量备份,以及对应的恢复方法。内容包括环境准备、备份与恢复的步骤,以及增量备份的断点恢复和基于时间点恢复。
摘要由CSDN通过智能技术生成

 

目录

一,日志

1,日志的作用和分类

2,日志的基础操作

二,备份简介

1,备份的重要性

2,数据库备份的分类

2.1,物理与逻辑的角度分类

2.2数据库备份策略分类

三,备份的操作

1,冷备份

2,mysqldump备份与恢复(温备份)

3,增量备份与恢复


一,日志

1,日志的作用和分类

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,日志的基础操作

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;         #在数据库中设置开启慢查询的方法

(root@localhost) [hellodb]> show variables like 'general%'; 
+------------------+-------------------------------------+
| Variable_name    | Value                               |
+------------------+-------------------------------------+
| general_log      | OFF                                 |
| general_log_file | /usr/local/mysql/data/localhost.log |
+------------------+-------------------------------------+
2 rows in set (0.01 sec)
#查看通用查询日志未开启

(root@localhost) [hellodb]> show variables like 'log_bin%';
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin                         | OFF   |
| log_bin_basename                |       |
| log_bin_index                   |       |
| log_bin_trust_function_creators | OFF   |
| log_bin_use_v1_row_events       | OFF   |
+---------------------------------+-------+
5 rows in set (0.01 sec)
#查看二进制日志未开启

(root@localhost) [hellodb]> show variables like '%slow%'; 
+---------------------------+------------------------------------------+
| Variable_name             | Value                                    |
+---------------------------+------------------------------------------+
| log_slow_admin_statements | OFF                                      |
| log_slow_slave_statements | OFF                                      |
| slow_launch_time          | 2                                        |
| slow_query_log            | OFF                                      |
| slow_query_log_file       | /usr/local/mysql/data/localhost-slow.log |
+---------------------------+------------------------------------------+
5 rows in set (0.00 sec)
#查看慢查询日功能未开启

(root@localhost) [hellodb]> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)

(root@localhost) [hellodb]> set global slow_query_log=ON;  #开启慢查询日志
Query OK, 0 rows affected (0.01 sec)

(root@localhost) [hellodb]> show variables like '%slow%';       
+---------------------------+------------------------------------------+
| Variable_name             | Value                                    |
+---------------------------+------------------------------------------+
| log_slow_admin_statements | OFF                                      |
| log_slow_slave_statements | OFF                                      |
| slow_launch_time          | 2                                        |
| slow_query_log            | ON   #开启了                                    |
| slow_query_log_file       | /usr/local/mysql/data/localhost-slow.log |
+---------------------------+------------------------------------------+
5 rows in set (0.00 sec)

开启日志修改配置文件

[root@localhost data]# vim /etc/my.cnf

[mysql]
port = 3306

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
log-error=/usr/local/mysql/data/mysql_error.log
##错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log
##通用查询日志,用来记录MySQL的所有连接和语句,默认是关闭的
log-bin=mysql-bin
##二进制日志(binlog),用来记录所有更新了数据或者已经潜在更新了数据的语句,
记录了数据的更改,可用于数据恢复,默认已开启
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=5
##慢查询日志,用来记录所有执行时间超过long_query_time秒的语句,可以找到哪些查询
语句执行时间长,以便提醒优化,默认是关闭的

查看日志文件

重启服务再查看日志文件

 日志文件生成

mysql-bin.index:二进制日志文件的索引

二,备份简介

1,备份的重要性

在生产环境中,数据的安全性至关重要

任何数据的丢失都可能产生严重的后果

造成数据丢失的原因:

程序错误

人为操作错误

运算错误

磁盘故障

灾难(火灾,地震)和盗窃

##造成数据丢失的原因多种多样,因此数据的备份非常重要

2,数据库备份的分类

2.1,物理与逻辑的角度分类

1)物理备份:对数据库操作系统的物理文件(如数据文件,日志文件等)的备份

物理备份方法:

冷备份(脱机备份):是在关闭比数据库的时候进行的

热备份(联机备份):数据库处于运行状态,依赖于数据库的日志文件

温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作

2)逻辑备份:对数据库逻辑组件(如:表等数据库对象)的备份

备份的对比

冷、温、热备份
冷备:读、写操作均不可进行,数据库停止服务
温备:读操作可执行;但写操作不可执行
热备:读、写操作均可执行
 MyISAM:温备,不支持热备
 InnoDB:都支持

物理备份:直接复制数据文件进行备份,与存储引擎有关,占用较多的空间,速度快

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值