Mysql高性能备份方案解决数据不间断访问(LVM快照方式备份)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

Mysql高性能备份方案解决数据不间断访问(LVM快照方式备份)

www.rsyslog.org

mysql LVM快照备份特点:

1、在大多数情况下,这种方式几乎算得上是热备。它无需关闭服务,只需要设置只读或者类似这样的限制。

2、支持所有基于本地磁盘的存储引擎,比如MYISAM、InnoDB和BDB,还支持Solid、PrimeXT和Faction。

3、备份速度最快,因为你只需要拷贝相关的二进制数据文件即可。

4、由于只是简单的拷贝文件,因此对服务器开销非常低。

5、保存方式多种多样,你可以备份到磁带上、FTP服务器上、NFS服务器上或者其他什么网络服务器,以及使用各种网络备份软件来备份。

做到这些很简单,说到底就是拷贝文件而已。

6、恢复速度很快。恢复所需要的时间等于你把数据拷贝回来的时间。你可以想出更多的方法让这个时间变得更短。

7、无需使用昂贵的商业软件。

前期准备工作

1、创建LVM分区

更多LVM创建方法请参考 Linux LVM逻辑卷配置过程详解http://dreamfire.blog.51cto.com/418026/1084729 

 
  1. # lvcreate  -L 3G mysqlvg1 -n mysqllv \\创建大小为3G的逻辑卷mysqllv 
  2.  
  3. # mkfs.ext4 /dev/mysqlvg1/mysqllv  \\格式化逻辑卷 

2、停止mysql服务

 
  1. # /etc/rc.d/init.d/mysqld stop 

3、挂在逻辑卷到临时目录/tmp下

 
  1. # mount /dev/mysqlvg1/mysqllv  /tmp/  \\挂载逻辑卷到临时目录 

4、使用tar命令迁移原来数据库目录文件到临时目录/tmp下

 
  1. # cd /var/lib/mysql/ 
  2.  
  3. # tar cf - . | tar xf - -C /tmp/  \\对数据进行分解压缩到/tmp下,也就是放在逻辑卷挂载的目录中 

5、重新挂在逻辑卷到数据库目录下,并在/etc/fstab中添加开启自动挂载

 
  1. # umount /tmp/ 卸载逻辑卷 
  2.  
  3. # rm -rf /var/lib/mysql/* //删除数据库目录下的所有信息,一定要确认上一步操作OK 
  4.  
  5. # mount /dev/mysqlvg1/mysqllv /var/lib/mysql/ //将逻辑卷重新挂载到数据库mysql目录下 

并在/etc/fstab中添加开启自动挂载

 
  1. # blkid /dev/mysqlvg1/mysqllv | awk '{print $2}' \\取出逻辑卷mysqllv的UUID值  
  2.  
  3. # cat >>/etc/fstab <<endf  \\在/etc/fstab下追加逻辑卷挂载信息 
  4. > UUID=29502f33-fde2-4c21-b6c3-9fe1b74c0f0d /var/lib/mysql ext4 defaults 0 0 
  5. > endf 

6、关闭selinux

 
  1. # setinforce 0  \\设置为premission模式  

7、启动mysql服务

 
  1. # /etc/rc.d/init.d/mysqld start 

mysql数据库LVM快照备份

1、锁表

 
  1. mysql> flush tables with read lock; \\防止创建快照过程中有数据写入 

2、查看position信号

 
  1. mysql> show master status\G; \\查看当前的position信号,方便同步到slave的时候使用 

3、创建快照

 
  1. # lvcreate -n mysql-snap -L 100M -s /dev/mysqlvg1/mysqllv \\将逻辑卷中的数据创建为大小为100M的快照,这个速度非常快。 

4、解锁

 
  1. mysql> unlock tables;\\解锁 

5、挂载创建快照

 
  1. # mount /dev/mysqlvg1/mysql-snap  /mnt/ \\挂载快照,为备份做准备 

6、读取快照进行备份(备份需要备份的即可)

 
  1. # tar cf mysql-01.tar.gz db1 db_2  \\备份快照信息到存储设备里面 

7、卸载挂载的快照,然后删除快照

 
  1. # umount /mnt/ 
  2. # lvremove -f /dev/mysqlvg1/mysql-snap \\删除快照,节省空间  

到此,整个备份过程就算结束了。如果你想要将内容同步到slave机上的话,那么还需要多加几个步骤。

1、把备份内容拷贝到slave的数据文件目录下。

2、重启MySQL服务器,等待恢复完成。

3、使用CHANGE MASTER TO 命令告诉slave新的二进制日志位置,并从那里开始同步,(就是我们刚刚记录下来的那个)例如:

 
  1. mysql> CHANGE master TO master_host=”192.168.100.109”,master_user=”slave”,master_password=”123.com”, master_log_file=”host-bin.000006″,master_log_pos=198

 

 本文转自凌激冰51CTO博客,原文链接:http://blog.51cto.com/dreamfire/1172078,如需转载请自行联系原作者

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
69
分享
相关文章
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
61 28
【YashanDB知识库】MySQL迁移至崖山char类型数据自动补空格问题
**简介**:在MySQL迁移到崖山环境时,若字段类型为char(2),而应用存储的数据仅为&#39;0&#39;或&#39;1&#39;,查询时崖山会自动补空格。原因是mysql的sql_mode可能启用了PAD_CHAR_TO_FULL_LENGTH模式,导致保留CHAR类型尾随空格。解决方法是与应用确认数据需求,可将崖山环境中的char类型改为varchar类型以规避补空格问题,适用于所有版本。
【YashanDB知识库】字符集latin1的MySQL中文数据如何迁移到YashanDB
本文探讨了在使用YMP 23.2.1.3迁移MySQL Server字符集为latin1的中文数据至YashanDB时出现乱码的问题。问题根源在于MySQL latin1字符集存放的是实际utf8编码的数据,而YMP尚未支持此类场景。文章提供了两种解决方法:一是通过DBeaver直接迁移表数据;二是将MySQL表数据转换为Insert语句后手动插入YashanDB。同时指出,这两种方法适合单张表迁移,多表迁移可能存在兼容性问题,建议对问题表单独处理。
【YashanDB知识库】字符集latin1的MySQL中文数据如何迁移到YashanDB
Redis和Mysql如何保证数据⼀致?
1. 先更新Mysql,再更新Redis,如果更新Redis失败,可能仍然不⼀致 2. 先删除Redis缓存数据,再更新Mysql,再次查询的时候在将数据添加到缓存中 这种⽅案能解决1 ⽅案的问题,但是在⾼并发下性能较低,⽽且仍然会出现数据不⼀致的问题,⽐如线程1删除了 Redis缓存数据,正在更新Mysql,此时另外⼀个查询再查询,那么就会把Mysql中⽼数据⼜查到 Redis中 1. 使用MQ异步同步, 保证数据的最终一致性 我们项目中会根据业务情况 , 使用不同的方案来解决Redis和Mysql的一致性问题 : 1. 对于一些一致性要求不高的场景 , 不做处理例如 : 用户行为数据 ,
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
基于SQL Server / MySQL进行百万条数据过滤优化方案
对百万级别数据进行高效过滤查询,需要综合使用索引、查询优化、表分区、统计信息和视图等技术手段。通过合理的数据库设计和查询优化,可以显著提升查询性能,确保系统的高效稳定运行。
77 9
MySQL和SQLSugar百万条数据查询分页优化
在面对百万条数据的查询时,优化MySQL和SQLSugar的分页性能是非常重要的。通过合理使用索引、调整查询语句、使用缓存以及采用高效的分页策略,可以显著提高查询效率。本文介绍的技巧和方法,可以为开发人员在数据处理和查询优化中提供有效的指导,提升系统的性能和用户体验。掌握这些技巧后,您可以在处理海量数据时更加游刃有余。
210 9
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
docker拉取MySQL后数据库连接失败解决方案
通过以上方法,可以解决Docker中拉取MySQL镜像后数据库连接失败的常见问题。关键步骤包括确保容器正确启动、配置正确的环境变量、合理设置网络和权限,以及检查主机防火墙设置等。通过逐步排查,可以快速定位并解决连接问题,确保MySQL服务的正常使用。
250 82

热门文章

最新文章