mysql的快照备份及恢复

1 、创建 lvm 分区 (sda5 ada6 大小都为 20G 类型 8e)
       partprobe /dev/sda
       pvcreate /dec/sda{5,6}
       vgcreate vg0 /dev/sda{5,6}
       vgdisplay
       lvcreate -L 4G  -n mydata vg0
       mk2efs -j /dev/vg0/mydata
       mkdir /mydata
       chown -R mysql:mysql /mydata
       mount /dev/vg0/mydata /mydata
       开机自动启动 编辑 /etc/fstab
       mysql 数据指定 /mydata
2 、创建快照:
       进入 mysql 命令模式:
       flush tables with read lock 数据会同步到磁盘
       flush logs
       回到系统命令行模式:
       lvcreate -L 40M -s -n mysnap /dev/vg0/mydata
       mysql> unlock tables;
3 、备份:
       mkdir /mysnap
       mount /dev/vg0/mysnap /mysnap
       源数据的改变快照目录不会显示更新数据 可以测试:
       mydb.t1 表里插入数据
       开始备份:
              cd /mysnap
              cp -rp mydb 数据名 /tmp/mydb
              ls /tmp/mydb
       移除快照 umount /mysnap
              lvremove /dev/vg0/mysnap
4 、恢复:
       模拟数据库损坏:
              mysql :
                     flush logs;
                     drop database mydb;
       恢复: service mysqld stop
              cp -rp /tmp/mydb /mydata/mydb
              service mysqld start
              连接 mysql
                 show databases;
                  select * from mydb.t1  会发现没有新插入的数据,可以做时间点恢复
              ls /mydata 查看最近一次更新的二进制文件
                 show binlog events in 'mysql-bin.000013'; 查看最近的日志文件找到插入的数据的文件,
                                   假如为 mysql-bin.000013 ,记下其开始和结尾的日志 pos
              回到系统命令模式:
                     cd /mydata
                     mysqlbinlog --start-posirion 106 ---stop-position 220 mysql-bin.000013 >/tmp/mydb.sql
                     mysql -uroot -p < /tmp/mydb.sql
                     连接 mysql
                     use mydb;
                     select * from t1 会显示新插入的数据
      
注意:备份时也要备份 binlog 日志文件,防止意外的数据库崩溃不能恢复
 

你可能感兴趣的:(mysql,数据库,mysql,职场,快照,休闲,Snap)