MySQL基於時間點恢復和快照恢復實例

**時間點恢復例子**
mysqldump -uroot  -p mydb > /root/mydb-`date +"%F"`.sql
//添加數據
use mydb;
CREATE TABLE t1(name CHAR(20));
INSERT INTO t1 VALUES ('Tom'),('Jerry');
DESC stu;
INSERT INTO stu(name,age) VALUES ('Flyn',18);
SELECT * FROM stu;
//刪除數據庫
service mysqld stop
cd /data/
mv mydb /tmp
cp mysql-bin.000009 /root
service mysqld start
//查看數據庫,發現數據庫丟失
SHOW DATABASES;

SHOW BINLOG EVENTS IN 'mysql-bin.000009'\G;
mysqlbinlog /data/mysql-bin.000009

//創建數據庫
CREATE DATABASE mydb;
//數據庫恢復
mysqlbinlog  --start-position 106 --stop-position 504  /data/mysql-bin.000009 > /tmp/mydbrestore.sql
mysql -uroot -p  < /tmp/mydbrestore.sql


  **快照物理備份(時間點備份)**
fdisk /dev/sda
partprobe /dev/sda
pvcreate /dev/sda{5,6}
vgcreate vg0 /dev/sda{5,6}
lvcreate -L 2G -n mydata vg0
mke2fs -j /dev/vg0/mydata
mkdir /mydata
mount /dev/vg0/mydata /mydata
cp -rp /data/* /mydata
cd /mydata

chown mysql.mysql /mydata    //重要
sevice mysqld stop
vim /etc/my.cnf
datadir = /mydata 
service mysqld start

mysql
FLUSH TABLES WITH READ LOCK;
FLUSH LOGS;
lvcreate -L 20M -s -n mysnap /dev/vg0/mydata

mysql
UNLOCK TABLES;
mkdir /mysnap
mount /dev/vg0/mysnap /mysnap
cd /mysnap

mysql
use mydb;
SELECT * FROM t1;
INSERT INTO t1 VALUES ('Wendy'),('Sandy'),('Sunny')
cp -rp /mysnap/mydb /tmp/mydb

umount /mysnap
lvremove /dev/vg0/mysnap

//演示數據丟失
mysql
FLUSH LOGS;
DROP DATABASE mydb;

cd /mydata
service mysqld stop
cp -rp /tmp/mydb mydb
service mysqld start

mysql
SHOW DATABASES;
use mydb;
SELECT * FROM t1;
SHOW BINLOG EVENTS IN 'mysql-bin.000013';
//數據恢復
mysqlbinlog --start-position 106 --stop-position 220 mysql-bin.000013 > /tmp/a.sql
mysql -uroot -p < /tmp/a.sql

mysql
USE mydb;
SELECT * FROM t1;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章