1.锁表——>LV快照——>解锁 python
特色:锁表时间少,保持数据一致性 mysql
若是是手动备份作快照能够不用后台锁表: sql
mysql>flush tables with read lock; 数据库
#lvcreate --size 100m --snapshot --name snap /dev/CS/mysql 建立一个100M的LV快照,snap 是快照LV的名称,/dev/CS/mysql是数据库的LV bash
mysql>unlock tables; rem
#mkdir /LVmysql /mysql_back it
#mount /dev/CS/snap /LVmysql 挂载 table
#cp -rf /LVmysql/* /mysql_back/ copy出来 copy出来的数据就是数据库数据 import
#umount /LVmysql awk
#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