| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 |
    想学好编程,外语很重要,最新的编程技术还是在国外  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> 数据库 >> mysql >> mysql教程 >> 文章正文
MySQL中文参考手册---19 用MySQL解决一些常见问题            【字体:
MySQL中文参考手册---19 用MySQL解决一些常见问题
作者:不详    文章来源:网络    点击数:    更新时间:2007-1-21

19.1数据库复制

一方面复制可以用来增加健壮性和速度。对健壮性,你有2个系统,而如果你出了问题,切换到备份即可。额外的速度通过把非更新查询的一部分送到复制服务器来达到。当然,这只在非更新查询为主时有用,但是这正是一般的情形。

一方面复制计划在不久的未来实现。这将被实现,使得从服务器将以较低优先级的更新和延迟插入被同步到最新数据(这将给读者以比写者更高的优先级)。

MySql(至今)没有数据库复制,但是有一些如何实现的信息。

复制一个数据库最一般的方法是使用更新日志。见9.2更新日志。这要求充当一个主数据库(进行数据改变的)并且另一个或多个充当从数据库。要更新一个从数据库,只要运行MySql<update_log。提供对于从数据库适当的主机、用户和口令选项,并且将主数据库的更新日志作为输入。

如果你从未从一张表中删除任何东西,你可以使用一个TIMESTAMP列找出自上一次复制以来(通过比较作你上次做复制的时间)表中哪个行被插入和被改变,且仅拷贝这些行到镜像中。

有可能使用更新日志(对删除)和时间戳记(在两端)做成一个双向更新系统统,但是在这种情况下,当同一数据在两端被改变时,你必须能处理冲突。你可能想保持旧版本以帮助决定什么被更新了。

因为在这种情况中复制用SQL语句进行,你不应该在更新数据库的语句中使用下列函数;他们不能返回与原数据库相同的值:

  • DATABASE()
  • GET_LOCK()RELEASE_LOCK()
  • RAND()
  • USER(),SYSTEM_USER()SESSION_USER()
  • VERSION()

所有的时间函数可安全地使用,比如如果需要,时间戳记被送到镜像。LAST_INSERT_ID()也可安全地使用。

19.2数据库备份

因为MySql表作为文件存储,做一个备份是容易的。为了得到一个一致的备份,在相关的表上做一个LOCKTABLES。见7.24LOCKTABLES/UNLOCKTABLES句法。你只需一个读锁定;当你在数据库目录中做文件的一个拷贝时,这允许其他线程继续查询该表。如果你想要做一个SQL级的备份,你可以SELECTINTOOUTFILE

备份一个数据库的另一个方法是使用MySqldump程序:

  1. 为你的数据库做一个完整的备份:
    shell>MySqldump--tab=/path/to/some/dir--opt--full

    你也可以简单地拷贝所有的表文件(“*.frm”、“*.MYD”“*.MYI”文件),只要服务器不在更新任何东西。

  2. 停止sql/Index.html'>mysqld如果它正在运行,然后以--log-update选项启动它。你将得到一个名为“hostname.n”形式的日志文件,这里n是随着你每次执行sql/Index.html'>mysqladminrefreshsql/Index.html'>mysqladminflush-logsFLUSHLOGS语句、或重启服务器而递增的一个数字。这些日志文件向你提供了在你执行sql/Index.html'>mysqldump处后面进行的复制数据库改变的所需信息。

如果你必须恢复一些东西,尝试首先用myisamchk-r恢复你的表。这应该处理所有情况的99.9%。如果myisamchk失败,尝试下列过程:

  1. 恢复原来的sql/Index.html'>mysqldump备份。
  2. 执行下列命令以再次运行更新日志中的更改:
    shell>ls-1-t-rhostname.[0-9]*|xargscat|sql/Index.html'>mysql

ls被用来以正确的顺序得到所有的日志文件。

你也可以与SELECT*INTOOUTFILEfile_nameFROMtbl_name做有选择的备份并且用LOADDATAINFILEfile_nameREPLACE...恢复。为了避免重复记录,在表中你需要一个PRIMARYKEYUNIQUE键。当在唯一键值上一个新记录与一个老记录重复时,REPLACE关键词使得老记录用一个新记录替代。

[1] [2] 下一页  

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • MySQL数据的导出和导入工具:…

  • mysql授课大纲

  • mysql技巧总结

  • PPTP + MPPE + RADIUS + MyS…

  • 使用函数递归实现基于php和M…

  • 基于MySQL的高性能数据库应用…

  • Mysql日期和时间函数

  • 深圳讯天 mysql 服务器错误分…

  • 几分钟让你走进mysql的门

  • 针对 Apache 2.x 的 MySQL 用…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |