MySQL 私房菜————MySQL 日志管理|MySQL 备份与恢复|完全备份|

MySQL 日志管理

  • 1.MySQL 日志管理
    • 1.1 MySQL常用日志类型及开启
      • 1.错误日志
      • 2.通用查询日志
      • 3.二进制日志(binlog)
      • 4.慢查询日志
    • 1.2 MySQL的日志开启与配置
    • 1.3查看日志状态
      • 1.查看通用查询日志是否开启
      • 2.查看二进制日志是否开启
      • 3.查看慢查询日志功能是否开启
      • 4.查看慢查询时间设置
      • 5.在数据库中设置开启慢查询的方法
  • 2.MySQL 备份与恢复
    • 2.1 为什么要数据备份?
    • 2.2 数据库备份的分类
      • 2.2.1 从物理与逻辑的角度分类
        • (1)物理备份
        • (2)逻辑备份
      • 2.2.2 从数据库的备份策略角度分类
        • (1)完全备份
        • (2)差异备份
        • (3)增量备份
    • 2.3 常见的备份方法
      • 物理冷备
      • 启用二进制日志进行增量备份
      • 第三方工具备份
    • 2.4 MySQL 完全备份
      • 完全备份分类:
        • (1)物理冷备份与恢复
        • (2)mysqldump备份与恢复
    • 2.5 物理备份之:冷备份、与恢复

1.MySQL 日志管理

MySQL的默认日志保存位置为/usr/local/mysql/data

日志开启方式有两种:通过配置文件或者是通过命令
通过命令修改开启的日志是临时的,关闭或重启服务后就会关闭

1.1 MySQL常用日志类型及开启

vim /etc/my.cnf
[mysqld]
......

1.错误日志

用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启

指定日志的保存位置和文件名
log-error=/usr/local/mysql/data/mysql_error.log				

2.通用查询日志

用来记录MySQL的所有连接和语句,默认是关闭的

general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log

3.二进制日志(binlog)

用来记录所有当MySQL启动、停止或运行时发送的错误信息,默认是关闭的

log-bin=mysql-bin				
或
log_bin=mysql-bin

4.慢查询日志

用来记录所有执行时间超过long_query_time秒的语句,可以找到哪些查询语句执行时间长,以便于优化,默认是关闭的

slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=5	   		

systemctl restart mysqld    

MySQL 私房菜————MySQL 日志管理|MySQL 备份与恢复|完全备份|_第1张图片

1.2 MySQL的日志开启与配置

可以修改 MySQL 的配置文件 /etc/my.cnf 进行永久性修改,重启服务生效。

vim /etc/my.cnf

[mysqld]
#【错误日志】,用来记录当MySQL启动、停止或运行时发生的错误信息,
#【错误日志】默认是开启的

#指定【错误日志】的 保存位置和文件名
log-error=/usr/local/mysql/data/mysql_error.log

#【通用查询日志】,用来记录MySQL的所有连接和语句
#【通用查询日志】默认是关闭的

general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log

#【二进制日志】(binlog),用来记录所有更新了数据或者已经潜在更新了数据的语句,记录了数据的更改,可用于数据恢复。
#【二进制日志】默认已开启
log-bin=mysql-bin        #也可以 log_bin=mysql-bin

#【慢查询日志】,用来记录所有执行时间超过 long_query_time 秒的语句,可以找到哪些查询语句执行时间长,以便于优化;
#【慢查询日志】默认是关闭的
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=5  

#设置超过5秒执行的语句被记录,缺省时为10秒

#重启mysql 服务使其生效
systemctl restart mysqld.service 

1.3查看日志状态

1.查看通用查询日志是否开启

mysql -u root -p
show variables like 'general%';		

2.查看二进制日志是否开启

show variables like 'log_bin%';

3.查看慢查询日志功能是否开启

show variables like '%slow%';

4.查看慢查询时间设置

show variables like 'long_query_time';

5.在数据库中设置开启慢查询的方法

set global slow_query_log=ON;
该方法重启服务失效

MySQL 私房菜————MySQL 日志管理|MySQL 备份与恢复|完全备份|_第2张图片
MySQL 私房菜————MySQL 日志管理|MySQL 备份与恢复|完全备份|_第3张图片
MySQL 私房菜————MySQL 日志管理|MySQL 备份与恢复|完全备份|_第4张图片

2.MySQL 备份与恢复

2.1 为什么要数据备份?

  • 备份的主要目的是灾难恢复,在生产环境中,数据的安全性至关重要,任何数据的丢失都可能产生严重的后果。
  • 造成数据丢失的原因:程序错误、人为操作错误、运算错误、磁盘故障、灾难(如火灾、地震)和盗窃等。

2.2 数据库备份的分类

2.2.1 从物理与逻辑的角度分类

(1)物理备份

  • 对数据库操作系统的物理文件(如数据文件、日志文件等)的备份;
    物理备份的方法

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

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

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

(2)逻辑备份

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

2.2.2 从数据库的备份策略角度分类

(1)完全备份

  • 每次对数据库进行完整的备份;

(2)差异备份

  • 备份自从上次完全备份之后,被修改过的文件;

(3)增量备份

  • 只有在上次完全备份或者增量备份后被修改的文件才会被备份。
    工作中通常使用 一次完全备份(如每月一次) 和 多次增量备份 结合使用。

2.3 常见的备份方法

物理冷备

  • 备份时数据库处于关闭状态,直接打包数据库文件;
  • 备份速度快,恢复时也是最简单的;

专用备份工具 mydump 或 mysqlhotcopy

  • mysqldump常用的逻辑备份工具;
  • mysqlhotcopy仅拥有备份MyISAM和ARCHIVE表;

启用二进制日志进行增量备份

  • 进行增量备份,需要刷新二进制日志;

第三方工具备份

  • 如:免费的 MySQL 热备份软件 Percona XtraBackup;

常用备份方式有:物理打包备份,还有 mysqldump 工具备份。

2.4 MySQL 完全备份

  • 完全备份是对整个数据库、数据库结构和文件结构的备份;保存的是备份完成时刻的数据库;是差异备份与增量备份的基础;

  • 优点:备份与恢复操作简单方便(就是压缩、解压缩、替换的过程)

  • 缺点:数据存在大量的重复、占用大量的备份空间、备份与恢复时间长;

完全备份分类:

(1)物理冷备份与恢复

  • 关闭MySQL数据库;
  • 使用tar命令直接打包数据库文件夹;
  • 直接替换现有MySQL目录即可;

(2)mysqldump备份与恢复

  • MySQL自带的备份工具,可方便实现对MySQL的备份;
  • 可以将指定的库、表导出为 .SQL脚本文件;
  • 使用mysql命令 导入备份的数据;

2.5 物理备份之:冷备份、与恢复

冷备份就是 停止 mysql 服务后,再进行备份;
热备份就是 mysql 在服务中就进行备份;

物理冷备份与恢复

systemctl stop mysqld

#xz 也是一个压缩工具,J:压缩,压缩文件结尾用 xz
yum -y install xz		
#压缩备份
tar Jcvf /opt/mysql_all_$(date +%F).tar.xz /usr/local/mysql/data/
#解压恢复
tar Jxvf /opt/mysql_all_2021-02-05.tar.xz -C /usr/local/mysql/data

systemctl start mysqld
  • /usr/lcoal/mysql/data 目录中
  • .ibd 是数据文件
  • .frm 是表结构文件

你可能感兴趣的:(MySQL,linux,数据库,mysql,运维,服务器)