mysql LV快照备份

1.备份流程:

1.锁表——>LV快照——>解锁

特点:锁表时间少,保持数据一致性

 

 

如果是手动备份做快照可以不用后台锁表:

mysql>flush tables with read lock;

#lvcreate --size 100m --snapshot --name snap /dev/CS/mysql      创建一个100M的LV快照,snap 是快照LV的名称,/dev/CS/mysql是数据库的LV

mysql>unlock tables;

#mkdir /LVmysql /mysql_back

#mount /dev/CS/snap  /LVmysql   挂载

#cp -rf /LVmysql/* /mysql_back/       copy出来      copy出来的数据就是数据库数据

#umount /LVmysql

#lvremove  /dev/CS/snap  删除    

 

 

脚本备份,因为锁表是后台不了,因为它是存在于某个会话的,我们使用python让他的会话一直保持。

python脚本

vi mysql_lock.py

#!/usr/bin/python
import MySQLdb
conn=MySQLdb.connect(host='192.168.20.247',user='root',passwd='123456',db='BK',port=3306)
cur=conn.cursor()
sql="flush tables with read lock"
rs=cur.execute(sql)

i=1
while i < 100000000:
i=1

 

创建备份脚本:

vi mysql_lvm.sh

#!/bin/bash

/root/python_lock.py &

lvcreate --size 100m --snapshot --name snap /dev/CS/mysql
id=`ps aux | grep python_lock.py | grep -v grep | awk '{ print $2}'`
kill $id

mount /dev/CS/snap  /LVmysql  

cp -rf /LVmysql/* /mysql_back/   

umount /LVmysql

lvremove  /dev/CS/snap
exit 0

你可能感兴趣的:(mysql LV快照备份)