与--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 版本以来,就已经开始出现对基于有效更新的复制的支持。但它的功能仍未成熟,因此,在这方面笔者没有什么可讨论的,如果有兴趣,您可以注意一下当前的新版本,看看有些什么新的开发功能。
|