修改配置文件

编辑 MySQL 的主配置文件

  1. vim /etc/my.cnf

在 【mysqld】标签下添加,如下内容,开启 binlog 日志

  1. server-id=1
  2. log-bin=mysql-bin

重启 mysql 服务

  1. systemctl restart mysqld

场景构造

本教程讲创建 ops 数据库,一张表 customers 表,往表里添加三条记录
然后 做一下备份,备份完成后再往 customers 表里添加 三条记录。
接着删除 opt 数据库。
最后使用 备份 + binlog 日志还原数据

创建数据库

  1. create database ops;
  2. use ops;

创建表、插入数据

  1. create table customers(
  2. id int not null auto_increment,
  3. name char(20) not null,
  4. age int not null,
  5. primary key(id)
  6. )engine=InnoDB;
  7. insert into customers values(1,"wangbo","24");
  8. insert into customers values(2,"guohui","22");
  9. insert into customers values(3,"zhangheng","27");

完整备份

创建 /opt/backup 文件夹,用于存放备份

  1. mkdir -p /opt/backup

执行完整备份

  1. mysqldump -uroot -pl@Qq_789 -B -F -R -x --master-data=2 ops|gzip >/opt/backup/ops_$(date +%F).sql.gz

image.png

插入数据

  1. insert into customers values(4,"liupeng","21");
  2. insert into customers values(5,"xiaoda","31");
  3. insert into customers values(6,"fuaiai","26");

人为制造误操作

删除 ops 库

  1. drop database ops;

完全备份+binlog日志恢复数据

停止 mysql 服务

  1. systemctl stop mysqld

解压完全备份

  1. cd /opt/backup/
  2. gzip -d ops_2021-05-07.sql.gz

确定全备时刻binlog的位置

  1. grep CHANGE ops_2021-05-07.sql

拷贝 binlog 日志

  1. cd /var/lib/mysql
  2. cp mysql-bin.000002 /opt/backup/

将binlog文件导出sql文件,并vim编辑它删除其中的drop语句

  1. cd /opt/backup/
  2. mysqlbinlog mysql-bin.000002 > 002bin.sql

删除 binlog 日志

  1. rm -rf /var/lib/mysql/mysql-bin.*

恢复全备数据

先启动 mysql 服务

  1. cd /opt/backup/
  2. mysql -uroot -pl@Qq_789 < ops_2021-05-07.sql

登录数据库 查看恢复情况:
image.png

恢复 binlog 中的数据

编辑 002bin.sql 文件,将误操作部分注释掉或删除

  1. cd /opt/backup/
  2. vim 002bin.sql

image.png

执行 binlog 日志

  1. mysql -uroot -pl@Qq_789 < 002bin.sql

image.png