一、步驟
1、首先對(duì)數(shù)據(jù)庫(kù)施加讀鎖
2、記錄二進(jìn)制日志文件的文件名和事件位置
3、創(chuàng)建快照卷
4、解鎖數(shù)據(jù)庫(kù)
5、掛載快照卷,復(fù)制數(shù)據(jù)文件
6、刪除快照卷
二、準(zhǔn)備工作
首先,要對(duì)LVM的快照有所了解(http://svenman.blog.51cto.com/6867097/1357510這篇博客寫了LVM的快照),并將數(shù)據(jù)文件放在LVM上。
其次,在數(shù)據(jù)庫(kù)中新建一張測(cè)試用的表
1 2 3 4 5 6 7 8 9 10 11 12 | mysql> select * from data.info; +-----+-------+------+ | sid | name | age | +-----+-------+------+ | 1 | tom | 25 | | 2 | jerry | 26 | | 3 | jim | 40 | | 4 | ccr | 34 | | 5 | dss | 21 | | 6 | safe | 44 | +-----+-------+------+ 6 rows in set (0.00 sec) |
三、開始備份
1. 首先對(duì)數(shù)據(jù)庫(kù)施加讀鎖
1 2 | mysql> flush tables with read lock; Query OK, 0 rows affected (0.00 sec) |
2. 記錄二進(jìn)制日志文件的文件名和事件位置
1 2 3 4 5 6 7 | mysql> show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000002 | 964 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec) |
3. 創(chuàng)建快照卷
1 2 3 4 5 6 7 8 9 10 11 12 | [root@mysql ~]# cat /etc/my.cnf [client] user=root password=mysql [mysqld] datadir=/mysql/data socket=/tmp/mysql.sock user=mysql [root@mysql ~]# df -Th /dev/mapper/myvg-mydata ext4 689M 128M 527M 20% /mysql #可以看到mysql的數(shù)據(jù)放在myvg下的mydata這個(gè)邏輯卷上 |
1 2 3 | [root@mysql ~]# lvcreate -n snap-data -L 100M -p r -s /dev/myvg/mydata Logical volume "snap-data" created #快照完成 |
4. 解鎖數(shù)據(jù)庫(kù)
1 2 | mysql> unlock tables; Query OK, 0 rows affected (0.00 sec) |
5. 掛載快照卷,復(fù)制數(shù)據(jù)文件
1 2 3 4 5 6 7 8 | [root@mysql mnt]# mount -o ro /dev/myvg/snap-data /mnt/ [root@mysql mnt]# cd /mnt/ [root@mysql mnt]# ls data lost+found [root@mysql mnt]# tar -jcvf /root/mysql-backup-`date +%F`.tar.bz2 data/ [root@mysql mnt]# cd ~ [root@mysql ~]# ls anaconda-ks.cfg install.log install.log.syslog mysql-backup-2014-02-22.tar.bz2 |
6. 刪除快照卷
1 2 3 4 | [root@mysql ~]# umount /mnt/ [root@mysql ~]# lvremove /dev/myvg/snap-data Do you really want to remove active logical volume snap-data? [y/n]: y Logical volume "snap-data" successfully removed |
這樣就備份完成了。
三、恢復(fù)測(cè)試
1. 在新建的info表中再插入2行數(shù)據(jù)
1 2 3 | mysql> insert into info(name,age) values('seven',30),('eight',49); Query OK, 2 rows affected (0.01 sec) Records: 2 Duplicates: 0 Warnings: 0 |
2. 備份上次lvm快照開始的position號(hào)以后的二進(jìn)制文件
1 | [root@mysql ~]# mysqlbinlog --start-position=964 /mysql/data/mysql-bin.000002 > /root/bak.sql |
mysqlbinlog的用法:
A.指定恢復(fù)時(shí)間 --start-date和--stop-date選項(xiàng),格式“2014-2-22 16:33:04”
B.指定恢復(fù)位置 --start-position和--stop-position選項(xiàng)
3. 刪除所有文件
1 2 | [root@mysql ~]# service mysqld stop [root@mysql ~]# rm /mysql/* -fr |
4. 開始恢復(fù)(LVM完全備份的恢復(fù))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [root@mysql ~]# tar -jxvf mysql-backup-2014-02-22.tar.bz2 -C /mysql/ [root@mysql ~]# service mysqld start Starting MySQL [ OK ] [root@mysql ~]# mysql mysql> select * from data.info; +-----+-------+------+ | sid | name | age | +-----+-------+------+ | 1 | tom | 25 | | 2 | jerry | 26 | | 3 | jim | 40 | | 4 | ccr | 34 | | 5 | dss | 21 | | 6 | safe | 44 | +-----+-------+------+ 6 rows in set (0.00 sec) |
進(jìn)行LVM快照后,我們新插入的數(shù)據(jù)沒有恢復(fù)過(guò)來(lái)
5. 利用二進(jìn)制文件基于時(shí)間點(diǎn)恢復(fù)(增量備份的恢復(fù))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | mysql> source /root/bak.sql #這是第2步從二進(jìn)制文件中導(dǎo)出的腳本 mysql> select * from data.info; +-----+-------+------+ | sid | name | age | +-----+-------+------+ | 1 | tom | 25 | | 2 | jerry | 26 | | 3 | jim | 40 | | 4 | ccr | 34 | | 5 | dss | 21 | | 6 | safe | 44 | | 7 | seven | 30 | | 8 | eight | 49 | +-----+-------+------+ 8 rows in set (0.00 sec) #新插入的2行數(shù)據(jù)也恢復(fù)了 |
這樣,完全備份+增量備份的備份和恢復(fù)就完成了。
附:
邏輯備份工具mysqldump介紹
-u #指定用戶名
-p #指定用戶密碼
-h #指定主機(jī)地址
-A|--all-databases #備份所有數(shù)據(jù)庫(kù)
--databases #備份指定數(shù)據(jù)庫(kù)
--single-transcation #基于此項(xiàng)可以實(shí)現(xiàn)對(duì)InnoDB表做熱備份
--lock-a--flush-logs #備份之前刷新日志
--lock-all-tables #執(zhí)行備份時(shí)為所有表請(qǐng)求加鎖
-E|--events #備份事件調(diào)度器代碼
-R|--routines #備份存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)
--triggers #備份觸發(fā)器
--master-data=2 #該選項(xiàng)將會(huì)記錄binlog的日志位置與文件名并追加到文件中,如果為1將會(huì)輸出CHANGE
1 2 3 4 5 6 7 | #導(dǎo)出全庫(kù) mysqldump -u root -p --all-databases > dump.sql #導(dǎo)出單個(gè)庫(kù),或者單個(gè)庫(kù)中的某個(gè)表 mysqldump --u root -p data > dump.sql mysqldump --u root -p data info > dump.sql #導(dǎo)出多個(gè)數(shù)據(jù)庫(kù) mysqldump --u root -p --databases data mysql > dump.sql |
- mysql數(shù)據(jù)庫(kù)64位【支持win7/win10】5.7.17.0 官方中文最新版
- mysql數(shù)據(jù)庫(kù)64位是最新的mysql數(shù)據(jù)庫(kù)版本了,同時(shí)也是支持中文的版本,在現(xiàn)在這個(gè)版本是可以支持win10的系統(tǒng)以及win8.1的版本,有需要體驗(yàn)下這個(gè)mysql數(shù)據(jù)庫(kù)64位怎么樣的,可以先來(lái)本站免費(fèi)的下載試試效果怎么樣!
語(yǔ)言:
中文大。
350.9M類型:
數(shù)據(jù)庫(kù)更新:
2016-12-13推薦等級(jí):
廠商: