​mysql备份之lvm

mysql备份之lvm

新建一个lvm磁盘,这里我建的lv为mydatalv,挂载到了/data下

[root@localhost ~]# lvs
  LV       VG     Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert                                                  
  mydatalv mydata -wi-ao---- 1.00g   
[root@localhost ~]# df -h
文件系统                     容量  已用  可用 已用% 挂载点
/dev/mapper/mydata-mydatalv  976M  2.6M  907M    1% /data

将原数据库文件复制到/data目录下

[root@localhost ~]# cp -a /var/lib/mysql /data/

修改配置文件,将mysql数据库文件放在lvm盘中,二进制文件放在非lvm盘的/var/lib/mysql/目录下

[root@ns1 ~]# vim /etc/my.cnf
    [mysqld]
    log_bin=/var/lib/mysql/mysql-bin
    datadir=/data/mysql
[root@localhost ~]# service mariadb restart
[root@localhost ~]# ls /data/mysql
aria_log.00000001  ibdata1      ib_logfile1  mysql-bin.000001  mysql-bin.000003  performance_schema
aria_log_control   ib_logfile0  mysql        mysql-bin.000002  mysql-bin.index   test
可以看到重启后数据库文件已存放在了/data/mysql目录中了

对mysql进行锁表备份

[root@localhost ~]# mysql -e 'flush tables with read lock;' 锁表
[root@localhost ~]# mysql -e 'flush logs;'          对日志进行滚动,
[root@localhost ~]# mysql -e 'show master status;' > /root/back.$(date +%F+%T)
[root@localhost ~]# ls
back.2016-07-13+10:14:29

对lv创建快照

[root@localhost ~]# lvcreate -L 1G -n mysqlback -p r -s /dev/mydata/mydatalv

释放锁

[root@localhost ~]# mysql -e 'unlock tables;'

在别的磁盘上创建备份目录,只读挂载快照后备份至备份目录

[root@localhost ~]# mkdir /myback
[root@localhost ~]# mount -r /dev/mydata/mysqlback /mnt
[root@localhost ~]# cp -a /mnt/mysql /myback

修改表内容,然后删除掉数据库文件内容即/data/mysql中的内容

[root@localhost ~]# mysql
    MariaDB [hellodb]> use hellodb;
    MariaDB [hellodb]> insert into classes (class,numofstu) values ('xxoo',39);
[root@localhost ~]# rm -rf /data/*

修改配置文件中二进制日志和数据库文件的位置

[root@localhost ~]# vim /etc/my.cnf
    [mysqld]
    log_bin=/data/mysql/mysql-bin
    datadir=/data/mysql

利用/myback/中的内容还原

[root@localhost ~]# cp -a /myback/* /data/
[root@localhost ~]# service mariadb restart

利用二进制日志还原快照后的操作,由下面这个文件来查看快照执行时二进制日志的位置

[root@localhost ~]# cat back.2016-07-13+10\:14\:29 
File    Position    Binlog_Do_DB    Binlog_Ignore_DB
mysql-bin.000014        245

将000014中245之后的操作做成sql文件,进行还原

[root@localhost ~]# mysqlbinlog --start-position=245 /var/lib/mysql/mysql-bin.000014 > binlog.sql
[root@localhost ~]# mysql < /root/binlog.sql

查看恢复情况

[root@localhost ~]# mysql
    MariaDB [(none)]> use hellodb;
    MariaDB [hellodb]> select * from classes;
    +---------+----------------+----------+
    | ClassID | Class          | NumOfStu |
    +---------+----------------+----------+
    |       1 | Shaolin Pai    |       10 |
    |       2 | Emei Pai       |        7 |
    |       3 | QingCheng Pai  |       11 |
    |       4 | Wudang Pai     |       12 |
    |       5 | Riyue Shenjiao |       31 |
    |       6 | Lianshan Pai   |       27 |
    |       7 | Ming Jiao      |       27 |
    |       8 | Xiaoyao Pai    |       15 |
    |       9 | xxoo           |       39 |
    +---------+----------------+----------+
    9 rows in set (0.00 sec)

原创文章,作者:N17_信风,如若转载,请注明出处:http://www.178linux.com/24866

赞 (0)
N17_信风N17_信风
上一篇 2016-07-19 09:06
下一篇 2016-07-19 09:12

相关推荐

  • N26-第五周作业

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; grep ‘^[[:space:]]\+’ /boot/grub2/grub.cfg 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; grep ‘^#[[:space:]]\+’ /etc/rc.d/rc.…

    Linux干货 2017-03-06
  • 基于Cobbler实现多版本操作系统自动部署

    前言     在生产环境中,当需要批量部署几十甚至上百台服务器时,实现自动化安装操作系统尤为重要,按照传统的光盘引导安装是不可想象的;此前我们通过pxe+kickstart简单实现了自动化安装,但只能实现单一版本安装,当需要部署不同版本或不同引导模式(BIOS、EFI)时,此种方式就不够灵活。而Cobbler正是为了解…

    Linux干货 2015-08-11
  • MySQL/MariaDB数据库备份与恢复

    前言 数据库一般存放着企业最为重要的数据,它关系到企业业务能否正常运转,数据库服务器总会遇到一些不可抗拒因素,导致数据丢失或损坏,而数据库备份可以帮助我们避免由于各种原因造成的数据丢失或着数据库的其他问题。本文将讲解MySQL/MariaDB数据库的几种备份方法。 基础知识 备份类型 完全备份:备份整个数据库 部分备份:仅备份其中的一张表或多张表 增量备份:…

    系统运维 2015-05-23
  • vim练习题

    #复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符vim /tmp/profile%s@^[[:space:]]+@@g#复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首添加一个#号vim…

    Linux干货 2017-06-03
  • Linux基本命令总结

    一.目录相关的命令 mkdir rmdir tree cd ls pwd   二.文件相关命令 less cat more tac rev stat head tail cut grep cp mv rm touch rename   三.分析文本的工具 wc sort uniq cut    

    2017-09-10
  • echo显示闪烁,screen用法及显示时间的前后

    我们这门今天学习的一些主要内容 标准的命令的格式 命令(COMMAND)  [选项(OPTIONS)….[参数(ARGUMENTS…)] 选项:启用或者关闭命令的某个或某些功能 参数:命令作用的对象,比如文件名,用户名等 首先我们来统计一下学习到的linux的一些基础的命令 who  查询当前用户 hostname 显…

    Linux干货 2016-08-04