Home  >  Article  >  Database  >  mysqlhotcopy命令详解_MySQL

mysqlhotcopy命令详解_MySQL

WBOY
WBOYOriginal
2016-06-01 13:32:331325browse

bitsCN.com

mysqlhotcopy命令详解

 

前言

mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL 脚本文件,数据库大时,占用系统资源较多,支持常用的MyISAM,innodb

 

mysqlhotcopy只是简单的缓存写入和文件复制的过程,占用资源和备份速度比mysqldump快很多很多。特别适合大的数据库,但需要注意的是:mysqlhotcopy只支持MyISAM 引擎

 

使用mysqlhotcopy需要安装perl支持,因为mysqlhotcopy是prel语言写的。

 

所以使用前先安装一下啊以下三个perl包

 

[plain] 

yum install -y perl perl-DBI perl-DBD-MySQL  

安装好了之后呢,如果你正常安装mysql的话,无论是通过yum,apt-get 还是源码安装,那么就可以直接使用 mysqlhotcopy了

 

mysqlhotcopy原理

mysqlhotcopy是一个Perl脚本,最初由Tim Bunce编写并提供。它使用LOCK TABLES、FLUSH TABLES和cp或scp来快速备份数据库。它是备份数据库或单个表的最快的途径,但它只能运行在数据库目录所在的机器上。mysqlhotcopy只用于备份MyISAM。它运行在Unix和NetWare中。

 

实际操作

这里我个人有个习惯,就是在热备的时候,刷新一下binlog日志,mysqlhotcopy有个--flushlog参数支持这一功能。

 

所以先看一下,数据库里面有哪些binlog日志,如下:

 

mysqlhotcopy命令详解_MySQL

 

查看一下binlog日志此刻的使用到那个具体的binlog文件中,还有处于什么位置,可以通过如下命令:

 

mysqlhotcopy命令详解_MySQL

 

此时,知道了这些,就可以开始热备了

 

$mysqlhotcopy -u user -p password --flushlog djangodb /tmp

 

#注意-u user -p password 之间都要有空格,否则mysqlhotcopy识别不了,这里和mysql,mysqldump命令还是有区别的

 

djangodb 是指库名

 

/tmp 是指要备份的目录位置,这里备份后,会在/tmp下产生一个djangodb的目录,里面有相关的数据文件,如下图:

 

mysqlhotcopy命令详解_MySQL

 

这里还需要注意的是,你得有select,reload(为了flush tables),lock tables权限。

 

好了,备份之后,可以再看一下binlog日志,此刻多了一个binlog日志。

 

mysqlhotcopy命令详解_MySQL

 

binlog日志里面的position位置也改变了。

 

mysqlhotcopy命令详解_MySQL

 

这里--flushlog,主要是为了备份和回复的角度考虑的。

 

一般这样使用就足够了,如果有特别需求,可以看一下啊man mysqlhotcopy的具体参数介绍

bitsCN.com
Statement:
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