室内装修效果图网站有哪些,wordpress .net 比较,如何制作自己的微信小程序,houzz室内设计官网2、BigLog日志相关
2.1、检查biglog状态是否开启
声明: 当前为mysql版本5.7 当前为mysql版本5.7****当前为mysql版本5.7
2.1.1、Navicat工具执行
SHOW VARIABLES LIKE LOG_BIN%;OFF 是未开启状态#xff0c;如果不是ON 开启状态需要开启为ON。{默认情况下就是关闭状态} 2.…2、BigLog日志相关
2.1、检查biglog状态是否开启
声明: 当前为mysql版本5.7 当前为mysql版本5.7****当前为mysql版本5.7
2.1.1、Navicat工具执行
SHOW VARIABLES LIKE LOG_BIN%;OFF 是未开启状态如果不是ON 开启状态需要开启为ON。{默认情况下就是关闭状态} 2.1.2、命令行执行 其中-h表示服务器名localhost表示本地-u为数据库用户名root是mysql默认用户名-p为密码如果设置了密码可直接在-p后链接输入如-proot如果用户没有设置密码显示Enter password时直接回车即可。 mysql -hlocalhost -uroot -proot 2.2、开启biglog 执行语句开启biglog SET GLOBAL log_bin ‘ON’;
执行结果: 注意: **报错了! 报错了!报错不可怕可怕的是报错没有征兆。**如果要永久修改log_bin的值需要修改MySQL的配置文件(my.cnf或my.ini)并重启MySQL服务器使修改生效。(只读变量不能使用set修改只能通过修改my.cnf或my.ini文件再重启生效) 遇到这种错误需要修改my.cnf Linux系统或my.iniWindows系统配置文件在 [mysqld] 下面增加log-binmysql-bin后重启MySQL服务即可 在 [mysqld] 段落中添加的log-binmysql-bin这是一个 MySQL 数据库的配置选项用于开启二进制日志记录。二进制日志可以记录所有的数据库操作包括增删改查等。开启二进制日志记录可以用于备份和恢复数据库以及进行数据复制等操作。 在 [mysqld] 段落中添加 server-id1 其中的1可以替换为任意整数但要确保主从之间的server-id不同 server-id是 MySQL 数据库中的一条配置参数用于设置 MySQL 实例的唯一 ID。每个 MySQL 实例都必须有一个唯一的 server-id以便 MySQL 集群中的各个节点能够相互识别和通信。通常情况下server-id参数会被设置为一个唯一的数字或字符串比如可以设置为当前服务器的 IP 地址或主机名。如果在一个 MySQL 集群中配置不正确可能会导致数据同步出现问题因此需要谨慎配置。 开启BigLog用于备份和恢复数据库以及进行数据复制等操作。 log-binmysql-bin 实例都必须有一个唯一的 server-id 如:server-id1 以便 MySQL 集群中的各个节点能够相互识别和通信。 server-id1
ON 是开启状态如果是开启状态那就可以做数据恢复了。 2.3、查看biglog日志文件
show binary logs;2.3.1、查看master状态
show master status;2.3.2、查看第一个binlog文件内容
show binlog events;2.3.3、查看指定binlog文件的内容
show binlog events in mysql-bin.000002;**注意:**上一个事件的结束位置就是下一个事件的开始位置。如下↓↓↓ 2.3.4、刷新log日志
flush logs;2.3.5、删除日志文件
MySQL删除日志的方式有以下几种
通过Reset Master指令删除全部binlog日志删除之后日志编号将从xxxx.00001重新开始。执行指令purge master logs to ‘mysqlbin.******’该命令将删除指定编号之前的所有日志。执行指令purge master logs before ‘yyyy-mm-dd hh24:mi:ss’该命令将删除指定日期之前的所有日志。 列出所有日志 show binary logs; 指定删除 purge master logs to ‘mysql-bin.000001’; 指定日期删除(该命令将删除指定日期之前的所有日志) purge binary logs before ‘2023-5-29 23:59:59’; 删除全部binlog日志 reset master; 2.3.6、查看和修改日志文件有效期
说明:
查看日志文件的有效期 **show variables like ‘%expire_logs_days%’;**默认有效期为 0表示 Binlog 日志的自动清理功能是没有启用的设置日志文件有效期 参数set global expire_logs_days7; 此参数的含义是设置日志的过期天数为7天过了指定的天数后日志将会被自动删除这样将有利于减少DBA管理日志的工作量。 查看日志文件的有效期 show variables like ‘%expire_logs_days%’; 设置日志文件有效期 set global expire_logs_days7; 3、误删恢复
3.1、查看数据库
show databases;3.2、查看表中的数据 --切换到指定数据库。
use text;
--显示当前数据库中的所有表名。
show tables;
--查询表数据
select * from user_misjudge;3.3、查看用户表相关操作日志
说明:show binary logs; 和show master logs; 都是显示所有可用的binlog日志文件列表。
show master logs;注意: 可以看到我之前删除的表数据已经被记录了 由于之前演示删除日志我的日志是不完整的不完整的日志是不能恢复的 。(开启日志后 重新创一个库 详情查看:3.4重新创建库**) ↓↓↓**
3.4、重新创建库 删除库 drop database text 清空全部日志 reset master; 创建库 CREATE DATABASE text CHARACTER SET ‘utf8’ COLLATE ‘utf8_general_ci’ 查看日志信息 show binlog events in ‘mysql-bin.000001’; 3.4、删除数据库text drop database text;可以看到列表text库已经被删除
3.5、恢复数据库
3.5.1、查看日志文件中的信息
show binlog events in mysql-bin.000001;3.5.2、利用事件开始结束位置进行恢复
mysqlbinlog --start-position154 --stop-position427 mysql-bin.000001 | mysql -uroot -p以上该命令是一个从MySQL二进制日志文件中提取数据并导入到MySQL数据库的命令。具体解释如下
mysqlbinlogMySQL二进制日志文件命令用于读取、处理和输出MySQL二进制日志文件中的内容。–start-position154指定从二进制日志文件的154个字节开始读取默认情况下mysqlbinlog从文件的开头开始读取。–stop-position427指定从二进制日志文件的427个字节结束读取默认情况下mysqlbinlog读取到文件的末尾。mysql-bin.000001二进制日志文件名表示要读取的二进制日志文件。|管道符将前面的命令的输出作为后面命令的输入。mysqlMySQL客户端命令用于连接和操作MySQL数据库。-uroot指定以root用户身份连接MySQL数据库。-p表示连接MySQL数据库时需要输入密码。
注意: 此命令是使用终端进入MySQL时的路径下的data目录下执行。 查看是否恢复删除的库text 3.5.3、查看mysql-bin.000001文件日志细节
说明
由于binlog是二进制的文件使用mysqlbinlog命令进行转换。mysqlbinlogMySQL二进制日志文件命令用于读取、处理和输出MySQL二进制日志文件中的内容。找到安装MySQL时的路径下的data目录不管你是Linux 或windows我目前是windows 我就在data目录下使用cmd (如果是linux查详细的日志信息内容同理进入MySQL时的路径下的data目录这个时候需要用 ls -la 来查看细节执行命令:mysqlbinlog ‘mysql-bin.000001’ )配置MySQL环境变量不配置执行命令会失败右击我的电脑–高级系统设置–环境变量–系统变量–Path(点击添加MySQL的bin目录) 生成mysql-bin.000001文件日志细节名称是xj.sql mysqlbinlog “mysql-bin.000001”“xj.sql” 生成后的mysql-bin.000001文件日志位置 解析后的mysql-bin.000001文件日志细节 3.5.4、利用事件时间节点进行恢复
mysqlbinlog --start-datetime2023-06-01 11:32:34 --stop-datetime2023-06-01 11:47:46 mysql-bin.000001 | mysql -uroot -p查看恢复的text库 3.6、恢复数据库表
3.6.1、进入库
可以看到text库下没有表 3.6.2、库下创建表
建表语句文章开头已经给大家准备直接拿过来执行。 表已经创建成功 3.6.3、库下的表中添加数据
insert user_misjudge(attr1) values(CSDN臭弟弟);
insert user_misjudge(attr1) values(这是一条数据);3.6.4、删表之间查看日志信息 3.6.4、删除表
drop tables user_misjudge;查询user_misjudge已经不存在了 3.6.5、恢复表
mysqlbinlog --start-position720 --stop-position1579 mysql-bin.000001 | mysql -uroot -p不用再说了吧一定要终端执行以上命令离开mysql命令行进入mysql路径下的data目录使用终端执行。 3.6.7、查看恢复的表 查看日志 show binlog events in ‘mysql-bin.000001’; 可以看到 我们只恢复了表 并没有恢复数据 。为什么 往下继续↓↓
3.6.8、分析日志
原因:
在导航{3.6.5、恢复表} 我们执行的语句mysqlbinlog --start-position720 --stop-position1579 mysql-bin.000001 | mysql -uroot -p 事件开始位置720 事件结束位置1579说明我们位置不对呗这个位置只能恢复表不能恢复数据。(想要恢复数据应该在 事件的结束位置应该在 删除表之前的最后连接的位置才对) 完整日志如下: mysql show binlog events in ‘mysql-bin.000001’; ±-----------------±-----±---------------±----------±------------±-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | Log_name | Pos | Event_type | Server_id | End_log_pos | Info |