《2022年PHP、MySQL教程:MySQL管理Mysql教程.docx》由会员分享,可在线阅读,更多相关《2022年PHP、MySQL教程:MySQL管理Mysql教程.docx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2022年PHP、MySQL教程:MySQL管理Mysql教程对于内容驱动的网站,设计好坏的关键是关系型数据库。在这个教程中,我们已经运用了MySQL关系型数据库管理系统(RDBMS)建立了我们的数据库。对于网站的开发者来说,MySQL是一个较受欢迎的选择,这不仅是因为它对于任何平台上的非商业应用都是免费的,而且也因为它的架设和运用特别的简洁。正如我们在第一章中所看到的那样,依据正确的指导,一个新的用户可以在不超过30分钟的时间内架设好一个MySQL服务,并将其运行起来(对于一个有阅历的用户甚至只要10分钟!)。假如你想做的仅仅是架设一个MySQL服务环境,以用来做一些例子和练习,那么我们在第
2、一章安装时所运用的初始化设置对你已经足够了。但是,假如你是想建立一个真正的用于Web站点的数据库-或许这个站点对于你的公司很重要-那么你还须要学习一些有关MySQL的学问。对于作为基于Internet的企业的一部分的商业事务来说,数据的备份是很重要的。不幸的是,因为备份的工作对于一个管理员来说往往是不太感爱好的,人们总是无法认清它的重要性,于是这方面的工作对于一个应用程序往往不能做得“足够好”。假如直到现在你还不明白“我们是不是须要备份我们的数据库”,或者是你认为“数据库会和其它东西一起被备份”,那么你得好好看看这一章的内容了。我们将会说明为什么一般的文件备份方案对于很多MySQL服务是远远不
3、够的,然后我们会介绍备份和复原一个MySQL数据库的“正确的方法”。在第一章中,我们设置了一个MySQL服务并通过一个有口令的root来连接这个数据库。MySQL的root用户(顺便提一下,不要与Unix的root用户混淆)对于全部的库和表都有读/写的权限。在很多状况下,我们须要建立其它的只能访问某些数据库和数据表的用户,我们还须要对这种访问进行限制(例如,对指定的表只能干脆只读访问)。在这一章中,我们将学习假如运用两个新的MySQL的吩咐:GRANT和REVOKE来完成这些工作。在一些状况下,例如由于电源的问题,MySQL数据库可能被损坏。这样的损坏并不总是意味着必需运用备份来复原。我们将会
4、学习到假如利用MySQL数据库的检查和修复功能来解决简洁的数据库损坏。为什么标准的备份是不够的和Web服务器一样,绝大多数的MySQL服务器也必需不间断地在线。这使得MySQL数据库的备份显得很重要。因为MySQL服务运用cache和缓冲区来提高对存储在磁盘上的数据库文件更新的效率,所以文件的内容和当前数据库的内容可能并不完全一样。而标准的备份程序仅仅包括对系统和数据文件的拷贝,这种对MySQL数据文件的备份并不能完全满意我们的须要,因为它们不能保证拷贝的文件可以在系统崩溃时的确能够正常地运用。此外,因为很多的数据库必需成天地接受信息,标准的备份只能供应数据库数据的“瞬间的”映象。假如MySQ
5、L数据库文件被损坏,或是变得不行用,在最终一次备份之后添加的信息将会被丢失。在很多状况下,例如对于一个电子商务网站的处理用户订单的数据库,这样的丢失是不行容忍的。MySQL中的工具可以对数据进行实时的备份,而在备份进行时,不会影响服务的效率。不幸的是,这须要你 为你的MySQL数据配置一个特别的备份系统。而完全与你已制定的其它数据备份方案无关。然而,和任何一个好的备份系统一样,在你真正用到它的时候,你会发觉现在的麻烦是值得的。在这一章中,我们供应的指导是用于一个运行Linux或其它基于Unix的操作系统的计算机上的。假如你运用的是Windows,方法也基本上一样,只是其中的有些吩咐必需改动。运
6、用mysqldump进行数据库备份除了mysqld以外,MySQL服务器以及mysql(MySQL的客户端),在安装时还会产生许多有用的程序。例如,在前面,我们已经看到的mysqladmin,就是负责限制和搜集有关正在运行的MySQL服务的信息的程序。mysqldump是另一个这样的程序。当它运行时,它会连接到一个MySQL服务(就和mysql程序和PHP语言所做的一样)并下载指定的数据库的全部内容。然后它会输出一系列的SQL的CREATE TABLE吩咐和INSERT吩咐,在一个空的MySQL数据库中运行这些吩咐,就可以建立与当时的数据库内容完全一样的一个MySQL数据库。通过重定向mysq
7、ldump的输出到一个文件,你可以存储一个数据库的“镜像”以作为备份。下面的吩咐是用一个口令为mypass的root用户连接到一个运行在myhost上的MySQL服务,并将名为dbname的数据库的备份存储到dbname_backup.sql文件中:% mysqldump -h myhost -u root -pmypass dbname > dbname_backup.sql要复原这样的一个数据库,只须要运行下面的吩咐:% mysqladmin -h myhost -u root -pmypass create dbname% mysql -h myhost -u root -pmyp
8、ass dbname < dbname_backup.sql第一个吩咐运用mysqladmin程序建立一个数据库。其次个吩咐连接到MySQL服务并运用通常的mysql程序,并将刚才得到的备份文件作为其中执行的吩咐。通过这种方法,我们可以运用mysqldump建立我们数据库的备份。因为mysqldump通过与MySQL服务的连接产生这个备份,这确定要比干脆访问MySQL数据书目下的数据库文件来得更为平安,因为这样的备份可以确保是数据库的一个有效的拷贝,而不仅仅是数据库文件的拷贝。剩下来的问题就是如何解决这个“镜像”与一个不断更新的数据库之间的同步。要做到这一点,你须要吩咐服务保持一个变更日
9、志。利用变更日志进行增量备份正如我们前面提到的,在许多状况下,我们运用的MySQL数据库会造成数据的丢失-甚至有的时候会丢失很重要的数据。在这样的状况下,我们必需找到一种方法保持我们运用上面介绍的方法用mysqldump制作的备份与当前数据库之间的同步。而解决方案就是让MySQL服务维持一个更新日志。一个更新日志是一个关于全部数据库接受到的可能变更数据库内容的查询的记录。这将包括INSERT、UPDATE和CREATETABLE语句,但是不包括SELECT语句。通常的想法是维持一个变更日志,这样当数据库崩溃时,你的复原过程应当是这样的:首先运用备份(运用mysqldump吩咐产生),然后运用备
10、份之后的变量日志。你也可以运用变更日志撤消错误操作。例如,假如一个合作者告知你他错误地运用了一个DROP TABLE吩咐,你可以对变更日志进行编辑以删除这个吩咐,然后运用备份和修改过的变更日志进行复原。通过这种方法,你甚至可以保持这次意外事故之后其它表的改变。作为预防措施,你或许还要收回你的合作者的DROP权限(在下一部分你将看到该怎么做)。告知MySQL服务器维持一个变更日志是特别简洁的,你只须要在服务的吩咐行中增加一个选项:% safe-mysqld -log-update=update上面的吩咐启动MySQL服务,并告知它在服务器的数据书目下(假如你依照第一章中指导配置你的服务器的话,这
11、个书目将是/usr/local/mysql/var)建立名为update.001、update.002的文件。一个新的这样的文件将在服务器每一次刷新它的日志文件时被建立(通常,这是指服务每一次重启动时)。假如你想将你的变更日志存储到另一个地方(通常这是一个好办法-假如包含你的数据书目的磁盘出了问题,你确定不能希望它还能好好保存你的备份!),你可以指定变更日志的路径。但是,假如你的MySQL服务器是不间断地工作的,在启动MySQL服务时你或许还须要一些系统配置。在这种状况下,增加一个吩咐行选择可能变得很困难。建立变更日志的另一个简洁的方法是在MySQL配置文件中增加相应的选项。假如你还不清晰什么
12、是MySQL配置文件,不要担忧。事实上,在此之前,我们始终没用到过这样的配置文件。要建立这个文件,以我们在第一章中建立的MySQL用户(假如你是完全依据指导做的,这应当是mysqlusr)登录到Linux。运用你习惯的文本编辑器,在你的MySQL数据书目下(除非你选择了其它地方安装MySQL,这应当是指/usr/local/mysql/var)建立一个名为f的文件。在这个文件中,输入下面一行:mysqldlog-update=/usr/backups/mysql/update当然,你可以自由地指定你的日志文件所写入的位置。保存这个文件并重启你的MySQL服务。从现在起先,MySQL服务运行的状
13、况将和你在吩咐行中运用了-log-update选项一样。很明显,对于一个服务来说,变更日志可能占用大量的空间。因为这个缘由以及MySQL不能自动地在建立新的日志文件删除旧的日志文件,你须要自己管理你的变更日志文件。例如,下面的Unixshell脚本,会删除全部一星期以前更改的变更日志文件,然后通知MySQL刷新它的日志文件。#! /bin/shfind /usr/backups/mysql/ -name update.0-9*-type f -mtime +6 | xargs rm -f/usr/local/mysql/bin/mysqladmin -u root-ppassword flush-logs假如当前的日志文件被删除,最终一步(刷新日志文件)将建立一个新的变更日志,这意味着MySQL服务