MySQL復制+快照恢復誤刪除操作實驗測試
下面假定2個場景:
場景1:主從架構,沒有延遲,某DBA誤操作:drop database 【復制+快照:在線備份】
場景2:存在不確定性或者風險性較大的操作,如升級測試,大表變更【啥事都在快照上折騰,不行大不了就將之刪除】
場景2比較簡單,隨便在新建的一個快照上折騰,搞砸就把快照刪除,再新建一個,2個字:隨便玩
下面我們對場景1進行模擬
恢復方法:
① 恢復備庫上的快照
② 根據binlog執行point-in-time恢復
先為備庫創建快照
[root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree vg 4 1 0 wz--n- 3.81G 1.81G[root@localhost ~]# lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert mysql vg -wi-ao 2.00G [root@localhost ~]# lvcreate --size 1G --snapshot --name backup_mysql /dev/vg/mysql Logical volume "backup_mysql" created[root@localhost ~]# lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert backup_mysql vg swi-a- 1.00G mysql 0.00 mysql vg owi-ao 2.00G [root@localhost ~]# mount /dev/vg/backup_mysql /mnt/backup[root@localhost ~]# cd /mnt/backup/[root@localhost backup]# lslost+found mysql[root@localhost backup]# tar -jcv -f /mnt/snapshot/mysql.tar.bz2 *[root@localhost ~]# lvremove --force /dev/vg/backup_mysql Logical volume "backup_mysql" successfully removed
這里為什么要先備份快照再還原呢?
其一,昂貴的IO,因為磁頭要在快照區和系統區來回跑
其二,快照區空間不足,因為是COW原理
在 2013-10-12 9:57 某位無經驗DBA錯誤地執行了drop database snapshots:
在備庫上確認查看:
mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || test |+--------------------+
可見庫已經被刪除了
同時在主庫或者備庫查看當前的二進制日志坐標并記錄下來
[mysql@localhost mysql]$ mysqladmin -uroot -poracle shutdown131012 09:59:36 mysqld_safe mysqld from pid file /mnt/lvm/mysql/data/localhost.localdomain.pid ended[1]+ Done mysqld_safe[root@localhost ~]# umount /mnt/backup[root@localhost ~]# lvremove --force /dev/vg/backup_mysql Logical volume "backup_mysql" successfully removed[root@localhost ~]# umount /mnt/lvm [root@localhost ~]# mkfs -t ext3 /dev/vg/mysql[root@localhost ~]# mount /dev/vg/mysql /mnt/lvm[root@localhost ~]# tar -jxv -f /mnt/snapshot/mysql.tar.bz2 -C /mnt/lvm[mysql@localhost ~]$ mysqld_safe &
通過binlog執行point-in-time恢復
[mysql@localhost ~]$ mysqlbinlog --stop-datetime="2013-10-12 10:9:56" /mnt/lvm/mysql/data/mysql-bin.000008 | mysql -uroot -poracle
確認數據是否恢復:
mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || snapshots || test |+--------------------+4 rows in set (0.00 sec)mysql> use snapshots;Database changedmysql> show tables;+---------------------+| Tables_in_snapshots |+---------------------+| t |+---------------------+1 row in set (0.00 sec)mysql> select * from t;+----+| id |+----+| 1 |+----+1 row in set (0.00 sec)
到此,整個簡單的測試就算完成了
這種復制+快照的備份架構可以實現在線實時的備份,個人感覺是個不錯的備份解決方案
bitsCN.com聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com