文档介绍:MySQL管理
2002-01-30 22:33
bull 阅读次数:978
原著:KevinYank 翻译:处处
对于内容驱动的网站,设计好坏的关键是关系型数据库。在这个教程中,我们已经使用了MySQL关系型数据库管理系统(RDBMS)建立了我们的数据库。对于网站的开发者来说,MySQL是一个较受欢迎的选择,这不仅是因为它对于任何平台上的非商业应用都是免费的,而且也因为它的架设和使用非常的简单。正如我们在第一章中所看到的那样,根据正确的指导,一个新的用户可以在不超过30分钟的时间内架设好一个MySQL服务,并将其运行起来(对于一个有经验的用户甚至只要10分钟!)。
如果你想做的仅仅是架设一个MySQL服务环境,以用来做一些例子和练****那么我们在第一章安装时所使用的初始化设置对你已经足够了。但是,如果你是想建立一个真正的用于Web站点的数据库--也许这个站点对于你的公司很重要--那么你还需要学****一些有关MySQL的知识。
的企业的一部分的商业事务来说,数据的备份是很重要的。不幸的是,因为备份的工作对于一个管理员来说往往是不太感兴趣的,人们总是无法认清它的重要性,于是这方面的工作对于一个应用程序往往不能做得“足够好”。如果直到现在你还不明白“我们是不是需要备份我们的数据库”,或者是你认为“数据库会和其它东西一起被备份”,那么你得好好看看这一章的内容了。我们将会说明为什么普通的文
件备份方案对于许多MySQL服务是远远不够的,然后我们会介绍备份和恢复一个MySQL数据库的“正确的方法”。
在第一章中,我们设置了一个MySQL服务并通过一个有口令的‘root’来连接这个数据库。MySQL的‘root’用户(顺便提一下,不要与Unix的‘root’用户混淆)对于所有的库和表都有读/写的权限。在许多情况下,我们需要建立其它的只能访问某些数据库和数据表的用户,我们还需要对这种访问进行限制(例如,对指定的表只能直接只读访问)。在这一章中,我们将学****如果使用两个新的MySQL的命令:GRANT和REVOKE来完成这些工作。
在一些情况下,例如由于电源的问题,MySQL数据库可能被损坏。这样的损坏并不总是意味着必须使用备份来恢复。我们将会学****到如果利用MySQL数据库的检查和修复功能来解决简单的数据库损坏。
为什么标准的备份是不够的
和Web服务器一样,绝大多数的MySQL服务器也必须不间断地在线。这使得MySQL数据库的备份显得很重要。因为MySQL服务使用cache和缓冲区来提高对存储在磁盘上的数据库文件更新的效率,所以文件的内容和当前数据库的内容可能并不完全一致。而标准的备份程序仅仅包括对系统和数据文件的拷贝,这种对MySQL数据文件的备份并不能完全满足我们的需要,因为它们不能保证拷贝
的文件可以在系统崩溃时的确能够正常地使用。
此外,因为许多的数据库必须整天地接受信息,标准的备份只能提供数据库数据的“瞬间的”映象。如果MySQL数据库文件被损坏,或是变得不可用,在最后一次备份之后添加的信息将会被丢失。在许多情况下,例如对于一个电子商务网站的处理用户订单的数据库,这样的丢失是不可容忍的。
MySQL中的工具可以对数据进行实时的备份,而在备份进行时,不会影响服务的效率。不幸的是,这需要你为你的MySQL数据配置一个特殊的备份系统。而完全与你已制定的其它数据备份方案无关。然而,和任何一个好的备份系统一样,在你真正用到它的时候,你会发现现在的麻烦是值得的。
在这一章中,我们提供的指导是用于一个运行Linux或其它基于Unix的操作系统的计算机上的。如果你使用的是Windows,方法也基本上一样,只是其中的有些命令必须改动。
使用mysqldump进行数据库备份
除了mysqld以外,MySQL服务器以及mysql(MySQL的客户端),在安装时还会产生很多有用的程序。例如,在前面,我们已经看到的mysqladmin,就是负责控制和搜集有关正在运行的MySQL服务的信息的程序。
mysqldump是另一个这样的程序。当它运行时,它会连接到一个MySQL服务(就和mysql程序和PHP语言所做的一样)并下载指定的数据库的全部内容。然后它会输出一系列的SQL的CREATE TABLE命令和INSERT命令,在一个空的MySQL数据库中运行这些命令,就可以建立与当初的数据库内容完全一样的一个
MySQL数据库。
通过重定向mysqldump的输出到一个文件,你可以存储一个数据库的“镜像”以作为备份。下面的命令是用一个口令为mypass的root用户连接到一个运行在myhost上的MySQL服务,并将名为dbname的数据库的备份存储到