MySQL中怎么实现实时在线备份恢复
今天就跟大家聊聊有关MySQL中怎么实现实时在线备份恢复,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
1.主库准备测试数据
mysql>createdatabasecnfol;QueryOK,1rowaffected(0.00sec)mysql>createtablecnfol.t(idintprimarykey);QueryOK,0rowsaffected(0.02sec)mysql>insertintocnfol.tselect1;QueryOK,1rowaffected(0.01sec)Records:1Duplicates:0Warnings:0mysql>insertintocnfol.tselect2;QueryOK,1rowaffected(0.00sec)Records:1Duplicates:0Warnings:0
到备库确认:
mysql>showdatabases;+--------------------+|Database|+--------------------+|information_schema||cnfol||mysql||test|+--------------------+4rowsinset(0.00sec)mysql>select*fromcnfol.t;+----+|id|+----+|1||2|+----+2rowsinset(0.00sec)
2.加个全局读锁 在备库
mysql>flushtableswithreadlock;QueryOK,0rowsaffected(0.00sec)
3.为备库所在分区创建快照
[root@localhost~]#lvcreate--size1G--snapshot--namebackup_mysql/dev/vg/mysqlLogicalvolume"backup_mysql"created[root@localhost~]#lvsLVVGAttrLSizeOriginsnap%MoveLogCopy%Convertbackup_mysqlvgswi-a-1.00Gmysql0.00mysqlvgowi-ao2.00G
4.获取二进制日志坐标
在备库:
mysql>showmasterstatus;+------------------+----------+--------------+------------------+|File|Position|Binlog_Do_DB|Binlog_Ignore_DB|+------------------+----------+--------------+------------------+|mysql-bin.000003|727|||+------------------+----------+--------------+------------------+1rowinset(0.00sec)
解锁 在备库:
mysql>unlocktables;QueryOK,0rowsaffected(0.00sec)
5.挂载快照
[root@localhost~]#mount/dev/vg/backup_mysql/mnt/backup[root@localhost~]#cd/mnt/backup/mysql/data/cnfol/&&ls-alh总计32Kdrwx------2mysqldba4.0K10-1409:57.drwx------5mysqldba4.0K10-1409:57..-rw-rw----1mysqldba6110-1409:57db.opt-rw-rw----1mysqldba8.4K10-1409:57t.frm-rw-rw----1mysqldba1410-1409:57t.MYD-rw-rw----1mysqldba2.0K10-1410:06t.MYI
6.主库某无经验DBA误操作
mysql>dropdatabasecnfol;QueryOK,1rowaffected(0.05sec)
记录下此时时间:2013-10-14 10:17:10
备库确认是否存在库cnfol:
mysql>showdatabases;+--------------------+|Database|+--------------------+|information_schema||mysql||test|+--------------------+3rowsinset(0.01sec)
7.备份快照
[root@localhostbackup]#pwd/mnt/backup[root@localhostbackup]#tar-jcv-f/mnt/snapshot/mysql.tar.bz2*
这里做备份的原因有2点 * 其一,昂贵的IO,因为磁头要在快照区和系统区来回跑 * 其二,快照区空间不足,因为是COW原理
8.删除快照
[root@localhost~]#umount/mnt/backup[root@localhost~]#lvremove--force/dev/vg/backup_mysqlLogicalvolume"backup_mysql"successfullyremoved
9.格式化备库所在分区
[mysql@localhost~]$mysqladmin-uroot-poracleshutdown13101410:32:40mysqld_safemysqldfrompidfile/mnt/lvm/mysql/data/localhost.localdomain.pidended[1]+Donemysqld_safe[root@localhost~]#umount/mnt/lvm[root@localhost~]#mkfs-text3/dev/vg/mysql[root@localhost~]#mount/dev/vg/mysql/mnt/lvm[root@localhost~]#lvsLVVGAttrLSizeOriginsnap%MoveLogCopy%Convertmysqlvg-wi-ao2.00G[root@localhost~]#vgsVG#PV#LV#SNAttrVSizeVFreevg410wz--n-3.81G1.81G
10.解压缩快照到备库所在分区
#tar-jxv-f/mnt/snapshot/mysql.tar.bz2-C/mnt/lvm/[root@localhostlvm]#pwd/mnt/lvm[root@localhostlvm]#lslost+foundmysql
11.启动MySQL
12.利用binlog执行point-in-time恢复
[mysql@localhost~]$mysqlbinlog--stop-datetime="2013-10-1410:17:10"/mnt/lvm/mysql/data/mysql-bin.000003|mysql-uroot-poracle
13.确认数据
mysql>showdatabases;+--------------------+|Database|+--------------------+|information_schema||cnfol||mysql||test|+--------------------+4rowsinset(0.00sec)mysql>select*fromcnfol.t;+----+|id|+----+|1||2|+----+2rowsinset(0.00sec)
看完上述内容,你们对MySQL中怎么实现实时在线备份恢复有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。