基于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 stopShutting 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创建LVMroot@test ~]#pvcreate /dev/sdbsdb sdb1 sdb2 [root@test ~]#pvcreate /dev/sdb{1,2} Physical volume "/dev/sdb1"successfully createdPhysical volume "/dev/sdb2"successfully created[root@test ~]#vgcreate myvg /dev/sdb{1,2}Volume group "myvg" successfullycreated[root@test ~]#lvcreate -L 3G -n mydata myvgLogical 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-hFilesystem 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-mydata3.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 startStarting 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的事物日志内容可能正在往磁盘上写,所以必须保证事物日志和数据文件必须在同一快照上,如果我们分别对问或路径创建快照,很有可能造成数据和时间点的不一致,因此就算备份出来也无法恢复
MySQL管理之使用XtraBackup进行热备mysqldump参数详细说明相关资讯 MySQL乎热备 本文评论 查看全部评论 (0)