lvm的快照(mysql备份)
1.将lv挂载mysql数据目录
先添加两块硬盘,然后重启虚拟机。
pv物理卷
pvcreate /dev/sdb
pvcreate /dev/sdc
vg卷组
vgcreate vg0 /dev/sdb /dev/sdc
lv逻辑卷
lvcreate -L 3G -n /dev/vg0/lv0 vg0
格式化
mkfs.ext4 /dev/vg0/lv0
挂载
mount /dev/vg0/lv0 /usr/local/mysql/data/
自动挂载
vim /etc/fstab
/dev/vg0/lv0 /usr/local/mysql/data/ ext4 defaults 0 0
2.保证数据完整(全备 完全恢复)
[root@robin data]# mysqldump -u root -p123 --all-databases > /all.sql (全备)
删掉data目录
[root@robin data]# rm -rf ./*
初始化数据库(修改权限)
[root@localhost mysql]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data
恢复备份
mysql -u root -p123 < all.sql
3.锁库
mysql> FLUSH TABLES WITH READ LOCK;
4.创建快照
[root@robin data]# lvcreate -L 300M -s -n /dev/vgmysql/lvmysql-snampshot /dev/vgmysql/lvmysql
5.解锁
mysql> unlock tables;
6.备份
mysql> FLUSH TABLES WITH READ LOCK;
4.创建快照
[root@robin data]# lvcreate -L 300M -s -n /dev/vgmysql/lvmysql-snampshot /dev/vgmysql/lvmysql
5.解锁
mysql> unlock tables;
6.备份
mount /dev/vgmysql/lvmysql-snampshot /opt
[root@robin opt]# tar -cvf /backup/mysql.bak.tar /opt/*
7.删除快照
[root@robin /]# umount /opt/
[root@robin /]# lvremove /dev/vgmysql/lvmysql-snampshot
[root@robin opt]# tar -cvf /backup/mysql.bak.tar /opt/*
7.删除快照
[root@robin /]# umount /opt/
[root@robin /]# lvremove /dev/vgmysql/lvmysql-snampshot
#!/bin/bash
mysql -u root -p123 -e "FLUSH TABLES WITH READ LOCK;\!lvcreate -L 500M -s -n /dev/vg0/lv0
-snampshot /dev/vg0/lv0;unlock tables;"
mount /dev/vg0/lv0-snampshot /opt
tar -cjvf /backup/mysql.data.tar.bz2 /opt/*
umount /opt/
lvremove /dev/vg0/lv0-snampshot (用shell脚本写的3-7步)
恢复
1.确定mysql进程结束
[root@robin backup]# killall mysqld
2.解压恢复
[root@robin backup]# tar -xvf /backup/mysql.bak.tar -C /tmp/
[root@robin tmp]# cd opt
[root@robin opt]# cp -r ./* /usr/local/mysql/data/
3.重启mysqldd
[root@robin opt]# systemctl restart mysqld
[root@robin opt]# mysql -u root -p123
问题:
1.锁表(时间不好估算)
2.快照大小