数据库备份之lvm快照热备
来源:SegmentFault
时间:2023-01-27 21:29:19 294浏览 收藏
IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《数据库备份之lvm快照热备》,聊聊MySQL、Linux、centos,我们一起来看看吧!
- 使用的是虚拟机环境,先在虚拟机中添加一块儿新的硬盘。然后给硬盘分区。注意给相关目录的权限,如果权限不够可能会报错。如/mnt,/var/lib/mysql
fdisk -l #查看分区信息
pvcreate mysql_pv /dev/sdb #创建物理卷
vgcreate vgmysql /dev/sdb #创建卷组
lvcreate -L 3G -n lv0 vgmysql #创建逻辑卷
mkfs.ext4 /dev/vgmysql/lv0 #格式化挂载
mount /dev/vgmysql/lv0 /mnt #挂载逻辑卷
service mysqld stop #关闭mysql服务
cp -a /var/lib/mysql/* /mnt #将数据库数据拷贝到mnt目录下
umount /dev/vgmysql/lv0 #移除挂载信息
mount /dev/vgmysql/lv0 /var/lib/mysql/
service mysqld start #重启mysqld服务
mkdir /backup/mysql/binlog
mysql -uroot -p123456 -e "SHOW MASTER STATUS;" > /backup/mysql/binlog/binlog.pos
- 设置开机自动挂载,在/etc/fstab文件中配置。
- 最好不要采用在 /etc/fstab直接指定分区(如/dev/sdb1)的方法,因为设备的顺序编码在关闭或者开启服务器过程中可能发生改变,例如/dev/sdb1可能会变成/dev/sdb2。推荐使用UUID来配置自动挂载数据盘。
- 查询磁盘分区的UUID
blkid /dev/sdb1
- UUID=一串数字:要挂载的磁盘分区的UUID
- /var/lib/mysql:挂载目录
- ext4:分区格式为ext4
- defaults:挂载时所要设定的参数(只读,读写,启用quota等),输入defaults包括的参数有(rw、dev、exec、auto、nouser、async)
0:使用dump是否要记录,0为不需要,1为需要 2:2是开机时检查的顺序,boot系统文件为1,其他文件系统都为2,如不要检查就为0
**innodb表,一般情况下需要打开独立表空间模式innodb_file_per_table,将其值设为1.
检查独立表是否开启
mysql> show variables like "%per_table%"; | |
---|---|
Variable_name | Value |
innodb_file_per_table | ON |
1 row in set (0.00 sec)**
库名文件夹里面的表文件只是结构。而ibdata1文件才是数据库的真实数据存放文件。新版的Mysql默认引擎是innodb,所以默认会有ibdata1文件。
mysql采用缓冲方式将数据写入到ibdata1文件中的。当mysql运行时,对ibdata1进行拷贝会导致ibdata1文件中的数据出错。所以备份时要关闭mysql服务。
ibdata1文件会不断增大,无法向操作系统回收空间。容易导致线上出现过大的共享表空间文件,致使当前空间爆满。ibdata1文件达到一定程度时,会影响insert,update的速度。如果删表频繁的话,共享表空间产生的碎片会比较多。打开独立表空间,方便进行innodb表的碎片整理。
使用myISAM表引擎的数据库会分别创建3个文件:表结构,表索引,表数据空间。可以将某个数据库目录直接迁移到其他数据库也可以正常工作。
使用InnoDB时,默认将所有数据库InnoDB引擎的表数据存储在一个共享空间中:ibdata1文件。增删数据库时,ibdata1文件不会自动收缩。单个数据库备份成为问题。
因此设置innodb_file_per_table值为1,会修改innodb为独立表空间模式,使每个数据库的每个表都会生成一个数据空间。
在innodb表中,即使时请求到了读锁,InnoDB在后台依然可能会有事务进行读写操作。所以在备份之前要show engine innodb status;查看后台进程状态,等没有写请求后再做备份。
在给lv0做快照之前,先使用FLUSH TABLES和FLUSH TABLES WITH READ LOCK强行将所有OS的缓冲数据写入磁盘(类似于操作系统的sync命令),同时将数据库置为全局只读。并且要show engine innodb status.查看进程状态,没有请求后再进行备份。快照完成之后,再使用UNLOCK TABLES解锁。然后只需要将快照进行挂载,复制其中数据,在复制完成之后删除该快照即可
! /bin/bash
DATE=
date +%Y%m%d
TIMESTAMP=
date +%Y%m%d%H%M%S
HOSTNAME="127.0.0.1"
USERNAME="root"
PASSWORD=""
MYSQL="/usr/bin/mysql"
LVCREATE="/sbin/lvcreate"
LVREMOVE="/sbin/lvremove"
MOUNT="/bin/mount"
UMOUNT="/bin/umount"
TAR="/bin/tar"
SNAP_SIZE=0.3G
SNAP_MYSQL=mysql_snapshot
MOUNT_POINT=/mnt
EXEC_MySQL="
FLUSH TABLES;
FLUSH TABLES WITH READ LOCK;
FLUSH LOGS;
! $LVCREATE -s -L$SNAP_SIZE -n $SNAP_MYSQL /dev/vgmysql/lv0
UNLOCK TABLES;"
echo "$EXEC_MySQL" | $MYSQL -u$USERNAME -p$PASSWORD -h$HOSTNAME
if [ ! -d $MOUNT_POINT/$DATE ];then
mkdir $MOUNT_POINT/$DATE chmod -R 777 $MOUNT_POINT/$DATE
fi
$MOUNT /dev/vgmysql/$SNAP_MYSQL $MOUNT_POINT/$DATE
cd /root
$TAR -zcvf ${TIMESTAMP}.tgz $MOUNT_POINT/$DATE
$UMOUNT $MOUNT_POINT/$DATE
$LVREMOVE -f /dev/vgmysql/$SNAP_MYSQL
mysql备份学习参考https://cloud.tencent.com/dev...
今天关于《数据库备份之lvm快照热备》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于mysql的内容请关注golang学习网公众号!
-
499 收藏
-
244 收藏
-
235 收藏
-
157 收藏
-
101 收藏
-
214 收藏
-
155 收藏
-
485 收藏
-
436 收藏
-
125 收藏
-
174 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习
-
- 大力的大白
- 感谢大佬分享,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢大佬分享技术文章!
- 2023-03-09 00:38:23
-
- 激昂的老师
- 真优秀,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢作者分享博文!
- 2023-03-05 21:42:54
-
- 眼睛大的黄豆
- 太详细了,收藏了,感谢楼主的这篇技术文章,我会继续支持!
- 2023-03-05 08:03:07
-
- 123654
- 这篇博文真是及时雨啊,太细致了,很有用,已加入收藏夹了,关注大佬了!希望大佬能多写数据库相关的文章。
- 2023-03-03 01:06:48
-
- 明亮的滑板
- 这篇技术文章真及时,大佬加油!
- 2023-02-11 23:11:49
-
- 靓丽的戒指
- 这篇文章内容太及时了,细节满满,很好,mark,关注老哥了!希望老哥能多写数据库相关的文章。
- 2023-02-06 19:34:05
-
- 慈祥的歌曲
- 很好,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢作者分享技术文章!
- 2023-01-30 20:50:03
-
- 忧心的大船
- 这篇技术文章出现的刚刚好,好细啊,很好,已加入收藏夹了,关注博主了!希望博主能多写数据库相关的文章。
- 2023-01-30 16:27:25