在日常運維中,我們經常會遇到需要備份 MySQL 數據庫的情況。而使用 LVM 快照作為 MySQL 數據庫備份的方法已經成為了一種相對流行的選擇。
下面我們就來介紹一下如何使用 LVM 快照備份 MySQL 數據庫。
# 首先創建一個新卷 lvcreate -L 10G -s -n mysqldata_snap /dev/vg0/mysqldata # 在備份期間鎖定 MySQL 數據庫 mysql -u root -p mysql>FLUSH TABLES WITH READ LOCK; mysql>quit; # 確認 MySQL 數據庫已經被鎖定 mysql>show processlist; +----+------+-----------+------+---------+------+----------------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+------+---------+------+----------------+------------------+ | 26 | root | localhost | NULL | Query | 0 | Init | show processlist | | 27 | root | localhost | NULL | Sleep | 0 | | NULL | | 28 | root | localhost | NULL | Query | 0 | Waiting for | FLUSH TABLES WITH| +----+------+-----------+------+---------+------+----------------+------------------+ # 將 LVM 快照掛載到 /mnt/mysqldata_snap 目錄 mkdir -p /mnt/mysqldata_snap mount /dev/vg0/mysqldata_snap /mnt/mysqldata_snap # 備份 MySQL 數據庫到 /tmp/mysqlbackup 目錄 mkdir -p /tmp/mysqlbackup cd /tmp/mysqlbackup tar cvfz mysqlbackup.tar.gz /var/lib/mysql/* # 卸載 LVM 快照 umount /mnt/mysqldata_snap # 刪除 LVM 快照 lvremove /dev/vg0/mysqldata_snap # 解鎖 MySQL 數據庫 mysql -u root -p mysql>UNLOCK TABLES; mysql>quit;
通過以上步驟,我們可以使用 LVM 快照輕松備份 MySQL 數據庫,同時保證了備份時數據的一致性。