给小孩子做网站,广州前20跨境电商公司,php英文商城网站建设,企业网站建设选题依据目录 MySQL日志管理
数据库备份的重要性
数据库备份的分类
从物理与逻辑的角度
从数据库的备份策略角度
常见的备份方法
物理冷备
专用备份工具mysqldump或mysqlhotcopy
启用二进制日志进行增量备份
第三方工具备份
MySQL完全备份与恢复
MySQL完全备份
物理冷备份与…目录 MySQL日志管理
数据库备份的重要性
数据库备份的分类
从物理与逻辑的角度
从数据库的备份策略角度
常见的备份方法
物理冷备
专用备份工具mysqldump或mysqlhotcopy
启用二进制日志进行增量备份
第三方工具备份
MySQL完全备份与恢复
MySQL完全备份
物理冷备份与恢复 mysqldump 备份与恢复 MySQL完全恢复 MySQL增量备份与恢复
MySQL 增量备份
MySQL增量恢复
一般恢复 断点恢复 MySQL日志管理
MySQL 的日志默认保存位置为 /usr/local/mysql/data
错误日志用来记录当MySQL启动、停止或运行时发生的错误信息默认已开启通用查询日志用来记录MySQL的所有连接和语句默认是关闭的二进制日志(binlog)用来记录所有更新了数据或者已经潜在更新了数据的语句记录了数据的更改可用于数据恢复默认已开启慢查询日志用来记录所有执行时间超过long_query_time秒的语句可以找到哪些查询语句执行时间长以便于优化默认是关闭的 在/etc/my.cnf添加内容以此进行数据库的日志管理
vim /etc/my.cnf
[mysqld]
##错误日志用来记录当MySQL启动、停止或运行时发生的错误信息默认已开启
log-error/usr/local/mysql/data/mysql_error.log #指定日志的保存位置和文件名##通用查询日志用来记录MySQL的所有连接和语句默认是关闭的
general_logON
general_log_file/usr/local/mysql/data/mysql_general.log##二进制日志(binlog)用来记录所有更新了数据或者已经潜在更新了数据的语句记录了数据的更改可用于数据恢复默认已开启
log-binmysql-bin #也可以 log_binmysql-bin##慢查询日志用来记录所有执行时间超过long_query_time秒的语句可以找到哪些查询语句执行时间长以便于优化默认是关闭的
slow_query_logON
slow_query_log_file/usr/local/mysql/data/mysql_slow_query.log
long_query_time5 #设置超过5秒执行的语句被记录缺省时为10秒 show variables like general%; #查看通用查询日志是否开启show variables like log_bin%; #查看二进制日志是否开启show variables like %slow%; #查看慢查询日功能是否开启
show variables like long_query_time; #查看慢查询时间设置set global slow_query_logON; #在数据库中设置开启慢查询的方法 去到/usr/local/mysql/data/路径下可以找到相对应的日志文件 二进制日志格式有三种binlog_formatSTATEMENT 或 ROW 或 MIXED STATEMENT基于SQL语句记录二进制日志写入和恢复速度较快在高并发的情况可能会出SQL语句顺序记录偏差导致恢复时数据丢失。老版本的默认模式 ROW基于行记录二进制日志写入和恢复速度较STATEMENT慢些日志文件占用空间也较大但是准确性较高。5.7的默认模式 MIXED混合模式平时负载压力较小时使用SQL语句记录二进制日志在高并发的情况会切换成基于行记录二进制日志。 数据库备份的重要性
备份的主要目的是灾难恢复在生产环境中数据的安全性至关重要任何数据的丢失都可能产生严重的后果。
造成数据丢失的原因主要有程序错误、人为操作错误、运算错误、磁盘故障、灾难(如火灾、地震)和盗窃。
数据库备份的分类
从物理与逻辑的角度
1.物理备份对数据库操作系统的物理文件如数据文件、日志文件等)的备份。 冷备份脱机备份)︰是在关闭数据库的时候进行的 热备份联机备份)︰数据库处于运行状态依赖于数据库的日志文件 温备份数据库锁定表格不可写入但可读的状态下进行备份操作。 2.逻辑备份对数据库逻辑组件如表等数据库对象的备份导出sql文件。
从数据库的备份策略角度
完全备份每次备份都备份完整的库或者表数据差异备份只备份上一次完全备份后的更新数据增量备份每次备份只备份上一次完全备份或增量备份后的更新数据 注推荐使用 完全备份增量备份 的方式
常见的备份方法
物理冷备
备份时数据库处于关闭状态直接打包数据库文件
备份速度快恢复时也是最简单的
专用备份工具mysqldump或mysqlhotcopy
mysqldump常用的逻辑备份工具
mysglhotcopy仅拥有备份MyISAM和ARCHIVE表
启用二进制日志进行增量备份
进行增量备份需要刷新二进制日志
第三方工具备份
免费的MySQL热备份软件Percona XtraBackup
MySQL完全备份与恢复
MySQL完全备份
InnoDB存储引擎的数据库在磁盘上存储成三个文件db.opt(表属性文件)、表名.frm(表结构文件)、表名.ibd(表数据文件)。
物理冷备份与恢复
#关闭mysql
systemctl stop mysqld
#压缩备份
tar cf /opt/mysql_all_$(date %F).tar /usr/local/mysql/data/
#移除
mv /usr/local/mysql/data/ ~
#解压恢复
tar Jxvf /opt/mysql_all_2023-12-26.tar
mv /opt/usr/local/mysql/data/ /usr/local/mysql/
关闭mysql服务 去到/opt将/usr/local/mysql/data/路径下全部文件压缩 解压 将/usr/local/mysql/data/移到家目录下用来模拟文件缺失 将解压好的文件夹从新放回原路径 mysqldump 备份与恢复
完全备份一个或多个完整的库包括其中所有的表
mysqldump -u root -p[密码] --databases 库名1 [库名2] … /备份路径/备份文件名.sql #导出的就是数据库脚本文件 完全备份 MySQL 服务器中所有的库
mysqldump -u root -p[密码] --all-databases /备份路径/备份文件名.sql 完全备份指定库中的部分表
mysqldump -u root -p[密码] [-d] 库名 [表名1] [表名2] … /备份路径/备份文件名.sql
#使用“-d”选项说明只保存数据库的表结构
#不使用“-d”选项说明表数据也进行备份 查看备份文件
grep -v ^-- /opt/kgc_info1.sql | grep -v ^/ | grep -v ^$ MySQL完全恢复
恢复数据库
mysql -u root -p -e drop database 库名;
#“-e”选项用于指定连接 MySQL 后执行的命令命令执行完后自动退出
mysql -u root -p -e SHOW DATABASES;mysql -u root -p /opt/库名.sql
mysql -u root -p -e SHOW DATABASES; 恢复数据表 当备份文件中只包含表的备份而不包含创建的库的语句时执行导入操作时必须指定库名且目标库必须存在。 mysqldump -u root -p 库名 表名 /opt/库名.表名.sqlmysql -u root -p -e drop table 库名.表名;
mysql -u root -p -e show tables from 库名;mysql -u root -p kgc /opt/库名.表名.sql
mysql -u root -p -e show tables from 库名;MySQL增量备份与恢复
MySQL 增量备份
开启二进制日志功能
修改/etc/my.cnf配置
vim /etc/my.cnf
[mysqld]
log-binmysql-bin
binlog_format MIXED #可选指定二进制日志(binlog)的记录格式为 MIXED
server-id 1#二进制日志(binlog)有3种不同的记录格式STATEMENT(基于SQL语句)、ROW(基于行)、MIXED(混合模式)默认格式是STATEMENTsystemctl start mysqld 可每周对数据库或表进行完全备份
mysqldump -u root -p 库名 表名 /opt/库名_表名_$(date %F).sql
mysqldump -u root -p --databases 库名 /opt/库名_$(date %F).sql可每天进行增量备份操作生成新的二进制日志文件
mysqladmin -u root -p flush-logs 插入新数据以模拟数据的增加或变更
use kunkun;
insert into kk values(3,tt,22,女);
insert into kk values(4,hh,33,男); 再次生成新的二进制日志文件
mysqladmin -u root -p flush-logs 之前的步骤4的数据库操作会保存到mysql-bin.000004文件中之后数据库数据再发生变化则保存在mysql-bin.000005文件中 查看二进制日志文件的内容
cp /usr/local/mysql/data/mysql-bin.000005 /opt/
mysqlbinlog --no-defaults --base64-outputdecode-rows -v /opt/mysql-bin.000005
#--base64-outputdecode-rows使用64位编码机制去解码并按行读取
#-v显示详细内容 MySQL增量恢复
一般恢复
模拟丢失更改的数据的恢复步骤
mysqlbinlog --no-defaults /opt/mysql-bin.000004 | mysql -u root -p 模拟丢失所有数据的恢复步骤
mysql -u root -p666 kunkun /opt/kunkun_kk.sql
mysqlbinlog --no-defaults /opt/mysql-bin.000004 | mysql -u root -p666 断点恢复
查看二进制日志文件
mysqlbinlog --no-defaults --base64-outputdecode-rows -v /opt/mysql-bin.000004 基于位置恢复
#仅恢复到操作 ID 为“507”之前的数据即不恢复“hh”的数据
mysqlbinlog --no-defaults --stop-position507 /opt/mysql-bin.000004 | mysql -uroot -p666#仅恢复“hh”的数据跳过“tt”的数据恢复
mysqlbinlog --no-defaults --start-position597 /opt/mysql-bin.000004 | mysql -uroot -p666 基于时间点恢复
#仅恢复到 18:28:28 之前的数据即不恢复“hh”的数据
mysqlbinlog --no-defaults --stop-datetime2023-12-26 18:28:28 /opt/mysql-bin.000004 |mysql -uroot -p666 #仅恢复到 18:28:28 之后的数据即跳过“tt”数据的恢复恢复“hh”的数据
mysqlbinlog --no-defaults --stop-datetime2023-12-26 18:28:28 /opt/mysql-bin.000004 |mysql -uroot -p666 注
如果恢复某条SQL语句之前的所有数据就stop在这个语句的位置节点或者时间点 如果恢复某条SQL语句以及之后的所有数据就从这个语句的位置节点或者时间点start