lvm mysql_MySQL管理之基于LVM实现几乎热备

基于LVM实现MySQL几乎热备

几乎热备:

对mysql而言,我们如果想实现lvm方式创建快照,在快照创建那一刻,innodb的事物日志内容可能正在往磁盘上写,所以必须保证事物日志和数据文件必须在同一快照上,如果我们分别对问或路径创建快照,很有可能造成数据和时间点的不一致,因此就算备份出来也无法恢复

准备工作

将整个数据导出,以防万一,如果没有放在逻辑卷上,那么则将数据导出备份并删除数据目录,使用lvm方式创建分区并古仔,将数据再覆盖至原先/mydata/data下 最后初始化数据库

创建lvm之前必须将mysql数据全部备份并在创建lvm之后对其恢复

[root@test ~]#mysqldump -uroot --lock-all-tables --all-databases --events > /tmp/alldb.sql

删除数据目录并创建逻辑卷

[root@test ~]#/etc/init.d/mysqld stop

Shutting downMySQL.. SUCCESS!

[root@test ~]# rm-fr /mydata/

首先进行分区,步骤略过

Device Boot Start End Blocks Id System

/dev/sdb1 1 393 3156741 8e Linux LVM

/dev/sdb2 394 786 3156772+ 8e Linux LVM

创建LVM

root@test ~]#pvcreate /dev/sdb

sdb sdb1 sdb2

[root@test ~]#pvcreate /dev/sdb{1,2}

Physical volume "/dev/sdb1"successfully created

Physical volume "/dev/sdb2"successfully created

[root@test ~]#vgcreate myvg /dev/sdb{1,2}

Volume group "myvg" successfullycreated

[root@test ~]#lvcreate -L 3G -n mydata myvg

Logical volume "mydata" created

[root@test ~]#mke2fs -t ext4 -L MYDATA /dev/

将lvm加入至开机启动项

[root@test ~]# echo'LABEL=MYDATA/mydata ext4 defaults0 0' >> /etc/fstab

[root@test ~]#mount -a

[root@test ~]# df-h

Filesystem Size Used Avail Use% Mounted on

/dev/sda3 6.3G 4.2G 1.8G 72% /

tmpfs 245M 0 245M 0% /dev/shm

/dev/sda1 194M 28M 156M 16% /boot

/dev/mapper/myvg-mydata

3.0G 69M 2.8G 3% /mydata

创建数据目录并重新赋值

[root@test ~]#mkdir /mydata/data/

[root@test ~]#chown mysql.mysql -R /mydata/

初始化并启动mysql

[root@test ~]# cd/usr/local/mysql

[root@test mysql]#scripts/mysql_install_db --user=mysql --datadir=/mydata/data/

[root@test mysql]#/etc/init.d/mysqld start

Starting MySQL....SUCCESS!

导入数据

首先我们要关闭binlog,使其恢复操作不记录在二进制日志文件里

mysql> setsession sql_log_bin=0;

Query OK, 0 rowsaffected (0.00 sec)

导入数据库

mysql> source/tmp/alldb.sql;

mysql> showdatabases;

+--------------------+

| Database |

+--------------------+

|information_schema |

| mydb |

| mysql |

|performance_schema |

| test |

| wpdb |

+--------------------+

6 rows in set (0.00sec)

此时我们的二进制日志文件可以开启了,因为是当前会话设置,可以直接退出在进入即可

mysql> setsession sql_log_bin=1;

Query OK, 0 rowsaffected (0.00 sec)

实现几乎热备

我们创建快照那一刻起必须保证数据没有被修改,所以想实现lvm备份必须打开一个远程mysql会话将所有表都锁定,并记录二进制的位置;

如果mysql数据库上正在执行一个事物的话,那么这个请求锁可能会等待一段时间,等待多久我们是未知的,有可能等待半个小时到一个小时也未可知,但步骤是不可少的。

一旦发现加锁成功,另启终端,使用lvcreate命令为数据所在的卷创建快照

对mysql而言,我们如果想实现lvm方式创建快照,在快照创建那一刻,innodb的事物日志内容可能正在往磁盘上写,所以必须保证事物日志和数据文件必须在同一快照上,如果我们分别对问或路径创建快照,很有可能造成数据和时间点的不一致,因此就算备份出来也无法恢复0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值