当前位置: 首页 > article >正文

lvm快照备份

前提

    数据文件要在逻辑卷上;
    此逻辑卷所在卷组必须有足够空间使用快照卷;
    数据文件和事务日志要在同一个逻辑卷上;

前提:MySQL数据lv和将要创建的快照要在同一vg,vg要有足够的空间存储

优点

    几乎是热备(创建快照前把表上锁,创建完毕后立即释放)
    支持所有的存储引擎
    备份速度快
    无需使用昂贵的商业软件(操作系统级别的)

缺点

    可能需要部门协调(使用操作系统级别的命令,DBA一般没有权限)
    无法预计服务停止时间
    数据如果分布在多个卷上比较麻烦

操作流程

1)锁表 flush table with read lock
2)查看position号并记录,便于后期恢复 show master status
3)创建snapshot快照 create snapshop
4)解表 unlock tables
5)挂载snapshot 
6)拷贝snapshot数据,进行备份。备份整个数据库之前,要关闭mysql服务(保护ibdata1文件)
7)卸载
8)移除快照

步骤

# 创建逻辑卷
[root@openEuler-1 ~]# vgcreate mysql /dev/sdbd
[root@openEuler-1 ~]# lvcreate -n lv_mysql -L 5G mysql
[root@openEuler-1 ~]# mkfs.ext4 /dev/mysql/lv_mysql
 
# 停止mysql服务
[root@openEuler-1 ~]# systemctl stop mysqld
 
# 备份所有的数据文件到指定的地方
[root@openEuler-1 ~]# cd /var/lib/mysql
[root@openEuler-1 mysql]# tar czf /tmp/mysql.tar.gz *
 
# 挂载逻辑卷到当前mysql的数据目录里
[root@openEuler-1 mysql]# cd
[root@openEuler-1 ~]# mount /dev/mysql/lv_mysql /var/lib/mysql
 
# 将刚刚备份的数据解压到数据目录里
[root@openEuler-1 ~]# tar xf /tmp/mysql.tar.gz -C /var/lib/mysql
 
# 更改权限重新启动
[root@openEuler-1 ~]# chown mysql. -R /var/lib/mysql/
[root@openEuler-1 ~]# systemctl restart mysqld
 
# 编写备份脚本
[root@openEuler-1 ~]# vim bak_mysql.sh
[root@openEuler-1 ~]# cat bak_mysql.sh
#!/bin/bash
#########################
#File name:bak_mysql.sh
#Email:obboda@163.com
#Created time:2025-01-19 12:16:20
#Description:
#########################
 
bak_dir=/mysql/lvm_bak/$(date +%F)
[ -d ${bak_dir} ] || mkdir -p ${bak_dir}
 
echo "flush tables with read lock; system lvcreate -n lv_mysql_s -L 500M -s /dev/mysql/lv_mysql; unlock tables;"
 | mysql -uroot -pMySQL@123
 
[ -d /mnt/mysql/ ] || mkdir /mnt/mysql
mount /dev/mysql/lv_mysql_s /mnt/mysql
 
rsync -az /mnt/mysql/ ${bak_dir}
if [ $? -eq 0 ]
then
  umount /mnt/mysql/ && lvremove -f /dev/mysql/lv_mysql_s &>/dev/null
 
 
# 测试:
[root@openEuler-1 ~]# bash bak_mysql.sh
# 修改配置文件(一般是在/etc/my.cnf内)
[root@openEuler-1 ~]# vim /etc/my.cnf.d/mysql-server.cnf
#datadir=/var/lib/mysql
datadir=/mysql/lvm_bak/2025-01-19
# 修改目录权限
[root@openEuler-1 ~]# chown -R mysql.mysql /mysql/lvm_bak/2025-01-19/
# 重启服务
[root@openEuler-1 ~]# systemctl restart mysqld
# 查看数据库
[root@openEuler-1 ~]# mysql -e "select * from school.Student"
+-----+----------+------+------+-----------------+
| Sno | Sname    | Ssex | Sage | Sdept           |
+-----+----------+------+------+-----------------+
|   1 | 陆亚     | 男   |   24 | 计算机网络      |
|   2 | tom      | 男   |   26 | 英语            |
|   3 | 张阳     | 男   |   21 | 物流管理        |
|   4 | alex     | 女   |   22 | 电子商务        |
|   5 | xumubin  | 男   |   29 | 中文专业        |
|   6 | wangzhao | 男   |   21 | 导弹专业        |
+-----+----------+------+------+-----------------+


http://www.kler.cn/a/512314.html

相关文章:

  • Fabric区块链网络搭建:保姆级图文详解
  • 深入探索Python人脸识别技术:从原理到实践
  • 阳振坤:AI 大模型的基础是数据,AI越发达,数据库价值越大
  • 云上贵州多彩宝荣获仓颉社区先锋应用奖 | 助力数字政务新突破
  • 云计算与物联网技术的融合应用(在工业、农业、家居、医疗、环境、城市等整理较全)
  • 解决 WSL 2 中 Ubuntu 22.04 安装 Docker 后无法启动的问题
  • 【优选算法】----移动零
  • Grafana 统一可视化了,告警如何统一?
  • 【银河麒麟高级服务器操作系统】业务访问慢网卡丢包现象分析及处理过程
  • Python----Python高级(文件操作open,os模块对于文件操作)
  • LLM大语言模型的分类
  • 通信协议—WebSocket
  • 电子应用设计方案97:智能AI投影仪系统设计
  • uniapp时间组件
  • 回归算法、聚类算法、决策树、随机森林、神经网络
  • Kafka面试题----Kafka都有哪些特点
  • Lightning初探
  • Go channel关闭方法
  • JAVA-IO模型的理解(BIO、NIO)
  • 在VSCode中使用Jupyter Notebook
  • Centos 8 交换空间管理
  • LeetCodeHOT100:60. n个骰子的点数、4. 寻找两个正序数组的中位数
  • 以“智慧建造”为理念,综合应用云、大、物、移、智等数字化技术的智慧工地云平台源码
  • 愿景是什么?
  • JSON-stringify和parse
  • 48V电气架构全面科普和解析:下一代智能电动汽车核心驱动