转换binlog二进制文件:
mysqlbinlog --no-defaults --database=zjtestdb --base64-output=decode-rows -v --start-datetime="2021-03-04 16:00:00" --stop-datetime="2021-03-04 16:20:00" /home/software/mysql-8.0.23/data/binlog.000011 > /home/software/mysql-8.0.23/data/aa.txt
命令解释:
将binlog.000011文件中日期为2021-03-04 16:00:00到2021-03-04 16:20:00的内容转换为aa.txt文本文件。主要用于确定数据的恢复区间。
--database:指定数据库。
--base64-output:将文件进行base64解码,得到的文件可以看到sql语句。
--start-datetime:开始时间。
--stop-datetime:结束时间。
--start-position:开始节点。
--stop-position:结束节点。
mysqlbinlog恢复数据:
mysqlbinlog --start-position=3540 --stop-position=4037 /home/software/mysql-8.0.23/data/binlog.000011 | mysql -uroot -p;
命令解释:
将binlog.000011中编号为3540~4037的内容执行一遍。如果删除了表中的一条记录,可以找到它插入时的binlog日志将记录恢复。
binlog.000011文件内容:
mysql日志文件:
1.binlog日志
二进制日志,记录用户的数据变更操作。日志里记录了操作的sql语句。能够用来恢复数据,完成数据库的主从复制。
2.redo日志
重做日志,记录了事务提交后的数据。当事务提交后,变更的数据从内存持久化到磁盘时发生异常(数据库宕机等),可以使用重做日志将变更后的数据持久化。
3.undo日志
回滚日志,记录了事务提交前的数据。当事务发生回滚时,使用undo日志将数据恢复到变更前。
4.error日志
记录数据库服务执行过程中的error,warn等信息。
数据备份:
对指定的表备份:mysqldump -u root -p 数据库名 表名 > mytb.sql
mytb.sql将包含建表语句和插入语句。
mysql基本命令:
mysql的默认用户是root,首次登录无需密码,直接输入mysql可以进入。登入后需改root密码,使用mysql -u root -p登录。
(oracle默认用户是oracle,使用sqlplus / as sysdba可登录)
进入mysql: mysql -u root -p
启动mysql::service mysql start
关闭mysql:service mysql stop
mysql的架构体系:
mysql主从复制:
mysql的索引原理: