Home > Database > Mysql Tutorial > Linux下MySQL服务器的备份与还原

Linux下MySQL服务器的备份与还原

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-07 17:16:09
Original
1143 people have browsed it

基于LVM的mysql数据库物理备份与还原:这种情况要求,我们的msyql数据库必须安装在逻辑卷上。一下方法可以实现几乎热备份(之所以

一,基于LVM的mysql数据库物理备份与还原:

这种情况要求,我们的msyql数据库必须安装在逻辑卷上。一下方法可以实现几乎热备份(之所以这么说是因为当我们创建快照的时候不能往数据库中写数据),要通过LVM的快照来实现。
1,完全备份
进入数据库对所有表施加读锁,此时数据库中的数据只能读不能写。
mysql> flush tables with read lock;
我们通过滚动日志的方式(即再创建一个新的二进制日志)来实现即时点恢复:
mysql> flush logs;
查看当前二进制日志的名字和position,以便实现即时点恢复:
mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000005 |      107 |              |                  |
+------------------+----------+--------------+------------------+
 
mysql>\q
我们的mysql数据文件存放在/dev/myvg/lv_mydata这个逻辑卷上,我们要创建这个逻辑卷的快照,以便备份。执行这个步骤的时候不能有写操作,这就是我们在数据库中加读锁的原因:
#lvcreate –L 100M –n data-snap –s –p r /dev/myvg/lv_mydata
进入mysql数据库对解锁,我们的数据库可以正常被访问了(而在此之后影响数据库的所有操作都将被记录进二进制日志中,所有:完全备份+二进制日志=我们所有的数据):
mysql>unlock tables;
如下操作备份数据库:
#mkdir /snap
#mount /dev/myvg/data-snap /snap
#tar jcf /tmp/all_data-`date +%F-%H-%M-%S`.tar.bz2 /snap/
这就生成了我们的备份文件:all_data-2012-03-18-09-39-06.tar.bz2
#umount /snap
#rm -rf /snap
#lvremove /dev/myvg/data-snap
好了,我们的数据库文件备份成功了。
 
1,备份还原
当数据库产生故障,我们可以用如下方法把备份还原。
为了模拟故障,我删除了一个数据库。
mysql 
我们可以通过以上的备份进行恢复:
对完整备份的还原必须停止mysql服务器:
#service mysqld stop
把我们备份时新建的二进制日志文件复制走,我们需要用其进行即时点恢复:
#cp /mydata/data/mysql-bin.000005 /tmp
#cd /tmp
#tar xf all_data-2012-03-18-09-39-06.tar.bz2
把我们的原数据库文件移走:
#mv /mydata/data /mydata/data.bak
把我们备份的数据库放在/mydata目录:
#mv snap/data /mydata
如果属组属主改变,则更改属主属组为mysql:
#cd /mydata
#chown mysql:mysql /mydata/data
#chown mysql:mysql /mydata/data/*
重启服务,我们的完全备份以恢复:
#service mysqld start
 
即使点的恢复:
#mysqlbinlog /tmp/mysql-bin.000005
如下所示,最后显示的为:
# at 97404
#120318 10:07:13 server id 1  end_log_pos 97489  Query thread_id=454 exec_time=0 error_code=0
SET TIMESTAMP=1332036433/*!*/;
drop database jiaowu
/*!*/;
# at 97489
#120318 10:07:36 server id 1  end_log_pos 97508  Stop
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
因为到97404这个点以后我做的是删除数据库jiaowu操作,也就是我自己模拟的故障,不能让其恢复,故要定义终止点97404:
 
#mysqlbinlog -–stop-position=97404 /tmp/mysql-bin.000005 > /tmp/jiaowu.sql
先临时关闭二进制文件,避免下面执行的恢复即时点操作被记录进二进制日志:
mysql> set sql_log_bin=0;
加载这个文件,使恢复到即时点:
mysql> source /tmp/jiaowu.sql
 
 
 
二,使用Xtrabackup进行MySQL备份

一、安装
 
1、简介
Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。特点:
(1)备份过程快速、可靠;
(2)备份过程不会打断正在执行的事务;
(3)能够基于压缩等功能节约磁盘空间和流量;
(4)自动实现备份检验;
(5)还原速度快;
 
2、安装
其最新版的软件可从 获得。本文基于RHEL5.4的系统,因此,直接下载相应版本的rpm包安装即可,这里不再演示其过程。

linux

Related labels:
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template