透明 发表于 2015-1-16 20:14:13

发布防备性保护MySQL数据库服务器详解

由于在MySQL中有如此众多的额外功能可选,诸如存储引擎等,你可以选择最适合你公司的一个,或者尝试选用多个引擎。MySQL开始非常小巧,但是可以随着公司的成长而不断地变强大。<Pstyle="TEXT-INDENT:2em">创建一个防备性保护的工夫表,以帮忙主动检测成绩,使得您能够接纳措施举行修改:<Pstyle="TEXT-INDENT:2em">1)实行惯例的数据库备份并同意更新日记。<Pstyle="TEXT-INDENT:2em">2)布置按期的惯例表反省。经由过程反省表,将削减利用备份的时机。这个事情利用cron功课(一样平常从运转服务器所利用的该账号的crontab文件中挪用)而且很简单完成。比方,假如您作为MySQLadm用户运转服务器,则能够从mysqladm的crontab文件中创建按期反省。假如您不晓得怎样利用cron,应利用以下命令检察相干的UNIX野生页:<Pstyle="TEXT-INDENT:2em">%mancron%mancrontab<Pstyle="TEXT-INDENT:2em">3)在服务器启动前的体系引诱时代反省数据库表。呆板大概会因初期的溃散从头启动。假如是如许的话,数据库表大概已被损坏,应当对它举行反省。<Pstyle="TEXT-INDENT:2em">为了运转主动的表反省,能够编写一个剧本,将目次改动为服务器数据目次并对一切数据库表运转myisamchk和isamchk。我们将鄙人面会商的剧本中同时利用这两个程序。假如您只要MyISAM表或只要ISAM表,则只需个中一个程序,能够将有关的谁人程序从剧本中往除。<Pstyle="TEXT-INDENT:2em">myisamchk和isamchk都依据表反省的体例发生某些输入了局以便懂得正在反省哪些表,乃至在没有成绩时也是云云。关于crontab的项,除非表中有毛病,不然一般将克制输入了局(假如功课发生任何输入,cron功课一般天生一个邮件动静,很少会收到没有任何成绩的表反省功课的邮件)。假如用--silent选项挪用任一个有用程序,它仅当发明成绩时才发生输入。别的,myisamchk撑持--fast选项,该选项同意程序跳过自前次反省以来没有被修正过的任何表。<Pstyle="TEXT-INDENT:2em">在服务器数据目次中反省一切表的一个复杂的剧本以下(DATADIR应当修正成对应您体系的值):<Pstyle="TEXT-INDENT:2em">

<Pstyle="TEXT-INDENT:2em">有用此剧本的一个潜伏的成绩是:假如有很多表,通配符形式‘*/*.MYI’或‘*/*.ISM’大概会因为“toomanyarguments(过量的参数)”毛病使外壳程序爆炸。另外一个可选择的剧本以下(一样,将DATADIR改动为对应您体系的值):<Pstyle="TEXT-INDENT:2em">

<Pstyle="TEXT-INDENT:2em">不管您选择哪一种情势的剧本,笔者都假定您挪用的是check_mysql_tables,应确保实时改动该体例使它可实行,然后您手工挪用它以考证它事情是不是一般:<Pstyle="TEXT-INDENT:2em">%chmod+xcheck_mysql_tables%chmod_mysql_tables<Pstyle="TEXT-INDENT:2em">在幻想情形下应当没有输入了局。假如体系不撑持内部锁定,有大概服务器将在您反省表时改动它。此时,剧本大概会把实践没成绩的表呈报成有成绩的。这有点不幸,但比呈现相反的成绩要好:当呈现某些妨碍时剧本呈报无成绩。假如体系撑持内部锁定,则该成绩就不会呈现。<Pstyle="TEXT-INDENT:2em">以下部分将申明怎样创建剧本,使它经由过程cron并在体系启动时代主动实行。在这些大节的例子中,笔者假定剧本安装在/usr/users/mysaladm/bin中。您将必要调剂合适本人体系的值。<Pstyle="TEXT-INDENT:2em">假如在您的体系上运转了多个服务器,将必要修正该历程来反省每一个服务器数据目次中的表。您可使用分歧的check_mysql_tables拷贝来举行,或经由过程修正它来吸收一个命令行参数举行,该参数指定了想要反省的数据目次。<Pstyle="TEXT-INDENT:2em">用cron按期反省表<Pstyle="TEXT-INDENT:2em">假定要想对mysqladm用户从crontab文件中挪用剧本check_mysql_tables。先以该用户的身份举行注册,然后用以下命令编纂crontab文件:<Pstyle="TEXT-INDENT:2em">%crontab-e<Pstyle="TEXT-INDENT:2em">该命令带您进进带有以后crontab文件拷贝的编纂器中(假如之前没有编纂过,此文件多是空的)。增添一行到文件中:<Pstyle="TEXT-INDENT:2em">03**0/usr/users/mysqladm/bin/check_mysql_tables<Pstyle="TEXT-INDENT:2em">它告知cron在每一个日曜日的上午3时运转此选项。能够按请求改动工夫或布置。有关这些选项的格局,请参阅crontab野生页。<Pstyle="TEXT-INDENT:2em">在体系启动时代反省表<Pstyle="TEXT-INDENT:2em">假如您正在利用BSD作风的体系,而且已将服务器的启动命令增添到/etc/rc.local或相似的其他文件中,则能够在启动服务器前从对应的文件中挪用check_mysql_tables。<Pstyle="TEXT-INDENT:2em">假如正在利用SystemV作风的启动办法从/etc/rc.d目次之一中挪用mysql.server,则历程稍有点庞大。这些目次中的启动剧本应当了解start和stop参数的寄义,以便对体系的启动和封闭接纳响应的操纵。为了实行表的反省,我们能够编写如许的剧本:当参数为start时挪用check_mysql_tables,而当该参数为stop时不做任何事变。让我们来挪用如许的一个剧本mysql.check,其内容以下:<Pstyle="TEXT-INDENT:2em">

如今,您已可使用一个历程来安装mysql.check了,该历程相似于在第11章所先容的安装mysql.server的历程。必需给mysql.check一个运转级目次中较低的前缀号,才干使得它在mysql.server前运转。比方,假如在运转级目次中以S99mysql.server链接到mysql.server,则应当以S98mysql.check链接到mysql.check.
解决方案提供商应记住DBaaS通常仅仅是解决方案的一部分。客户之所以与他们的解决方案提供商协同工作,不仅是因为他们出售的产品,而且还因为他们所提供的服务。

莫相离 发表于 2015-1-18 18:59:27

比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。

蒙在股里 发表于 2015-1-27 07:28:17

比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。

小魔女 发表于 2015-2-5 06:06:45

varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。

活着的死人 发表于 2015-2-11 07:13:47

不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理?

变相怪杰 发表于 2015-3-1 23:59:51

数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。

admin 发表于 2015-3-11 01:27:05

大家注意一点。如下面的例子:

只想知道 发表于 2015-3-17 18:10:50

如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。

飘灵儿 发表于 2015-3-24 20:39:35

我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力
页: [1]
查看完整版本: 发布防备性保护MySQL数据库服务器详解