MySQL備份和恢復(二)基于LVM實現幾乎熱備
來源:懂視網
責編:小采
時間:2020-11-09 12:25:19
MySQL備份和恢復(二)基于LVM實現幾乎熱備
MySQL備份和恢復(二)基于LVM實現幾乎熱備:LVM(LogicalVolumeManagement邏輯卷管理)實現幾乎熱備的原理:利用LVM的快照卷達到可以保存數據庫在某一時刻的瞬時狀態,只需把當時的快照備份出來即可。LVM的 LVM(Logical Volume Management邏輯卷管理)實現幾乎熱備的原理:利用LVM的快照卷達到可
導讀MySQL備份和恢復(二)基于LVM實現幾乎熱備:LVM(LogicalVolumeManagement邏輯卷管理)實現幾乎熱備的原理:利用LVM的快照卷達到可以保存數據庫在某一時刻的瞬時狀態,只需把當時的快照備份出來即可。LVM的 LVM(Logical Volume Management邏輯卷管理)實現幾乎熱備的原理:利用LVM的快照卷達到可

LVM(LogicalVolumeManagement邏輯卷管理)實現幾乎熱備的原理:利用LVM的快照卷達到可以保存數據庫在某一時刻的瞬時狀態,只需把當時的快照備份出來即可。LVM的
LVM(Logical Volume Management邏輯卷管理)實現幾乎熱備的原理:利用LVM的快照卷達到可以保存數據庫在某一時刻的瞬時狀態,只需把當時的快照備份出來即可。
LVM的快照原理:簡單的講就是lvm對某個卷創建快照卷后,快照卷則作為原卷的另一個訪問入口,當原卷的數據發生變化時,則先把原卷的內容先復制一份到快照卷,然后才會繼續對原卷數據的修改,這也就是之所以快照卷的容量大小應該大于整個備份過程中數據庫的變化量的原因。所以當備份完成以后,快照卷也就可以拆除了,它的作用就是在備份過程中把發生變化的數據的快照時狀態先拷貝過來一個副本。
用lvm對mysql備份的前提:數據文件和事務日志文件應該在同一個卷上,否則快照卷數據和事務日志時間點不一致,恢復后會引起數據庫錯亂。
原理明白了,操作起來就比較簡單了:
當然要首先準備好lvm卷且保證mysql的datadir和innodb_log_group_home_dir在這個卷上
/* 創建一張新表tb1,并插入一些數據以做測試 */
MariaDB [hellodb]> CREATE TABLE tb1(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,Name VARCHAR(30) NOT NULL,Gender ENUM('F','M','O') NOT NULL);
Query OK, 0 rows affected (0.11 sec)
MariaDB [hellodb]> DESC tb1;
+--------+-------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| Name | varchar(30) | NO | | NULL | |
| Gender | enum('F','M','O') | NO | | NULL | |
+--------+-------------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
MariaDB [hellodb]> INSERT INTO tb1 (Name,Gender) VALUES ('Bob','M'),('Tina','F'),('Axx','O');
Query OK, 3 rows affected (0.03 sec)
Records: 3 Duplicates: 0 Warnings: 0
/* 備份前為所有表加讀鎖,查看一下當前二進制日志位置 */
MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000007 | 245 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.01 sec)/* 再開一個終端,前面mysql會話不要退出 */
[root@node1 ~]# mkdir /backup/mydata-`date +%F`
/* 也可以將當前二進制位置保存到文件,以備恢復時查看 */
[root@node1 ~]# mysql -e 'SHOW MASTER STATUS;' > /backup/mydata-2014-07-29/bin-pos-`date +%F-%T`
/* 保證有可用的vg */
[root@node1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg 2 1 0 wz--n- 10.02g 7.02g
vg0 3 1 0 wz--n- 29.29g 0
/* 創建快照卷,-L | --size (LogicalVolumeSize) 指定快照卷大小,一定不可以比變化量小,否則會引起快照卷崩潰,備份失敗;
-n | --name 指定快照卷名字; -p | --permission 指定快照卷權限 r只讀,
-s --snap-shot /dev/myvg/mylv 指定要對/dev/myvg/mylv創建快照卷
如果此時數據庫服務器比較繁忙,則需要等待正在提交的日志刷寫到磁盤等,,可能會需要一定等待時間*/
[root@node1 ~]# lvcreate -L 100M -n mydata-snap -p r -s /dev/myvg/mylv
Logical volume "mydata-snap" created
[root@node1 ~]# mkdir /mnt/snap
[root@node1 ~]# mount /dev/myvg/mydata-snap /mnt/snap/
mount: block device /dev/mapper/myvg-mydata--snap is write-protected, mounting read-only
[root@node1 ~]# cd /mnt/snap/
[root@node1 snap]# ls
data lost+found
[root@node1 snap]# ls data/
aria_log.00000001 ib_logfile0 mysql-bin.000001 mysql-bin.000005 node1.bob.org.err
aria_log_control ib_logfile1 mysql-bin.000002 mysql-bin.000006 node1.bob.org.pid
hellodb mydb mysql-bin.000003 mysql-bin.000007 performance_schema
ibdata1 mysql mysql-bin.000004 mysql-bin.index test
[root@node1 snap]# cp -ap /mnt/snap/data/ /backup/mydata-2014-07-29/
[root@node1 snap]# ls /backup/mydata-2014-07-29/data/
aria_log.00000001 ib_logfile0 mysql-bin.000001 mysql-bin.000005 node1.bob.org.err
aria_log_control ib_logfile1 mysql-bin.000002 mysql-bin.000006 node1.bob.org.pid
hellodb mydb mysql-bin.000003 mysql-bin.000007 performance_schema
ibdata1 mysql mysql-bin.000004 mysql-bin.index test
備份完成回到mysql會話,解鎖表
MariaDB [(none)]> UNLOCK TABLES;
Query OK, 0 rows affected (0.01 sec)
這樣一個基于lvm快照的mysql備份就完成了,然后還可以結合二進制日志做增量備份和恢復等,可參照前一篇文章 MySQL 備份和恢復(一)mysqldump
本文出自 “不懂IT的中醫不是好IT” 博客,請務必保留此出處
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
MySQL備份和恢復(二)基于LVM實現幾乎熱備
MySQL備份和恢復(二)基于LVM實現幾乎熱備:LVM(LogicalVolumeManagement邏輯卷管理)實現幾乎熱備的原理:利用LVM的快照卷達到可以保存數據庫在某一時刻的瞬時狀態,只需把當時的快照備份出來即可。LVM的 LVM(Logical Volume Management邏輯卷管理)實現幾乎熱備的原理:利用LVM的快照卷達到可