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