准备环境:

两台主机:
A: 192.168.1.6   数据损坏
B: 192.168.1.7   数据恢复

搭建步骤:

主机A(192.168.1.6):

  • 完全备份数据库

mysqldump -A -F --single-transaction --master-data=1 > /backup/fullbak`date +%F`.sql

标红的位置是完全备份后最新生成的新的二进制文件及位置(之前全部备份),用于二进制日志恢复

  • 修改数据库

mysql> create database db1;
mysql> create database db2;
  • 模拟数据文件损坏

# rm -rf /var/lib/mysql/*
  • 关闭数据库

systemctl stop mariadb
  • 备份二进制日志

mysqlbinlog --start-position=245 mariadb-bin.000002 > /backup/bin.sql
  • 复制备份日志至主机B

scp /backup/fullbak2018-06-16.sql /backup/bin.sql  192.168.1.7:/root/


主机B(192.168.1.7):

  • 关闭网络监听

vim /etc/my.cnf
[mysqld]
skip_networking
  • 开启数据库

systemctl start mariadb
  • 恢复数据

mysql < /root/fullbak2018-06-16.sql    完全备份恢复
mysql < /root/bin.sql                  二进制日志恢复