问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MySQL什么是物理备份(lvm-snapshot)

发布网友 发布时间:2023-08-09 06:23

我来回答

1个回答

热心网友 时间:2023-10-02 14:10


本篇文章给大家带来的内容是介绍MySQL什么是物理备份(lvm-snapshot)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。
lvm-snapshot(工具备份)
优点:
几乎是热备(穿件快照前把表上锁,创建完成后立即释放)
支持所有引擎
备份速度快
无需使用昂贵的商业软件(它是操作系统级别的)
缺点:
可能需要跨部门协作(使用操作系统级别的命令,DBA一般没有权限)
无法预计服务停止时间
数据如果分布在多个卷上比较麻烦(针对存储级别而言)
逻辑卷快照的原理
为什么选择lvm快照备份?
原因:因为锁表的时间不一致,在锁表的瞬间是不能写入的,对其进行快照备份,备份完成后立即解锁,然后服务可以正常使用(写入等操作)比如数据量大的时候,做快照一下子就拍了,然后立即解锁,就不影响写入等操作。如果用mysqlmp备份,那么数据量大的时候,锁表时间长,就会影响效率。
操作流程
1、flush table with read locak;
2、create snapshot
3、show master status;show slave status; [可选]
4、unlock tables;
5、Copy files from the snapshot
6、Unmount the snapshot.
7、Remove snapshot快照备份:
1.迁移数据到逻辑卷(不是必须,视情况而定)
2.锁表(时间)
3.给数据库所在的逻辑卷拍快照
4.解锁
5.将快照挂载到临时挂载点上
6.将快照上的所有数据拷贝到相应的备份目录里(不同主机)
7.卸载快照并删除lvm备份示例
一、数据迁移到逻辑卷上
环境:数据文件不在逻辑卷上,那么需要将数据文件迁移到逻辑卷上
1、创建一个逻辑卷
[root@Admin ~]# pvcreate /dev/sdb
[root@Admin ~]# vgcreate vg01 /dev/sdb
[root@Admin ~]# lvcreate -n lv_mysql -L 4G vg01
[root@Admin ~]# mkfs.ext4 /dev/mapper/vg01-lv_mysql2、将当前的mysql数据库迁移到逻辑卷上
1>先停止应用
2>停止mysql服务
[root@Admin ~]# service mysqld stop
3>备份所有的数据文件到指定的地方
[root@Admin ~]# tar -czvf /tmp/backmysql/mysql.tar.gz /data/DB/*
4>挂载逻辑卷到当前mysql的数据目录里
[root@Admin ~]# mount /dev/mapper/vg01-lv_mysql /data/DB/
5>将刚刚备份的数据解压到数据目录里
[root@Admin ~]# tar xf /tmp/backmysql/mysql.tar.gz -C /data/DB/
[root@Admin ~]# mv /data/DB/data/DB/* /data/DB/ && rm -rf /data/DB/data/
6>启动数据库
[root@Admin ~]# service mysqld start
此处启动失败原因/data/DB/数据目录的权限变成了root,
更改权限重新启动
[root@Admin ~]# chown mysql. -R /data/DB/ && service mysqld start 二、快照备份数据库
1、给数据库加读锁
mysql> flush table with read lock;2、给mysql的数据库所在的逻辑卷创建快照
[root@Admin ~]# lvcreate -n lv_mysql_s -L 50M -s /dev/vg01/lv_mysql
[root@Admin ~]# dmsetup --tree ls
vg01-lv_mysql (253:0)
└─vg01-lv_mysql-real (253:1)
└─ (8:16)
vg01-lv_mysql_s (253:3)
├─vg01-lv_mysql_s-cow (253:2)
│ └─ (8:16)
└─vg01-lv_mysql-real (253:1)
└─ (8:16)3、解锁数据库
[root@Admin ~]# unlock tables上面1~3步可以合并为一步
[root@Admin ~]# echo "flush tables with read lock; system lvcreate -n lv_mysql_s -L 50M -s /dev/vg01/lv_mysql;unlock tables;" |mysql -p1234、将快照挂载到临时目录里
[root@Admin ~]# mkdir /mnt/mysql && mount /dev/vg01/lv_mysql_s /mnt/mysql/5、备份数据
[root@Admin ~]# ls /mnt/mysql/ # 可以看到新的挂载目录里面的数据
Admin.pid db01 ib_logfile0 mysql mysql-bin.000003 mysql-bin.000006 mysql-bin.000009 performance_schema
auto.cnf db02 ib_logfile1 mysql-bin.000001 mysql-bin.000004 mysql-bin.000007 mysql-bin.000010 test
binlog ibdata1 login mysql-bin.000002 mysql-bin.000005 mysql-bin.000008 mysql-bin.index
[root@Admin ~]# mkdir /backup && rsync -av /mnt/mysql /backup6、卸载快照并删除
[root@Admin ~]# umount /mnt/mysql/ && lvremove /dev/vg01/lv_mysql_s7、测试验证(将数据目录里面的东西全部删除)然后再将备份的数据目录恢复过来
1>我们来点狠的,直接把mysql的数据目录/data/DB/删除。
[root@Admin ~]# rm -rf /data/DB/* && ls /data/DB/
2>删除后可以看到重启mysql直接报错了
[root@Admin ~]# service mysqld restart
MySQL server PID file could not be found! [失败]
Starting MySQL...The server quit without updating PID file [失败]/DB/Admin.pid).
3>根据上面的/backup里面备份的数据进行恢复
[root@Admin ~]# mv /backup/mysql/* /data/DB/
[root@Admin ~]# ls /data/DB/
auto.cnf db02 ib_logfile1 mysql-bin.000001 mysql-bin.000004 mysql-bin.000007 mysql-bin.000010 test
binlog ibdata1 login mysql-bin.000002 mysql-bin.000005 mysql-bin.000008 mysql-bin.index
db01 ib_logfile0 mysql mysql-bin.000003 mysql-bin.000006 mysql-bin.000009 performance_schema
4>重新启动
[root@Admin ~]# chown mysql. /data/DB/ -R
[root@Admin ~]# service mysqld restart
这里权限更改了如果启动还是报错的话,查看下是否mysql进程还存在,如果存在,将其kill掉再重启就OK
[root@Admin ~]# mysql -p123
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| binlog |
| db01 |
| db02 |
| login |
| mysql |
| performance_schema |
| test |
+--------------------+
rows in set (0.00 sec) 将上面备份整理为脚本 + Crontab 计划任务定时完成备份
#!/bin/bash
#LVM BackMysql
back_dir=/backup/`date +%F`
[ -d $back_dir ] mkdir -p $back_dir
echo "flush tables with read lock; system lvcreate -n lv_mysql_s -L 50M -s /dev/vg01/lv_mysql;unlock tables;" |mysql -p123
mount /dev/vg01/lv_mysql_s /mnt/mysql/
rsync -a /mnt/mysql/ $back_dir
if [ $? -eq 0 ];then
umount /mnt/mysql/ && lvremove -f /dev/vg01/lv_mysql_s
fi自动化实现快照备份mylvmbackup
1、安装相应的软件
2、两种备份方式
1>mylvmbackup xxx终端备份
2>修改配置文件指定相应的参数
正常安装MySQL:
1. 安装系统
2. 准备LVM,例如 /dev/vg_back/lv-mysql,mount /usr/local/mysql
3. 源码安装MySQL到 /usr/local/mysql
可选操作:将现在的数据迁移到LVM
1. 准备lvm及文件系统
# lvcreate -L 2G -n lv-mysql vg_back
# mkfs.ext4 /dev/vg_back/lv-mysql

2. 将数据迁移到LVM
# service mysqld stop
# mount /dev/vg_back/lv-mysql /u01/ //临时挂载点
# rsync -va /usr/local/mysql/ /u01/ //将MySQL原数据镜像到临时挂载点
# umount /u01/
# mount /dev/vg_back/lv-mysql /usr/local/mysql //加入fstab开机挂载
# df -Th
/dev/mapper/vg_back-lv-mysql ext4 2.0G 274M 1.7G 15% /usr/local/mysql
# service mysqld start
手动基于LVM快照实现备份:
1. 加锁
mysql> flush table with read lock;
2.创建快照
# lvcreate -L 500M -s -n lv-mysql-snap /dev/vg_back/lv-mysql
# mysql -uroot -p123 -e 'show master status' > /backup/`date +%F`_position.txt
或者
mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| mysqld-bin.00003 | 135 | | | |
+-------------------+----------+--------------+------------------+-------------------+
3. 释放锁
mysql> unlock tables;
4. 从快照中备份
# mount -o ro /dev/vg_back/lv-mysql-snap /u01/
# mkdir /backup/`date +%F`
# rsync -a /u01/ /backup/2015-07-02/
5. 移除快照
# umount /u01/
# lvremove -f /dev/vg_back/lv-mysql-snap
脚本 + Cron完成:
#!/bin/bash
#LVM backmysql...
back_dir=/backup/`date +%F`
[ -d $back_dir ] || mkdir -p $back_dir
mysql -uroot -p123 -e 'flush table with read lock'
lvcreate -L 500M -s -n lv-mysql-snap /dev/vg_back/lv-mysql
mysql -uroot -p123 -e 'show master status' |grep mysql > $back_dir/position.txt
mysql -uroot -p123 -e 'flush logs'
mysql -uroot -p123 -e 'unlock tables'
mount -o ro /dev/vg_back/lv-mysql-snap /u01
rsync -a /u01/ $back_dir
if [ $? -eq 0 ];then
umount /u01/
lvremove -f /dev/vg_back/lv-mysql-snap
fi
===============================================================
mylvmbackup
功能:利用LVM快照实现物理备份,即LVM快照备份的自动版
安装perl模块
1. 在线安装
http://www.lenzg.net/mylvmbackup
它依赖于perl 模块,可用以下命令安装
perl -MCPAN -e 'install Config::IniFiles'
2. 离线安装
# rpm -ivh mylvmbackup-0.16-0.noarch.rpm
warning: mylvmbackup-0.16-0.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID b27291f2: NOKEY
error: Failed dependencies:
perl(Config::IniFiles) is needed by mylvmbackup-0.16-0.noarch
perl(Date::Format) is needed by mylvmbackup-0.16-0.noarch
perl(File::Copy::Recursive) is needed by mylvmbackup-0.16-0.noarch
解决:
# yum -y localinstall atrpms-77-1.noarch.rpm perl-File-Copy-Recursive-0.38-1.el6.rfx.noarch.rpm perl-IO-stringy-2.110-1.2.el6.rfx.noarch.rpm perl-Config-IniFiles-2.56-1.el6.rf.noarch.rpm
安装mylvmbackup软件包
# yum -y install mylvmbackup-0.15-0.noarch.rpm 解决依赖关系perl-TimeDate
备份方法一:
# mylvmbackup --user=root --password=123 --host=localhost --mycnf=/etc/my.cnf --vgname=vg_back --lvname=lv-mysql --backuptype=tar --lvsize=100M --backupdir=/backup
# tar xf backup-20140903_000236_mysql.tar.gz
# ls
backup backup-cnf-20150702_000236_mysql
backup-20150702_000236_mysql.tar.gz backup-pos
备份方法二:
# vim /etc/mylvmbackup.conf
[mysql] #连接数据库配置
user=root
password=123456
host=localhost
port=3306
socket=/tmp/mysql.sock
mycnf=/etc/my.cnf
[lvm] #LVM逻辑卷的配置
vgname=vg_server #卷组名称
lvname=lv_mysql #逻辑卷名称
backuplv=mysql_snap #快照卷名称
lvsize=500M
[fs] #文件系统配置
xfs=0
mountdir=/var/tmp/mylvmbackup/mnt/ #挂载目录
backupdir=/backup #备份目录,也可以备份到行程主机
[misc] #定义备份选项
backuptype=tar #定义备份的类型
backupretention=0
prefix=backup #定义备份文件名前缀
suffix=_mysql #定义备份文件名后缀
tararg=cvf #定义tar参数,默认为cvf
tarfilesuffix=.tar.gz #定义备份文件后缀名格式
datefmt=%Y%m%d_%H%M%S #定义备份文件名时间戳格式
keep_snapshot=0 #是否保留snaphot
keep_mount=0 #是否卸载snaphot
quiet=0 #定义记录日志类型
注释:其他配置保持输入即可
然后直接执行mylvmbackup即可
mylvmbackup 参考示例
MySQL什么是物理备份(lvm-snapshot)

-R /data/DB/ && service mysqld start 二、快照备份数据库 1、给数据库加读锁mysql> flush table with read lock;2、给mysql的数据库所在的逻辑卷创建快照[root@Admin ~]# lvcreate -n lv_mysql_s -L 50M -s /dev/vg01/lv_mysql[root@Admin ~]# dmsetup --tree lsvg01-lv_mysql (253:0)└─...

MySQL备份的几种方式的讨论,重点关注在线热备

3,LVM的快照功能进行数据库分区的备份,这种方法是利用的逻辑卷的镜像功能,对整个分区进行在线备份,这种备份数据量大,而且备份性能低下,因为每次备份都是整个镜像,不能针对数据做备份。桶装备份4,开启二进制同步日志功能,主从复制,从机器做备份功能。5,在线的热备份,采用开源的 Xtrabackup 备份工具对innodb 数据表进行...

MySQL中备份的几种方式

看一下各种备份方式中的优缺点1 mysqldump常用的备份参数-R --events --triggers=true --single-transaction --master-data=2-R(--routines): 导出存储过程以及自定义函数--events: 导出事件--triggers=true:导出触发器.默认开启,用--skip-triggers禁用--single-transaction:该选项在导出数据之前提...

问17个MySQL面试问题及其解决方案17mysql面试提

MySQL提供了多种备份和恢复的方式,包括物理备份和逻辑备份。常用的备份方式包括使用mysqldump命令进行逻辑备份,使用mysqlhotcopy命令进行物理备份,以及使用LVM方式进行卷级别的备份。4. 如何优化MySQL的性能?MySQL性能优化需要考虑许多方面,例如查询优化、索引优化、存储引擎选择、硬件升级等。调整MySQL参数也是性...

全面认识openstack,它到底是什么?包含什么

容器服务器将列出一个容器中的所有对象,默认对象列表将存储为SQLite文件(译者注:也可以修改为MySQL,安装中就是以MySQL为例)。容器服务器也会统计容器中包含的对象数量及容器的存储空间耗费。Swift账户服务器账户服务器与容器服务器类似,将列出容器中的对象。Ring(索引环)Ring容器记录着Swift中物理存储对象的位置信息,...

如何实现日志的集中化存储以及使用loganalyzer做日志分析

1、创建MySQL的数据存放位置 为了备份日志方便把数据放在LVM卷中。还可以利用LVM的扩容功能,当我们的空间不够使用时。查看,已经存在的卷组是否还有剩余空间,来创建LV。1 2 3 [root@mysql local]# vgdisplay | grep -i"PE[[:space:]]*/[[:space:]]*Size"Alloc PE / Size 6656 / 52....

大数据需要掌握哪些技能

1、学习大数据首先要学习Java基础 Java是大数据学习需要的编程语言基础,因为大数据的开发基于常用的高级语言。而且不论是学hadoop,2、学习大数据必须学习大数据核心知识 Hadoop生态系统;HDFS技术;HBASE技术;Sqoop使用流程;数据仓库工具HIVE;大数据离线分析Spark、Python语言;数据实时分析Storm;消息订阅分发系统Kafka...

linux和k8s和数据库笔记

将kubernetes中物理宿主机上的数据拷贝到pod中。kubectl cp /opt/docker.sh gyl-run/gyl-mysql-01020304: /opt 检查当前用户有没有权限在k8s中创建资源权限。kubectl auth can-i '*' '*'检查当前用户有没有权限在k8s集群中创建namespace权限。kubectl auth can-i create pods --all-namespaces 查看...

系统故障日志里老是有云端交互出错,这是什么问题

3.备份归档 RackSpace的主营业务就是数据的备份归档,所以Swift在这个领域也是久经考验,同时他们还延展出一种新业务--“热归档”。由于长尾效应,数据可能被调用的时间窗越来越长,热归档能够保证应用归档数据能够在分钟级别重新获取,和传统磁带机归档方案中的数小时而言,是一个很大的进步。 4. 移动互联网和CDN 移动...

linux培训主要学什么内容,多长时间能学完?

5. 应用服务管理:学习常见的应用服务如Web服务器(如Apache)、数据库(如MySQL)等的安装、配置和管理。6. 实践项目:通过实际的项目案例进行实战操作,巩固所学知识并提升实际应用能力。关于学习时长方面,Linux培训的具体时长会因不同的课程而有所差异。在千锋教育的Linux培训中,我们提供包括基础班、...

rman是物理备份还是逻辑备份 veeam备份linux物理机 物理备份和逻辑备份的区别 数据库物理备份和逻辑备份 centos7创建lvm物理卷 Linux怎么创建物理分区 linux怎么删除物理卷 物理备份 如何完整备份物理机
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
微软Win10 DirectX 12 Ultimate正式发布:如何统一AMD/NVIDIA PC显卡和X... 台湾咖啡店品牌有哪些 RedmiBook13首卖4199元,哪些配置的双十二尝鲜价分别是多少? 陂西镇自然环境 鹰凰斗破苍穹简介 骜鹰斗破苍穹简介 三原县陂西镇派出所所长电话 三原县陂西镇初级中学简介 同时用两种洗面奶好吗? 小屁孩日记:屁事多基本信息 求助,LVM操作 SSH就自动断开 劳动法 员工失责对单位赔偿 违反有关劳动合同规定的赔偿办法 请问你知道怀化报考教师资格证地方的电话没! 梭伦改革性质 租房,房东阳台没做防水,洗衣机水管松掉,导致漏水到楼下住户,阳台和房间里有个沟,水倒漏到屋里,屋里 我是广州办公家具业务员,请问我要怎样做才能快速成功啊?主要是做大单的业务生意10万以上的 猎头如何做大单,赚大钱 你将如何去做大单?说说一些具体的结合课程内容和自己的经验? 车超速2次,扣12分,可以分两次扣扣吗 请问如果违章比较多的那种,12分不够扣。可以分开处理吗?比如说先处理一部分。另外,一次可以拿几个驾 请问一次性扣12分可以分开扣吗 一次超速扣12分能拿我的和朋友的驾照分开扣吗 画水彩是从两面开始画还是从暗面开始呢? 水彩的秘密:从亮到暗,从虚到实 我的车在汽车贸易公司买的,新速腾1.6L自动舒适里程表怎么样看没有有被汽车贸易公司改过???????? 11速腾里程大表九万公里,小表多少公里正常。怎么看调没调表? 速腾怎么样看是不是实表? 六尺巷的故事简介60字以内 怎样知道汽车公里数有调表 complain后面介词应该加什么 of for by about 天然做面膜到底需要什么? 自制面膜用什么牛奶好?自己做面膜加什么牛奶好? 【紧急求助】轻性前列腺不去治疗会慢慢恢复吗?  我只问『可以』还是『不可以』,不要说明 摆渡人的封面设计怎么画 汪峰专辑照抄《摆渡人》封面,这么明目张胆吗? 求一首女声英文歌,歌词为,I want hear you哦哦哦,may be you get fo 盖要猜数字是几呀 扯柳条,盘起来,编成筐,还有盖,猜三个数? 柳条编菜筐打一数字 个第三方公司签劳动合同算吗 为什么我的脚有一块骨头,是很多人没有的。 为什么透明手机壳容易发黄? 枸杞和红牛一起泡酒会怎样 红牛加阿司匹林加止咳糖浆可以吗 手上有冻疮发痒,要怎么办 进夏天的三伏,什么时候是初伏,什么时候是二伏,什么时候是末伏 面对爷爷去世,我该如何安慰他? 爷爷去世了,我该怎样安慰他? 办理临时身份证最快需要多久