mysql的备份和恢复的日志管理

发布于:2024-08-14 ⋅ 阅读:(174) ⋅ 点赞:(0)

备份

在生产环境中,数据的安全性非常重要

造成数据丢失的原因

1、程序出错

2、人为的问题

3、磁盘故障

备份的分类:

1、物理备份:对磁盘或者文件直接进行备份

冷备份:脱机备份,先把指定的程序关闭,然后对资料进行备份

热备份:联机备份,不用关闭程序就可以对资料进行备份

2、逻辑备份:根据数据库文件当中保存的sql语句,表结构等等,以特定的格式和命令对文件的内容进行还原。热备份的一种。只能对表恢复,库没了没有办法恢复

物理备份(又叫全量备份)

把数据库的内容整个一次性的做备份。

mysqldump:mysql自带的备份命令,可以备份库,也可以备份库里面的表

冷备份:
实验:从一台数据库备份到另一台

实验步骤:

1.安装一个高效率的数据压缩工具 xz

systemctl stop mysqld

yum -y install xz

tar -Jcvf /opt/mysql_all_$(date +%F).tar.xz /usr/local/mysql/data

在另一个虚拟机上操作

2.迁移数据

scp root@192.168.233.70:/opt/mysql_all_2024-07-19.tar.xz /opt/

结果

热备份:

备份一个本地数据库

备份多个本地数据库

备份数据库到另一个虚拟机

先在本地虚拟机

mysqldump -u root -p --all-databases > /opt/all.sql

然后在另一台虚拟机

备份库里的表

增量备份:

vim /etc/my.cnf

开启二进制日志的功能

binlog 逻辑备份,会生成一个文件,这里面包含了sql语句,要使用特定的方向和语句才能恢复

binlog_format=MIXED:记录二进制日志的文件格式

binlog的文件格式:

STATEMENT 基于sql语句:只是记录用户操作的sql语句,但是高并发的情况下,记录操作的sql语句的顺序可能会出错,导致恢复数据时,就会有丢失或者误差。恢复效率高

ROW 基于行,记录每一行的数据,准确,高并发也不会出错,但是恢复的效率低

MIXED 混合模式,正常情况下使用statement,高并发使用row

cd /usr/local/mysql/data

开启二进制日志成功后,在工作目录(data目录)会看到mysql-bin.000001

在mysql-bin.000001 这些binlog日志文件中可以看到at 位置节点(数字),at后面的数字就是位置节点,每个SQL语句对应一个at。

恢复数据命令

从位置的开始恢复

指定位置的开始和结束恢复

通过时间指定恢复

注意事项:日志中的时间节点格式是 yymmdd hh:mm:ss,但是命令行中恢复数据时的开始时间和结束时间的格式要求是yyyy-mm-dd hh:mm:ss,要注意这个坑!

日志的管理

vim /etc/my.cnf
general_log = ON
#开启通用查询日志,默认是开启的
general_log_file = /usr/local/mysql/data/mysql_general.log
#查询日志的保存位置
#报错日志默认是开启的,不需要ON
log-error = /usr/local/mysql/data/mysql_error.log
#报错日志的保存位置
slow_query_log = ON
#开启慢查询日志(执行记录超过一定时间的语句)
slow_query_log_file = /usr/local/mysql/data/mysql_slow_query.log
#慢查询日志的保存位置
long_query_time = 5
#默认的慢查询时间是10秒,这里设置为5秒,执行时间超过5秒的记录被保存