视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL基于LVM快照的备份恢复
2020-11-09 14:28:25 责编:小采
文档


测试环境中已安装有mysql 5.5.36数据库,但数据目录没有存放在LVM卷,此次要演示基于LVM的数据备份和恢复,所以就把mysql的数据先

目录
1、数据库全备份
2、准备LVM卷
3、数据恢复到LVM卷
4、基于LVM快照备份数据
5、数据灾难恢复
6、总结

写在前面:
测试环境中已安装有mysql 5.5.36数据库,但数据目录没有存放在LVM卷,此次要演示基于LVM的数据备份和恢复,所以就把mysql的数据先迁移到LVM上再做快照卷的备份。
如果innodb表基于LVM来做备份,那事务日志文件和数据文件要在同一个LVM的逻辑卷上,因为在同一时刻我们只能对一个逻辑卷做快照,如果事务日志与数据文件不在同一卷上,那做快照后会导致事务日志的事件与真正数据中提交的事务会不一致。

1、数据库全备份
先把现有的数据利用mysqldum工具进行全备份:
[root@mariadb ~]# mysqldump -uroot -p123456 --lock-all-tables --flush-logs --events --routines --master-data=2 --all-databases > /backup/data_dir/fulldata-`date +%F` .sql
[root@mariadb ~]# ls /backup/data_dir/
fulldata-2015-04-14.sql
[root@mariadb ~]# service mysqld stop #停止mysql

2、准备LVM卷

事先准备好两个卷作为LVM的PV:
[root@mariadb ~]# fdisk -l
Disk /dev/sda: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000bf287
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 102400 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 13 1926 15360000 83 Linux
/dev/sda3 1926 2056 1048576 82 Linux swap / Solaris
/dev/sda4 2056 6527 35916127+ 5 Extended
/dev/sda5 2056 2709 5248011 8e Linux LVM
/dev/sda6 2710 3363 5253223+ 8e Linux LVM

创建PV:
[root@mariadb ~]# pvcreate /dev/sda5 /dev/sda6
Physical volume "/dev/sda5" successfully created
Physical volume "/dev/sda6" successfully created

创建VG:
12 [root@mariadb ~]# vgcreate mygroup /dev/sda5 /dev/sda6
Volume group "mygroup" successfully created

创建LV:
[root@mariadb ~]# lvcreate -n mysqldata --size 3G mygroup #大小设置为3GB
Logical volume "mysqldata" created

格式化LV并挂载:
[root@mariadb ~]# lvdisplay #显示逻辑卷的详细信息
[root@mariadb ~]# mke2fs -t ext4 /dev/mygroup/mysqldata #格式化
[root@mariadb ~]# blkid /dev/mygroup/mysqldata #获取UUID
/dev/mygroup/mysqldata: UUID="f863e626-e34e-4207-b9cb-7fbb9c5b7f1e" TYPE="ext4"
[root@mariadb ~]# mkdir /mnt/mydata #创建挂载目录

在/etc/fstab文件中加入下边一行:
[root@mariadb ~]# vim /etc/fstab
UUID=f863e626-e34e-4207-b9cb-7fbb9c5b7f1e /mnt/mydata ext4 defaults 0 0
[root@mariadb ~]# mount -a #重新挂载
[root@mariadb ~]# mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/mapper/mygroup-mysqldata on /mnt/mydata type ext4 (rw)

3、数据恢复到LVM卷

创建数据目录及权限设置:
[root@mariadb ~]# mkdir /mnt/mydata/data
[root@mariadb ~]# chown -R mysql:mysql /mnt/mydata/data
[root@mariadb ~]# vim /etc/my.cnf #修改数据目录位置
datadir = /mnt/mydata/data
[root@mariadb ~]# cd /opt/lamp/mysql55/ #切换到mysql的安装目录

初始化数据库:

[root@mariadb mysql55]# scripts/mysql_install_db --user=mysql --datadir=/mnt/mydata/data

修改datadir指向的目录:

[root@mariadb mysql55]# vim /etc/rc.d/init.d/mysqld
datadir=/mnt/mydata/data

启动mysql,很奇怪,在我没有修改mysqld脚本文件中的datadir时也能正常启动:

[root@mariadb mysql55]# service mysqld start

接入mysql,修改接入密码导入备份数据:
mysql> SET PASSWORD FOR );
mysql> FLUSH PRIVILEGES;
mysql> source /backup/data_dir/fulldata-2015-04-14.sql
mysql> show databases; #数据已恢复
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydb1 |
| mydb2 |
| mysql |
| performance_schema |
| test |
+--------------------+

下载本文
显示全文
专题