备份数据库到最新位置


在这里插入图片描述

环境配置

yum install mariadb-server -y
vim /etc/my.cnf
log_bin=/data/logbin/mariadb-bin

mkdir /data/logbin
chown mysql.mysql /data/logbin
systemctl start mariadb
mysql
MariaDB [(none)]> source hellodb_innodb.sql
MariaDB [hellodb]> show tables;
+-------------------+
| Tables_in_hellodb |
+-------------------+
| classes           |
| coc               |
| courses           |
| scores            |
| students          |
| teachers          |
| toc               |
+-------------------+

mysqldump 进行完全备份

mysqldump -A --master-data=2 > /data/all.sql
grep -i 'mariadb-bin' /data/all.sql //找出备份时二进制的位置为 245
-- CHANGE MASTER TO MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=245;

修改数据,模拟数据库故障

MariaDB [hellodb]> insert into students(name,age,classid,teacherid)values('zhangsan',26,2,9);
rm -rf /var/lib/mysql/*

二进制日志备份

systemctl restart mariadb
MariaDB [(none)]> show binary logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |       529 |
| mariadb-bin.000002 |     30358 |
| mariadb-bin.000003 |   1038814 |
| mariadb-bin.000004 |       245 |
+--------------------+-----------+
MariaDB [(none)]> set sql_log_bin=0;
mysqlbinlog --start-position 245 /data/logbin/mariadb-bin.000001 > /data/inc.sql
mysqlbinlog  /data/logbin/mariadb-bin.000002 >> /data/inc.sql
mysqlbinlog  /data/logbin/mariadb-bin.000003 >> /data/inc.sql

恢复完全备份和二进制日志备份

MariaDB [(none)]> source /data/all.sql
MariaDB [test]> source /data/inc.sql
-- 数据已经恢复
MariaDB [hellodb]> select * from students where name='zhangsan';
+-------+----------+-----+--------+---------+-----------+
| StuID | Name     | Age | Gender | ClassID | TeacherID |
+-------+----------+-----+--------+---------+-----------+
|    26 | zhangsan |  26 | F      |       2 |         9 |
+-------+----------+-----+--------+---------+-----------+

-- 开启二进制日志
MariaDB [hellodb]> set sql_log_bin=1;

思考

  1. 在开启了二进制日志情况下,进行了完全备份,记录了当时备份时二进制日志的位置。
  2. 之后,在某个时间点删除了数据库中的某个表,之后又添加了数据
  3. 怎样将删除的表找回来并且添加的数据还存在?

解答

  1. 备份 从完全备份二进制日志的位置到这个点的二进制日志的位置,假设这个备份文件为 binlog.sql
  2. 删除 从 binlog.sql这个文件中删除 (删表的语句)
  3. 恢复 利用完全备份文件和 binlog.sql这个文件恢复数据
发布了21 篇原创文章 · 获赞 0 · 访问量 2601

猜你喜欢

转载自blog.csdn.net/studywinwin/article/details/104083623