MySQL Lvm快照实现物理备份 + binlog(物理备份)
1.环境准备
需要准备一块空的硬盘将其做成Lvm即可
962a169d6b4232b9039bd4dce41d99b.png
2.开始备份MySQL数据库所有数据
systemctl stopo mysqld
停止数据库
mount /dev/xupeng/xp /mnt 将前面做好的lvm挂载到/mnt
cp -a /var/lib/mysql/* /mnt
将数据库所有数复制到/mnt
注:这里表面上是将数据库的所有数据复制到/mnt下面,但实际上数据库的所有数据是复制到了/dev/xupeng/xp这个lvm里面,/mnt只是这个lvm的一个出口,在取消挂载后里面是没有内容的(拿笔管和笔芯举例,“/mnt”是笔管,lvm则是笔芯,当笔芯被拿掉时,笔管里则什么都没有)
umount /mnt/
卸载零时挂载
注:上面的一系列操作目的是将mycql所有的数据复制到lym上面
vim /etc/fstab
打开/etc/fstab 文件将/dev/xupeng/xp 这个lvm挂载到这来,实现开机自启
/dev/datavg/lv-mysql /var/lib/mysql xfs defaults 0 0
mount -a
chown -R mysql.mysql /var/lib/mysql
给予/var/lib/mysql/ 数据库的最高权限
systemctl start mysqld
开启数据库
注:如果在安装数据库时直接将其数据储存在lvm上则可以省略上面全部的步骤,直接将lvm上的数据进行备份即可,然后开始试验
注:为了试验的效果,我们现在进入数据库进行一些操作
lvm快照备份流程(相当于经MySQL数据库备份到lvm上后在将lvm上的数据再次备份,然后将其删除后恢复lvm上的数据)
mysql -uroot -p"Xp.@123456haha" 登陆数据库
create database mmm;
创建库“mmm”
use mmm;
进入库“mmm”
create table nnn;
创建名称为“nnn”的表
insert into nnn values (6);
向表中插入数据“6”
insert into nnn values (66);
向表中插入数据“66”
mysql> flush tables with read lock;
数据库加全局读锁
\q
退出数据库
lsblk
查询所有硬盘
lvmcreate -L 1G -s -n nnn /dev/xp/peng
在“/dev/xp/peng”创建peng这个lvm逻辑卷
mysql -p"Xp.@123456haha" -e "show master status" > /2/date +%F
_position.txt
查询二进制日志位置,下次使用binlog作为还原依据(最近一次备份点到奔溃点之间的数据)的依据
mysql -uroot -p"Xp.@123456haha"
进入数据库
unlock tables;
释放枷锁
\q
退出数据库
mount -o nouuid /dev/xp/peng /3
将“peng”这个lvm 挂载到/3上面
cd /3
tar -cf /2/ date+%F
-mysql-all.tar ./*
umount /3/
取消挂载
lvremove -f /dev/xu/peng
删除“peng”这个lvm
systemctl stop mysqld
停止数据库
rm -rf /var/lib/mysql/*
清除数据库里所有数据
ls /2/
查看里面的文件
tar -xf /2/2019-01-21-mysql-all.tar -C /var/lib/mysql/
解压之前备份好的数据库数据到指定的MySQL数据库文件里面
chown -R mysql.mysql /var/lib/mysql/
给/var/lib/mysql/ 数据库最高权限
systemctl restast mysqld
启动数据库
进入数据库查询数据是否恢复即可!!!!!!