zoukankan      html  css  js  c++  java
  • 快照方式备份MySQL数据库及举例

    快照方式备份MySQL数据库及举例

     

    一、创建逻辑卷

    依照如下连接的文档创建一个逻辑卷
    要求:物理卷20G;卷组名为vg0;逻辑卷2G,逻辑卷名为mydata
    创建逻辑卷挂载点,并挂载之
    # mkdir /mydata
    # mount /dev/vgo/mydata /mydata

    二、安装MySQL数据库

    如果机器已装有mysql,则此步可省略
    只需修改mysql的配置文件中的datadir的值改为/mysata
    然后将原数据库的数据文件全部copy至/mydata文件下,即转移数据库所在位置
    修改/mydata目录及其内容的属主属组
    然后重启mydql服务
    如果需要重新安装,可依如下文档进行安装:
    同样安装完成后,只需将mysql配置文件中的datadir的值改为/mydata
    操作如下:
    # sed -i ‘s/ ^datadir.*$/datadir=/mydata/g’ /etc/my.cnf
    # service mysqld restart
     
    修改/mydata目录及其内容的属主属组
    # chown -R :mysql /mydata/*
    # chown mydql:mysql /mydql
     
    启动mysql服务
    # service mysqld start

    三、创建快照

    锁定所有表先
    # mydql
    >FLUSH TABLES WITH READ LOCK;
    >q
     
    创建快照
    # pvvreat -L 20M -s -n mysnap /dev/vgo/mydata
    注:此命令详细解释可参照如下文档:
    解锁表
    # mysql
    >UNLOCK TABLES;
    >q
    创建快照挂载点,并挂载之
    # mkdir /mysnap
    # mount /dev/vgo/mysnap
    # ls
    发现此时/mysnap目录下的文件和/mydata下的文件一模一样
    此时,在原卷上做任何修改都不会影响/mysnap中的文件

    四、测试

    对数据库进行一些修改
    # mysql
    >CREATE DATABASE mydb;
    >USE mydb;
    >CREATE TABLE sanptest (
    >name char(30),
    >id   int);
    >q
    现在从快照目录下复制mydb文件到其它目录下,进行物理备份
    注:生产应用中应该备份整个数据库
     
    # cd /mysanp
    # cp -rp mydb  /tmp/
     
    卸载快照卷
    # umount /mysnap
    # lvremove /dev/vgo/mysnap
     
    下面对数据库进行一些删除操作
    # mydql
    >FLUSH LOGS;
    >DROP DATABASE mydb;
    >q
    此时,/mydata目录下已没有mydb文件
     
     
    现在将刚才物理备份的的mydb文件复制回来
    # copy -rp /tmp/mydb /mydata
    # service mysqld restart
     
     
    查看数据库
    # mysql
    >SHOW DATABASES;
    发现和做修改之前的的数据库一模一样,没有刚创建的mydb库
    也就是说快照备份只保存做快照那一时刻的数据信息
     
     
     
    此时,若想找回快照之后失去的数据,刚需要用的二进制日志
    查看二进制日志
    # mysql
    >SHOW BINLOG EVENTS IN’mysql-bin.0000X’;
    这里X表示数据,数字不同,日志内容也不一样,数字越大越接近现在
    这些日志全放在/mydata文件下
    显示大致如下:

    如我们想从二进制日志文件mysql-bin.0000013中恢复一个insert操作,就可以用如下命令:
    # mysqlbinlog –start-position 106 –end-position 220 mysql-bin.0000013 > /tmp/a.mysql
    # mysql -uroot -p < /tmp/a.sql
    显示结果如下:

  • 相关阅读:
    Java 中的悲观锁和乐观锁的实现
    乐观锁和悲观锁的区别
    理解RESTful架构
    修复Linux下curl等无法使用 Let's Encrypt 证书
    呕心沥血 AR VR 好资源分享
    linux服务器出现大量TIME_WAIT的解决方法
    Ubuntu系统 无法删除 redis-server
    Python Flask jsonify a Decimal Error
    微信小程序 订阅消息 对接详细记录
    FTP时显示500 Illegal PORT command的解决
  • 原文地址:https://www.cnblogs.com/L-H-R-X-hehe/p/3830714.html
Copyright © 2011-2022 走看看