备份和拷贝MYSQL数据库(2)

2008-02-23 07:41:58来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

mysqldump 的其他选项包括如下所示的几个:

--flush-log 和--lock-tables 的结合有助于检查数据库。--lock-table 锁定任何正在转储的表,而--flush-log 关闭并重新打开更新日志文档。假如正在产生后续的更新日志,则新的更新日志将只包含从备份的那一点开始修改数据库的查询。这时检查对于该备份时间的更新日志的检查点(然而,锁定任何的表对于备份期间客户机访问来说不太好,假如您有需要执行更新操作的客户机的话)。

假如用--flush-logs 检查对于备份时间的更新日志检查点,最好转储整个数据库。假如转储单个文档,则将更新日志的检查点和备份文档同步是比较难的。在恢复操作中,您通常在总数据库( per- d a t a b a s e)的基础上抽取更新日志的内容。对于抽取单个表的更新日志来说没有选项,因此您必须自己抽取他们。

缺省配置时,mysqldump 将表的全部内容在写之前读到内存中。这实际上不是必须的,事实上,假如您真的有大型表的话,这几乎是个失败的方法。能够用--quick 选项告诉mysqldump 写每一行(只要是被检索的)。要想进一步优化该转储过程,可用- - o p t来代替- - q ui c k。-- opt 选项开启其他的选项,这些选项将加快转储数据和读回数据的速度。

由于快速备份的好处,使得用--opt 执行备份成为最常用的方法。但是,要当心, - - o p t 选项有一个代价: --opt 所优化的是您的备份过程,而不是由其他客户机对数据库的访问。--opt 选项可防止任何人更新被锁定的正在转储的任何表。您会很容易地发现在常



规数据库访问中在这一点上所做的努力。试着在一天中数据库通常最繁忙的时刻运行一个备份。这不会花费太多的时间。

和--opt 作用有点相反的选项是- d e l a y e d。该选项导致mysqldump 写INSERT D E L AYED 语句而非INSERT 语句。假如您将一个数据文档加载到另一个数据库中并且想要使该操作对其他查询(这些查询可能正在数据库中发生)造成的影响最小,则- -d e l a y e d将有助于达到这个目的。

--compress 选项有助于将数据库拷贝到另一台机器上,因为他能够减少网络传输中的字节数量。这里有一个例子,请注意,为了使程式和远程主机上的服务器进行通信(而不是和本地主机通信),给出了--compress 选项:

% mysqldump --opt samp_db | mysql--compress -h boa.snake.net samp_db

mysqldump 有许多选项,周详信息请参考附录E。

使用直接拷贝数据库备份和拷贝方法

不用mysqldump 来备份数据库或表的另一种方法是直接拷贝表文档。通常可利用像c p、tar 或cpio 这样的实用程式来进行。本节的例子使用的是c p。

使用直接拷贝备份( direct-copy backup)方法时,必须确保没有使用这些表。假如在拷贝一个表的同时服务器正在修改他,则拷贝无效。

确保拷贝完整性的最好方法是关闭服务器,拷贝文档,然后重新启动服务器。假如不想关闭服务器,则应参考第13 章,查阅有关在执行表检查点时锁定服务器的介绍。假如服务器在运行中,则相同的约束都适用于拷贝文档,您应该用同样的锁定协议使服务器保持静止状态。

假定服务器关闭,或已锁定了想要拷贝的表,下面的例子将说明怎样将整个samp_db 数据库备份到备份目录中( DATADIR 代表服务器的数据目录):

% cd DATADIR

% cp -r samp_db /usr/archive/mysql 单个表可按如下进行拷贝:

% cd DATADIR/samp_db

% cd member.* /usr/archive/mysql/samp_db

% cd score.* /usr/archive/mysql/samp_db

...

当完成备份时,能够重新启动服务器(假如已使他关闭),或释放在表上施加的锁(假如保持服务器运行)。

要想用直接拷贝文档将数据库从一台机器拷贝到另一台机器,只要将这些文档拷贝到另一台服务器主机上的相应数据库上即可。应确保这些文档是对MyISAM 表的或两台机器都有相同的硬件结构。否则这些表在第二个主机上看起来好象有很奇怪的内容。还应该确保第二台主机的服务器不会在您安装这些表时去访问他们。

复制数据库



术语“复制”的含义简单地说有点像“拷贝数据库到另一个服务器”,或是包含在主数据库的内容发生变化时次数据库的有效更新( live updating)的含义。假如想简单地将数据库拷贝到另一个服务器上,则能够使用在前面已讨论的那些命令。自MySQL3.23 版本以来,就已开始出现对基于有效更新的复制的支持。但他的功能仍未成熟,因此,在这方面笔者没有什么可讨论的,假如有兴趣,您能够注意一下当前的新版本,看看有些什么新的研发功能。


标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: Linux系统中Mysql

下一篇: 备份PostgreSQL和MySQL数据库