windows上安装mysql8以及开启binlog相关日志和回滚

这里只是记录下,防止自己遗忘了其中步骤:

一:关于mysql8的安装

1.官网下载mysql  https://www.mysql.com/downloads/

2.解压文件,并添加my.ini放在当前目录下

windows上安装mysql8以及开启binlog相关日志和回滚_第1张图片

文件内容如下:

[mysqld]

#绑定IPv4,如果是0.0.0.0则表示任意IP都可以访问,也可以指定可以访问的IP

bind-address = 0.0.0.0

# 设置mysql的安装目录,即你解压缩安装包的位置

basedir =D:\zhouxl\mysql-8.0.26-winx64

# 设置mysql数据库的数据的存放目录

datadir =D:\zhouxl\mysql-8.0.26-winx64\data

# 设置端口号

port = 3306

# 回收空闲连接的时间

wait_timeout = 86400

# 允许最大连接数

max_connections = 200

# 数据库 写入的 数据包 最大值

max_allowed_packet = 512M

# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统

max_connect_errors=10

# 设置字符集为utf8

loose-default-character-set = utf8

# 服务端使用的字符集默认为UTF8

character-set-server=utf8

#开启查询缓存

explicit_defaults_for_timestamp = true

# 创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

# mysql 8.0 以上默认的密码加密方式

default_authentication_plugin = mysql_native_password

#关闭binlog
#skip-log-bin

#开启binlog日志
log-bin=mysql-bin
binlog-format=Row
expire_logs_days=7

[mysql]

# 设置mysql客户端默认字符集

default-character-set=utf8

[client]

# 设置mysql客户端连接服务端时默认使用的端口

port=3306

default-character-set=utf8

3.在bin目录下执行  mysqld --initialize --console   初始化

可能出现问题:1.权限不足(请以管理员运行cmd) 

4.3步骤里因为配置文件里的密码模式会生成初始密码在打印的日志中,我这里是epkg8A)3?usr,注意记录下来,后面登录用到

5.mysqld install部署  后net start mysql ,如果都提示启动成功,才表示成功,配置错误或者其他错误都可能显示由部分不成功

可能原因:1.配置不正确    2.修改配置后没有重启(在管理里看服务类右键重启)

windows上安装mysql8以及开启binlog相关日志和回滚_第2张图片

6.bin目录下执行mysql -u root -p  密码是第4步记录的密码,注意这里会有提示需要修改初始密码,否则无法进行后续操作。这里面可以2种方式,一种的添加--skip-grant-tables(这里不用初始密码也可以进入),2种是执行sql修改(我使用的是这个)

6.开启bin-log

 默认是不开启的,不过我们配置文件已经由相关配置

查看是否 开启  show variables like '%log_bin%'   on为开启 off关闭,这里ini文件配置好了

windows上安装mysql8以及开启binlog相关日志和回滚_第3张图片

二: bin-log使用

根据上面配置binlog会生成下面的bin-log.00001这种二进制文件,我们需要准备一个不断插入数据的test或者sql。

1.查看当前状态 show master status 

windows上安装mysql8以及开启binlog相关日志和回滚_第4张图片

目前是00003这个log正生成log

2.flush logs 重新生成,会记录到最新的日志状态

windows上安装mysql8以及开启binlog相关日志和回滚_第5张图片

3.初略的看一眼这个日志  show binlog events in "mysql-bin.000004"

 windows上安装mysql8以及开启binlog相关日志和回滚_第6张图片

4.找到其中需要恢复点,这里我设置为开头点为125,结束点为14363,将此部分bin-log转成test.sql,指令为: mysqlbinlog --no-defaults  --start-position=125 --stop-position=14363 D:\zhouxl\mysql-8.0.26-winx64\data\mysql-bin.000004 > test.sql

 --no-defaults是因为我设置的文件编码是utf-8,可能在windows上提示编码错误

这里也可以根据时间来恢复 --start--datetime="2021-08-20 13:33:00" --stop-datetime="2021-08-20 13:35:00"

5.生成的文件先看下是否正确,然后做导入处理

文件开始

windows上安装mysql8以及开启binlog相关日志和回滚_第7张图片

 文件结束windows上安装mysql8以及开启binlog相关日志和回滚_第8张图片

 其实这里面的BINLOG由于编码格式的问题还是乱码,这里可以指定解码来查看(-d 代表我看到的table)

mysqlbinlog --no-defaults  --base64-output=decode-rows -vvvvvv D:\zhouxl\mysql-8.0.26-winx64\data\mysql-bin.000004  -d  bin_log_test

这里并有显示的sql,比如这个query

windows上安装mysql8以及开启binlog相关日志和回滚_第9张图片

6测试

将表所有数据删除,执行source D:\zhouxl\mysql-8.0.26-winx64\bin\test.sql,可以看到Query OK提示

windows上安装mysql8以及开启binlog相关日志和回滚_第10张图片

 数据库这一部分数据也得到了恢复windows上安装mysql8以及开启binlog相关日志和回滚_第11张图片

 扩充:我们将刚00003的文件也做了下sql转换

 mysqlbinlog --no-defaults  D:\zhouxl\mysql-8.0.26-winx64\data\mysql-bin.000003 > test1.sql

导入mysql

windows上安装mysql8以及开启binlog相关日志和回滚_第12张图片

可以看到数据前面又恢复了部分

windows上安装mysql8以及开启binlog相关日志和回滚_第13张图片

在实际操作中,应该对比较重要的数据做下备份,这样恢复点比较好找,也不容易丢失,大批量迁移或者恢复还是得借助第三方工具

你可能感兴趣的:(mysql,dba)