自学内容网 自学内容网

lvm快照备份实验

实验环境

  • 操作系统:CentOS 8 或其他使用 systemd 和 LVM 的 Linux 发行版。
  • MySQL 版本:MySQL 8.0

实验步骤

1. 准备 LVM 卷
  • 首先,确保你已经有一个存储 MySQL 数据的逻辑卷。如果没有,可以按照以下步骤创建一个:
# 检查磁盘信息
fdisk -l

# 假设使用 /dev/sda 磁盘,创建物理卷
pvcreate /dev/sda

# 创建卷组
vgcreate vg_mysql /dev/sda

# 创建逻辑卷
lvcreate -n lv_mysql -L 4G vg_mysql

# 格式化逻辑卷为 ext4 文件系统
mkfs.ext4 /dev/vg_mysql/lv_mysql

# 创建挂载点
mkdir /var/lib/mysql

# 挂载逻辑卷
mount /dev/vg_mysql/lv_mysql /var/lib/mysql

# 确保开机自动挂载,添加到 /etc/fstab 文件
echo "/dev/vg_mysql/lv_mysql /var/lib/mysql ext4 defaults 0 0" >> /etc/fstab
2. 安装和配置 MySQL (安装在了lvm卷中 )
  • 安装 MySQL 并将数据存储在 /var/lib/mysql 中:
dnf install mysql-server -y
systemctl start mysqld
systemctl enable mysqld

3. 创建测试数据
  • 登录 MySQL 并创建一些测试数据:
mysql -u root -p
  • 输入密码,然后在 MySQL 中执行以下 SQL 语句:
CREATE DATABASE testdb;
USE testdb;
CREATE TABLE test_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
);
INSERT INTO test_table (name, email) VALUES ('Alice', 'alice@example.com'), ('Bob', 'bob@example.com');

4. 创建 LVM 快照
  • 创建一个 LVM 快照,用于备份:
# 刷新表锁,创建快照,解锁表
mysql -u root -p -e "flush tables with read lock; system lvcreate -n lv_mysql_snapshot -L 1G -s /dev/vg_mysql/lv_mysql; unlock tables;"

# 创建挂载点
mkdir /mnt/mysql_snapshot

# 挂载快照
mount /dev/vg_mysql/lv_mysql_snapshot /mnt/mysql_snapshot

5. 备份数据
  • 使用 rsync 或 tar 备份数据:
# 使用 rsync 备份
rsync -avz /mnt/mysql_snapshot/ /backup/mysql_snapshot_$(date +%Y%m%d)/

# 或者使用 tar 备份
tar czf /backup/mysql_snapshot_$(date +%Y%m%d).tar.gz /mnt/mysql_snapshot

6. 清理快照
  • 完成备份后,清理快照:
# 卸载快照
umount /mnt/mysql_snapshot

# 删除快照
lvremove -f /dev/vg_mysql/lv_mysql_snapshot
7. 恢复数据(可选)
  • 假设你需要恢复数据,你可以使用之前的备份文件:
# 假设使用 tar 备份,先解压
tar xzf /backup/mysql_snapshot_20250117.tar.gz -C /tmp/restore

# 停止 MySQL 服务
systemctl stop mysqld

# 清空当前数据目录
rm -rf /var/lib/mysql/*

# 复制备份数据到数据目录
cp -r /tmp/restore/mnt/mysql_snapshot/* /var/lib/mysql/

# 更改权限
chown mysql:mysql -R /var/lib/mysql

# 启动 MySQL 服务
systemctl start mysqld

实验总结

  • 步骤 1创建 LVM 逻辑卷,将其格式化为 ext4 并挂载到 /var/lib/mysql,用于存储 MySQL 数据。
  • 步骤 2安装和启动 MySQL 服务
  • 步骤 3创建测试数据,验证 MySQL 数据库的正常使用。
  • 步骤 4使用 flush tables with read lock 锁定表,创建 LVM 快照,解锁表,然后挂载快照。
  • 步骤 5使用 rsync 或 tar 备份快照中的数据。
  • 步骤 6卸载和删除快照,完成备份操作。
  • 步骤 7可选的恢复数据步骤,展示如何使用备份文件恢复数据。

注意事项

  • 在创建快照时,确保快照的大小足够存储在创建快照期间发生变化的数据。
  • 操作过程中,确保有足够的权限,通常需要使用 root 权限或 sudo
  • 备份的频率和时间应该根据实际情况确定,以确保数据的安全性和可恢复性。

通过上述实验,你可以实现一个简单的 LVM 快照备份 MySQL 数据库的过程,以保护数据免受意外数据丢失或损坏的影响。

以下是上述实验的脚本形式,你可以将其保存为 lvm_snapshot_backup.sh 并运行:

#!/bin/bash

# 刷新表锁,创建快照,解锁表
mysql -u root -p -e "flush tables with read lock; system lvcreate -n lv_mysql_snapshot -L 1G -s /dev/vg_mysql/lv_mysql; unlock tables;"

# 创建挂载点
mkdir -p /mnt/mysql_snapshot

# 挂载快照
mount /dev/vg_mysql/lv_mysql_snapshot /mnt/mysql_snapshot

# 使用 rsync 备份
rsync -avz /mnt/mysql_snapshot/ /backup/mysql_snapshot_$(date +%Y%m%d)/

# 或者使用 tar 备份
# tar czf /backup/mysql_snapshot_$(date +%Y%m%d).tar.gz /mnt/mysql_snapshot

# 卸载快照
umount /mnt/mysql_snapshot

# 删除快照
lvremove -f /dev/vg_mysql/lv_mysql_snapshot

你可以使用以下方式运行该脚本:

chmod +x lvm_snapshot_backup.sh
./lvm_snapshot_backup.sh

这个实验可以帮助你了解如何使用 LVM 快照备份 MySQL 数据库,并且在需要时可以使用备份文件恢复数据,确保数据的安全和完整性。请根据实际情况调整用户名、密码、设备名称、备份目录等信息。


原文地址:https://blog.csdn.net/2301_78537542/article/details/145216324

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!