mysqlbinlog恢复表数据

        2021新年的第一天第一篇文章,2020年最后一天是不安宁的一天,生产数据误删除,在项目经理的夺命call中恢复数据,现在回想真是惊心动魄,此时就做下数据库数据恢复的过程。

1、查看binlog日志是否开启

         如果没开启那就尴尬了,下面的就不用进行了

    show variables like 'log_%';

            如果没有设置,下次记得在/etc/my.cnf中配置 

     show master logs;

2、查看所有二进制日志

     show master logs;

          每次重启,都会接着上次生成新的mysql-bin.xxxx文件

             清空重置命令: reset master;

3、查看需要恢复时间段二进制日志

             方法一、 进入mysql数据存放目录(查看my.cnf中的配置)

     mysqlbinlog --no-defaults mysql-bin.000005

          方法二、 mysql的客户端连接msyql服务

     show binlog events in 'mysql-bin.000005';

             二进制文件是查到了,那怎么恢复数据呢,请接下来看

4、用mysql的二进制文件恢复数据

            将二进制文件重定向到指定的位置

            mysqlbinlog --no-defaults mysql-bin.000005 > /home/xxx.sql

      mysqlbinlog --no-defaults --base64-output=decode-rows  -v mysql-bin.000005 > /home/app_db.sql

             恢复指定时间的数据

      mysqlbinlog  --start-datetime='2020-12-29 00:00:00' --stop-datetime='2020-12-31 23:59:59' --no-defaults --base64-output=decode-rows  -v mysql-bin.000005 > /home/app_db.sql

5、关于mysql 常用的日志 

   binlog                   二进制日志(日志格式: mysql-bin.xxx)

   general_log_file          查询日志(使用general_log开启)

   redolog                   持久化日志(在my.cnf中设置innodb_log_group_home_dir,日志格式: ib_logfile)
 
   undolog                   回滚日志

   relaylog                 中继日志

   slowlog                   慢查询日志

       使用pt-innodb-redo-parse工具可以解析 redolog 的ib_logfile文件

 6、 关于mysql调优的参数

innodb_buffer_pool_size                             缓冲池(以kb为单位)

innodb_log_buffer_size                              日志缓存

max_connections                                     最大连接数

back_log                                            tcp积压请求栈大小

table_open_cache                                    执行线程可以打开表缓存

thread_cache_size                                   连接缓存数

innodb_lock_wait_time                               事务锁等待时间

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
对于使用mysqlbinlog恢复数据,您可以按照以下步骤进行操作: 1. 首先,您需要确保已经备份了要恢复MySQL二进制日志文件(通常以binlog开头)。如果没有备份,恢复数据将会变得困难,甚至不可能。 2. 定位最新的完整备份文件和二进制日志文件。如果您只有备份文件而没有二进制日志文件,您可以使用该备份文件还原数据库,并且会丢失备份后的更改。 3. 在MySQL服务器上停止所有相关的服务,以确保数据一致性。可以使用以下命令: ``` sudo service mysql stop ``` 4. 使用mysqlbinlog命令来解析和恢复二进制日志文件。例如,使用以下命令从二进制日志文件中创建SQL语句文件: ``` mysqlbinlog <binlog文件名> > restore.sql ``` 5. 打开恢复.sql文件,并检查其中的SQL语句,确保其包含正确的恢复操作。可以使用文本编辑器进行编辑。 6. 重新启动MySQL服务并登录到MySQL服务器: ``` sudo service mysql start mysql -u <用户名> -p ``` 7. 在MySQL命令行中执行恢复.sql文件中的SQL语句: ``` source /path/to/restore.sql; ``` 8. 等待恢复操作完成。这可能需要一些时间,具体取决于二进制日志文件的大小和恢复操作的复杂性。 请注意,使用mysqlbinlog恢复数据可能会有一定的风险,因此在执行之前务必进行备份,并在恢复之前仔细检查和验证恢复的SQL语句。此外,根据具体情况可能需要额外的步骤和配置,请参考MySQL官方文档或专业人士的建议。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值