1、创建lvm分区(sda5 ada6 大小都为20G 类型8e)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
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日志文件,防止意外的数据库崩溃不能恢复
转载于:https://blog.51cto.com/jingmu/516655