[root@node1 ~]# mysql -e 'SHOW MASTER STATUS' #查看當前二進制文件的狀態, 並記錄下position的數字
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 106 | | |
+------------------+----------+--------------+------------------+
[root@node1 ~]# mysqldump --all-databases --lock-all-tables > backup.sql #備份數據庫到backup.sql文件中
mysql> CREATE DATABASE TEST1; #創建一個數據庫
Query OK, 1 row affected (0.00 sec)
mysql> SHOW MASTER STATUS; #記下現在的position
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 191 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
[root@node1 ~]# cp /var/lib/mysql/mysql-bin.000003 /root #備份二進制文件
[root@node1 ~]# service mysqld stop #停止MySQL
[root@node1 ~]# rm -rf /var/lib/mysql/* #刪除所有的數據文件
[root@node1 ~]# service mysqld start #啓動MySQL, 如果是編譯安裝的應該不能啓動(需重新初始化), 如果rpm安裝則會重新初始化數據庫
mysql> SHOW DATABASES; #查看數據庫, 數據丟失!
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.00 sec)
mysql> SET sql_log_bin=OFF; #暫時先將二進制日誌關閉
Query OK, 0 rows affected (0.00 sec)
mysql> source backup.sql #恢復數據,所需時間根據數據庫時間大小而定
mysql> SET sql_log_bin=ON; 開啓二進制日誌
mysql> SHOW DATABASES; #數據庫恢復, 但是缺少TEST1
+--------------------+
| Database |
+--------------------+
| information_schema |
| employees |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
[root@node1 ~]# mysqlbinlog --start-position=106 --stop-position=191 mysql-bin.000003 | mysql employees #通過二進制日誌增量恢復數據
mysql> SHOW DATABASES; #現在TEST1出現了!
+--------------------+
| Database |
+--------------------+
| information_schema |
| TEST1 |
| employees |
| mysql |
| test |
+--------------------+
5 rows in set (0.00 sec)
#完成