使用mysqldump備份恢復

[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)

#完成

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章