前言: lvm2实现热备的原理是基于lvm2的快照功能,lvm2可以实现数据集不大的情况下的热备。

实战过程如下:这里的演示是在一台Mariadb服务器上进行创建快照,将快照中的文件scp到备份服务器上的Mariadb的数据目录中,这样就实现了基于lvm2的备份
 
 
    (1)新添加一块磁盘,将磁盘进行分区之后,先在分区上创建pv物理卷,然后在pv物理卷上创建vg卷组,之后在vg卷组上创建lv逻辑卷,将lv逻辑卷创建文件系统(使用ext4文件系统),将创建了文件系统的lv逻辑卷挂载至数据库目录,这里最好是创建两个lv逻辑卷,两个lv逻辑卷可以实现将数据库目录与二进制日志文件分开,分别放在不同的lv逻辑卷上,那么当使用lvcreate命令进行快照的时候,只对数据库目录进行快照,不对二进制文件进行快照,可以将
 
    0: 添加一块硬盘,sdb给个40G就ok
 
    1:fdisk /dev/sdb  # 创建分区/dev/sdb1、/dev/sdb2,设置分区类型为linux lvm
 
    2:partx -a /dev/sdb # 让内核重读
 
    3:pvcreate /dev/sdb1 /dev/sdb2 # 创建两个pv
 
    4:vgcreate myvg /dev/sdb1 /dev/sdb2 # 在两个pv上创建一个vg
 
    5:lvcreate -L 20G -n mysql_data myvg # 创建一个名为mysql_data的逻辑卷
 
    6:lvcreate -L 19.9G -n mysql_binlog myvg # 创建一个名为mysql_binlog的逻辑卷
 
    7:mkfs -t ext4 /dev/myvg/mysql_data  # 在mysql_data的逻辑卷逻辑卷上创建文件系统
 
    8:mkfs -t ext4 /dev/myvg/mysql_binlog # 在mysql_binlog的逻辑卷上创建文件系统
 
    9:mkdir -pv /data/{mysql,binlog} # 创建数据库目录和二进制文件目录
 
    10:mount /dev/myvg/mysql_data /data/mysql # 挂载数据库目录
 
    11:mount /dev/myvg/mysql_binlog  /data/binlog # 挂载数据库目录
 
    12:chown -R mysql.mysql /data  # 让mysql用户可以读写
 
    13:修改/etc/my.cnf配置文件:log-bin=/data/binlog/mysql-bin 和 datadir = /data/mysql
 
    14:cd /usr/local/mysql/;
 
    ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql # 如果是二级制或者编译安装的Mariadb这样初始化数据库,如果是yum安装的Mariadb,那么在数据库重启的时候自动hui
 
    15:systemctl start mariadb.service # 启动Mariadb
 
 
 
    (2)在数据库依然提供服务的情况下,首先登入mysql数据库,请求锁定所有的表,添加读锁,这个时候所有的数据表只能够读数据,不能够写数据
 
 
    1:flush tables with read lock;
 
 
 
    (3)让二进制日志文件滚动跟新,并且记录新的二进制文件的开始位置,那么数据库新的数据更改操作将记录到新的二进制文件中,做增量备份的时候需要再次滚动二进制日志,并且导出当前的日志为SQL文件
 
    # 这里的日志滚动其实可以不要
 
    flush logs;
 
 
 
    (4)使用lvcreate 命令创建快照
 
    查看现在数据目录有多大了,如果是40M,那么创建快照的时候给个50M就ok了
 
    du -sh /data/mysql
 
 
    创建名为lvm_snap的快照 ,-s 表示创建快照,-p r 表示快照的权限是只读的,-n 表示快照的名,此时就会在生成一个/dev/myvg/lvm_snap的快照
 
    lvcreate -L 50M -s -p r -n lvm_snap /dev/myvg/mysql_data
 
 
    (5)释放读锁,MySQL服务器可以读写正常工作,此时立马让日志滚动一下,让之后的所有操作都记录在新的二进制文件中
 
 
    unlock tables;
 
    flush tables
 
    (6)将快照挂载,将数据库目录通过文件系统命令cp -a等不修改属性和时间戳的情况下拷贝
 
 
    mount /dev/myvg/lvm_snap /mnt
 
    scp -rp /mnt/* 192.168.23.32:/data/mysql
 
 
    # 上课的时候试一试这里是否需要拷贝二进制文件,如果不拷贝二进制文件,那么备份服务器使用的二进制文件应该是从第一个开始的。但是,现在只需要备份数据,所以拷贝二进制文件也是可以的。
 
    scp -rp /data/binlog/* 192.168.23.32:/data/binlog/
 
 
    此时在192.168.23.32这台Mariadb备份服务器中,已经存在Mariadb的数据目录/data/mysql和二进制目录/data/binlog/,且配置文件/etc/my.cnf都已经配置完毕。在这个时候,还需要修改/data目录的属主和属组,在192.168.23.32这台Mariadb备份服务器中操作如下:
 
    chown -R mysql.mysql /data
 
 
    (7)使用客户端命令mysqlbinlog 导出SQL文件
 
 
        mysqlbinlog /data/binlog/`mysql -p123456 -e 'show master status;' | grep mysql-bin | awk '{print $1}'` > increment.sql
 
 
    (8)使用scp命令将数据库目录、导出的SQL文件拷贝到备份的MySQL服务器上,在备份的MySQL服务器上将数据库目录放在对应的数据库目录,并且导入增量备份的SQL文件
 
 
        scp -rp increment1.sql 192.168.23.11:/root/
 
        mysql -p123456  < increment.sql
 
 
    (9)之后的备份,均使用二进制文件做增量备份即可,备份前切记先滚动新的日志文件,再将当前二进制日志文件导出为SQL文件即可
 
 
        mysql -p123456 -e 'flush logs;'
 
        mysqlbinlog /data/binlog/`mysql -p123456 -e 'show master status;' | grep mysql-bin | awk '{print $1}'` > increment2.sql
 
        scp increment2.sql 192.168.23.32:/root/
 
 
        # 在备份的服务器上执行导入增量的sql备份文件
 
        mysql -p123456 increment2.sql

MySQL 基于lvm2的备份实战演练 (快照备份)的更多相关文章

  1. MySQL基于LVM快照的备份恢复(临时)

    目录1.数据库全备份2.准备LVM卷3.数据恢复到LVM卷4.基于LVM快照备份数据5.数据灾难恢复6.总结 写在前面:测试环境中已安装有mysql 5.5.36数据库,但数据目录没有存放在LVM卷, ...

  2. mysql 基于lvm快照的备份

    1.查看磁盘数 ls /dev/ | grep sd 2.快照备份 pvcreate /dev/sdb #制作成物理卷vgcreate testvg /dev/sdblvcreate -L200M - ...

  3. MySQL基于mysqldump及lvmsnapshot备份恢复

    一.备份对象 数据 配置文件 代码:存储过程,存储函数,触发器 跟复制相关的配置 二进制日志文件 二.备份工具 mysqldump:逻辑备份工具 InnoDB热备.MyISAM温备.Aria温备 备份 ...

  4. MySQL 基于xtrabackup备份—热备工具

    xtrabackup(仅对InnoDB存储引擎支持热备) percona公司开发 改进的MySQL分支:percona-server 存储引擎改进:InnoDB —> XtraDB 使用本地的R ...

  5. lvm快照备份mysql

    快照备份原理(从其他博客看的): 原理:通过lvm快照给lvm真身拍个照片,当lvm真身发送改变时,lvm快照把lvm真身改变之前的内容存放在快照上,这样在lvm快照有效的这段时间内,我们看到的lvm ...

  6. MySQL(十四)之数据备份与还原

    前言 上一篇分享了关于MySQL事务的知识,在我们数据库中最重要的就是数据了,所以数据的备份就显的特别的重要! 为什么要备份数据? 在生产环境中我们数据库可能会遭遇各种各样的不测从而导致数据丢失, 大 ...

  7. MySQL常用的备份方式与备份工具简介

    一.MySQL备份方式与备份类型 1.备份的必要性 再生产环境中,为了防止硬件故障.软件故障.自然灾害.误操作等各种原因导致的数据库数据丢失后能恢复到事故之前的状态,我们需要对数据库进行备份和恢复操作 ...

  8. (4.15)mysql备份还原——物理备份之XtraBackup的下载与安装

    关键词:mysql物理备份,XtraBackup,XtraBackup安装,XtraBackup下载 实践链接:https://www.cnblogs.com/gered/p/11147193.htm ...

  9. MariaDB之基于Percona Xtrabackup备份大数据库[完整备份与增量备份]

    MariaDB之基于Percona Xtrabackup备份大数据库[完整备份与增量备份] 1.Xtrabackup的安装 percona-xtrabackup-2.2.3-4982.el6.x86_ ...

随机推荐

  1. python自学之第一章——列表(一)

    1.列表是什么? 列表[list]:列表是由一系列特定顺序排列的元素组成. 列表由[]表示 eg: a = ['jackal','jax';'jack','jeef','jacky'] print(a ...

  2. conda与pip的关系

    最近在搭建平台的时候,遇到了conda,具体尝试使用之后觉得conda还是非常好用的.他会交代清楚相互有依赖的包是什么,确认之后才会执行指令.要比pip好很多. 普通按照python 的时候一般都是自 ...

  3. unix文件共享

    UNIX系统支持在不同的进程间共享打开文件.内核使用3种数据结构表示打开文件,他们之间的关系决定了在文件共享方面一个进程对另一个进程产生的影响. (1)每个进程在进程表中都有一个记录项,记录项中包含一 ...

  4. 2016-2017-2 《Java程序设计》课程总结 - 20155214

    2016-2017-2 <Java程序设计>课程总结 - 20155214 目录 一.每周学习总结及实验报告链接汇总 二.代码托管 给出statistic.sh的运行结果,说明本学期的代码 ...

  5. 2016-2017-2 20155325实验二《Java面向对象程序设计》实验报告

    实验二 面向对象程序设计-1 答案截图 码云代码链接 链接1 实验遇到的问题和解决过程 问题1:在plugins里搜索不到JUnitGenerator V2.0只能搜到Generste Teats 问 ...

  6. html 第一行不缩进,第二行缩进,文字对齐

    <p style="text-indent: -7rem;margin-left: 7rem;"> <img src="images/记录要求.png& ...

  7. VS2010 不显示 最近使用的项目 解决办法

    昨天重装了VS2010,然后开了项目看了下今天早上再打开发现起始页近使用项目列表是空白的,每次打开项目都要去到指定目录去找解决方案才能打开,感觉很麻烦,在网上找了下解决方案,解决步骤下:菜单 —— 运 ...

  8. 四、利用EnterpriseFrameWork快速开发基于WCF为中间件的三层结构系统

    回<[开源]EnterpriseFrameWork框架系列文章索引> EnterpriseFrameWork框架实例源代码下载: 实例下载 本章内容与上一张<利用Enterprise ...

  9. lua 中的 loadfile、dofile和require的调用

    文件 hello.lua print("hello") function say() print("hello world") end 1. 介绍: dofil ...

  10. 近中期3D编程研究目标

    近几年一直在用业余时间研究3D编程,研究的中期目标是建立一个实用的开源3D编程框架.3D编程技术最直接的应用是开发游戏,所以3D编程框架也就是3D游戏开发框架.在我看来,游戏是否好玩的关键是能否为玩家 ...