使用mysqldump进行MariaDB 的备份(3)

由于备份的时候滚动了二进制日志,所以备份之后所有对数据库产生更改的操作都会记录到mysql-bin.000004中。
MariaDB [hellodb]> show master logs;
+------------------+-----------+
| Log_name        | File_size |
+------------------+-----------+
| mysql-bin.000001 |      288 |
| mysql-bin.000002 |      577 |
| mysql-bin.000003 |      8833 |
| mysql-bin.000004 |      245 |
+------------------+-----------+
4 rows in set (0.00 sec)

备份完成的当天做了一些操作。
MariaDB[hellodb]> delete from tb1 where id=21;
MariaDB[hellodb]> delete from tb1 where id=22;
MariaDB[hellodb]> select * from tb1;
+------+
|id  |
+------+
|    1 |
|    2 |
|    3 |
|  23 |
+------+

第一天增量备份
当天的所有对数据库进行更改的语句都会记录到二进制日志文件中��只需要滚动二进制日志,把二进制日志进行备份即可,二进制滚动之后,第二天的所有对数据库进行更改的语句,都会记录到新的二进制日志文件中。
MariaDB [hellodb]> flush logs;
MariaDB [hellodb]> show master logs;
+------------------+-----------+
| Log_name        | File_size |
+------------------+-----------+
| mysql-bin.000001 |      288 |
| mysql-bin.000002 |      577 |
| mysql-bin.000003 |      8833 |
| mysql-bin.000004 |      670 |
| mysql-bin.000005 |      245 |
+------------------+-----------+
5 rows in set (0.00 sec)

将第一天的二进制日志文件转换为sql文件
[root@MariaDB ~]# mysqlbinlog /backup/bin-log/mysql-bin.000004> /backup/all.1.sql

第二天对数据进行了一些操作
MariaDB[hellodb]> insert into tb1 values (1000),(9000);
MariaDB[hellodb]> select * from tb1;
+------+
|id  |
+------+
|    1 |
|    2 |
|    3 |
|  23 |
|1000 |
|9000 |
+------+

模拟故障
删除数据目录下的所有文件,模拟数据库故障:
[root@MariaDB ~]# rm -rf /mydata/data/*

数据库这个时候还可以登录,但是数据库都不再了
MariaDB [hellodb]> show databases;
+--------------------+
| Database          |
+--------------------+
| information_schema |
+--------------------+

恢复前的准备
发现数据库故障先关闭数据库,但是数据库无法正常关闭,只能关闭进程
[root@MariaDB ~]# service mysqld stop
MySQL server PID file could not be found!                  [FAILED]
[root@MariaDB ~]# killall mysqld


由于数据库数据目录的所有内容被删除,就算是导入了完全备份文件也是缺少一些文件,解决方法就是重新初始化一下数据库。
[root@MariaDB ~]# cd /usr/local/mysql/
[root@MariaDB mysql]# scripts/mysql_install_db--user=mysql --datadir=/mydata/data/

初始化完成之后,一些基本的文件都存在了
[root@MariaDB mysql]# ll /mydata/data/
total 36
-rw-rw---- 1 mysql mysql 16384 Jun 16 01:22aria_log.00000001
-rw-rw---- 1 mysql mysql    52 Jun 16 01:22 aria_log_control
-rw-r----- 1 mysql root    80 Jun 16 01:18 MariaDB.err
drwx------ 2 mysql root  4096 Jun 16 01:22 mysql
drwx------ 2 mysql mysql  4096 Jun 16 01:22 performance_schema
drwx------ 2 mysql root  4096 Jun 16 01:22 test


将第二天的二进制日志文件转换为sql文件
[root@MariaDB ~]# mysqlbinlog/backup/bin-log/mysql-bin.000005 > /backup/all.2.sql

恢复过程
恢复之前启动Mysql服务,否则无法导入备份文件
[root@MariaDB ~]# service mysqld start

导入第一天的完全备份文件,由于刚刚初始化完成数据,这个时候的数据库还没有密码
[root@MariaDB ~]# mysql </backup/ALL-2015-06-16.sql

登录数据库查看,所有的数据库都已经恢复,但是第一天对数据库更改的内容还是没有恢复
MariaDB [(none)]> show databases;
+--------------------+
| Database          |
+--------------------+
| information_schema |
| hellodb          |
| mysql            |
| performance_schema |
| test              |
+--------------------+
5 rows in set (0.00 sec)
MariaDB [hellodb]> select * from tb1;
+------+
| id  |
+------+
|    1 |
|    2 |
|    3 |
|  21 |
|  22 |
|  23 |
+------+
6 rows in set (0.00 sec)

导入第一天的增量备份文件
[root@MariaDB ~]# mysql -u root -p < /backup/all.1.sql

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6e790d0686950a358eb46b42e8a0f7d1.html