福哥答案2020-08-01: 恢复到任意时间点以定时的做全量备份,以及备份增量的 binlog 日志为前提.恢复到任意时间点首先将全量备份恢复之后,再此基础上回放增加的 binlog 直至指定的时间点.…
MySQL load数据的时候自动更新时间 前提 CREATE TABLE table_name ( dt varchar(255) NULL , ctime timestamp NULL ON UPDATE CURRENT_TIMESTAMP , PRIMARY KEY (dt) ); 建表语句如上,需求如题,即在load数据的时候更新ctime 解决办法 在知乎上看到了这个答案,说了原因是load的时候关注的是速度(load比insert快将近10倍),所以不会启动自动计算规则,建议导入后u…
背景: 最近后端基于mongo的项目越来越多,MySQL基于冷备份+binlog可以恢复至任意时间点,那么mongo是否有同样的功能呢?经过调研发现可以通过dump+oplog可以实现粒度更细致的恢复. 官方文档关于oplog的说明 : <a class="mongo-link" href="https://docs.mongodb.com/manual/core/replica-set-oplog/"></a> 以下是实验步骤,附脚本内容.…
情况描述:服务器硬盘损坏,服务器换了个新硬盘 ,然后老硬盘插在上面.挂载在这台机器.可以从老硬盘里面拿到数据.只拿到了里面的mysql数据文件夹,把数据文件夹覆盖新的服务器mysql数据文件夹 启动报错!!!报错!!!错!!!. 数据文件如下: 于是觉得不能使用覆盖文件的方式还原数据,得使用科学方法恢复.google之…… 找到解决办法如下: 可以发现数据目录下有对应数据库名称的文件夹,文件夹下有很多 表名.ibd 文件,这些文件其实就是数据,我们要利用它们来恢复 恢复步骤: 1.在新库里面创建…
总结: `uptime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 原文 应用场景: 1.在数据表中,要记录每条数据是什么时候创建的,不需要应用程序去特意记录,而由数据数据库获取当前时间自动记录创建时间: 2.在数据库中,要记录每条数据是什么时候修改的,不需要应用程序去特意记录,而由数据数据库获取当前时间自动记录修改时间: 实现方式: 1.将字段类型设为  TIMESTAMP  2.将默认值设…
查看指定的二进制日志中的事件(MYSQL命令行) mysql> show binlog events in 'binlogfullpath'; 查看二进制日志中的事件(MYSQL命令行) mysql> show binlog events; 查看服务器上的二进制日志(MYSQL命令行) mysql> show binary logs; 重新开始一个新的日志文件 mysql> flush logs; ==========================================…
用下面方法解决(管理mysql用的是navicat).,设置以下几个参数的值后就正常了,以下语句也可以在mysql的控制台上执行 . show variables like '%timeout%'; show variables like '%packet%'; set global max_allowed_packet=99328000; set global wait_timeout=2880000; set global interactive_timeout=2880000; -- wa…
error log: Database page corruption on disk or a failed 处理: /etc/my.cnf 设置 innodb_force_recovery = 6 再次启动即可. 后续需要处理: checktable,处理有问题的表.…
原文链接:MySQL是如何做到可以恢复到任意一秒状态的? 看到这个题目是不是觉得数据库再也不用担心服务器 crash 了? 那我们需要学习为什么可以这么做?以及如何做? 即为什么可以恢复到任意时间点?如何恢复到任意时间点? 为什么有了 binlog 还需要 redo log? 事务是如何提交的?事务提交先写 binlog 还是 redo log?如何保证这两部分的日志做到顺序一致性? 为了保障主从复制安全,故障恢复是如何做的? 上一次课我们学习了一条 select 语句的全部执行过程,那么今天我…
根据二进制日志恢复 目的:恢复数据,根据二进制日志将数据恢复到今天任意时刻 增量恢复,回滚恢复 如果有备份好的数据,将备份好的数据导入新数据库时,会随着产生二进制日志 先准备一台初始化的数据库 mysqld --initialize --user =mysql --basedir=/usr/local/mysql --datadir=/data/mysql/ 启动数据库 service mysqld start 因为数据库版本为5.7,初始化启动后新密码会在mysql-error.log文件中…