包头市住房和城乡建设局网站,定制模板,cnzz统计,广告招牌制作设计软件简介 本文介绍了使用mysqlbinlog导出数据#xff0c;根据binlog恢复数据#xff0c;和导出数据时报需要super权限的解决方法。 环境 MySQL: 5.7.40 说明 MySQL的binlog是数据库服务器在运行过程中产生的日志文件#xff0c;记录了数据库增删改的操作#xff0c;可用于恢复和…简介 本文介绍了使用mysqlbinlog导出数据根据binlog恢复数据和导出数据时报需要super权限的解决方法。 环境 MySQL: 5.7.40 说明 MySQL的binlog是数据库服务器在运行过程中产生的日志文件记录了数据库增删改的操作可用于恢复和故障排错在使用binlog前请确保mysql启用了binlog 正文
一、排查并查找binlog的日志的存储位置
在mysql中执行以下命令检查mysql是否启用binlog若为 “ ON ” 则为开启“ OFF ” 为未开启
show variables like log_bin
开启binlog日志Linux中找my.cnf文件默认在 “ /etc/my.cnf ” 路径下Windows找my.ini文件默认在安装目录下我们是linux中如下图 “ log-bin ” 配置了路径就代表开启了binlog日志mysql-bin的默认路径为/var/lib/mysql/目录下 “ innodb_data_home_dir /www/server/data ”这个是和innodb相关的数据的存储路径也是mysql的数据主目录我们的binlog日志文件就在这个下面 二、查找mysqlbinlog命令存储位置 “ mysqlbinlog ” 命令的位置在安装目录的bin文件夹下我们需要用此命令才能打开binlog 使用以下命令查看mysql安装位置
which mysql 切换到/usr/bin/文件夹下使用“ ll ”查看mysql指向的文件夹如下图 “ mysqlbinlog ”命令存储位置 /www/server/mysql/bin/ 下面进入主题
一、为方便排查我们导出文件sql文件
/www/server/mysql/bin/mysqlbinlog
--databasexx --start-datetime2023-11-23 19:00
--stop-datetime2023-11-24 14:12
www/serser/data/mysql-bin.000022 /root/000022.sql
说明导出xx数据库时间起点2023-11-23 19:00时间结束点2023-11-24 14:12 的mysql-bin.000022的binlog日志转成000022.sql文件并存储到root目录下
还可以根据位置点的方式来导出这种导出最精确
/www/server/mysql/bin/mysqlbinlog
--databasexx --start-position55079756
--stop-position55081588
www/serser/data/mysql-bin.000022 /root/000022.sql 注意如果执行导出时发现报错需要super权限
you need (at least one of) the SUPER privilege(s) for this operation
解决办法先查看登录数据库的账户权限
select user,Super_priv from mysql.user;
赋予super权限
update mysql.user set Super_privY where usertest_db_user;
刷新权限
flush privileges;
然后即可执行导出命令
打开下载到window后的000022.sql文件 我们恢复的方式就是找到错误操作的数据然后执行对应的sql进行还原也可以根据位置点或时间区间还原但一定要确保还原后的数据是正确的特别要小心仔细别写错了
举个例子
一、根据位置区间或时间区间批量恢复以下恢复以位置区间为例
/www/server/mysql/bin/mysqlbinlog --start-position55079756 --stop-position55081557 --databasexx /www/server/data/mysql-bin.000022|mysql -u用户名 -p密码 -v 数据库名
解释恢复数据库xx位置起始点55079756结束点55079757 区间内的数据-v 表示执行此命令执行后的截图我就不发了就是一条sql下面一条set
二、手动恢复 通过上图我们发现在23-11-24 14:34:26秒删除了ID为184的acc_business_bills数据那我们就需要找到并执行acc_business_bills表的ID184的这条数据的新增sql进行还原通过 我们发现这条数据是在 23-11-24 12:19:56秒创建的因此复制下来执行就还原了
注意一定要确保这条sql在删除前是没有进行更新的继续排查binlog排查时间段就是 “ 23-11-24 12:19:56 至 23-11-24 14:34:26 ” 这个时间区间否则新增后的数据也是不正确的 完成