荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: georgehill (清风浮云 人生), 信区: Linux
标  题: mysql19
发信站: BBS 荔园晨风站 (Fri Nov 17 16:01:17 2000), 站内信件

【 以下文字转载自 georgehill 的信箱 】
【 原文由 georgehill.bbs@fb2000.dhs.org 所发表 】
寄信人: deardragon.bbs@bbs.whnet.edu.cn
标  题: mysql19
发信站: 快意灌水站 BBS 信差
来  源: from bbs.whnet.edu.cn (bbs.whnet.edu.cn [202.112.20.132])
日  期: Fri Nov 17 01:06:25 2000

发信人: hzh (网络飞翔), 信区: PHP
标  题: mysql19
发信站: 武汉白云黄鹤站 (Tue May 30 18:19:49 2000), 站内信件

MySQL中文参考手册
翻译:晏子(yanzi)       主页:http://linuxdb.yeah.net
----------------------------------------------------------------------------
----
第一章, 前一章, 下一章, 最后一章,目录.
----------------------------------------------------------------------------
----
19 用MySQL解决一些常见问题
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表作为文件存储,做一个备份是容易的。为了得到一个一致的备份,在相关的
表上做一个LOCK TABLES。见7.24 LOCK TABLES/UNLOCK TABLES句法。你只需一个读锁定
;当你在数据库目录中做文件的一个拷贝时,这允许其他线程继续查询该表。如果你想
要做一个SQL级的备份,你可以SELECT INTO OUTFILE。
备份一个数据库的另一个方法是使用mysqldump程序:
为你的数据库做一个完整的备份:
shell> mysqldump --tab=/path/to/some/dir --opt --full
你也可以简单地拷贝所有的表文件(“*.frm”、“*.MYD”和“*.MYI”文件),只要服务
器不在更新任何东西。
停止mysqld如果它正在运行,然后以--log-update选项启动它。你将得到一个名为“ho
stname.n”形式的日志文件, 这里n是随着你每次执行mysqladmin refresh或mysqladm
in flush-logs、FLUSH LOGS语句、或重启服务器而递增的一个数字。这些日志文件向你
提供了在你执行mysqldump处后面进行的复制数据库改变的所需信息。
如果你必须恢复一些东西,尝试首先用myisamchk -r恢复你的表。这应该处理所有情况
的99.9%。如果myisamchk失败,尝试下列过程:
恢复原来的mysqldump备份。
执行下列命令以再次运行更新日志中的更改:
shell> ls -1 -t -r hostname.[0-9]* | xargs cat | mysql
ls被用来以正确的顺序得到所有的日志文件。
你也可以与SELECT * INTO OUTFILE 'file_name' FROM tbl_name做有选择的备份并且用
LOAD DATA INFILE 'file_name' REPLACE ...恢复。为了避免重复记录,在表中你需要
一个PRIMARY KEY或UNIQUE键。当在唯一键值上一个新记录与一个老记录重复时,REPLA
CE关键词使得老记录用一个新记录替代。
19.3 在同一台机器上运行多个MySQL服务器
有些情况下你可能想要在同一台机器上运行多个服务器。例如,你可能想要测试一个新
的MySQL版本而让你现有生产系统的设置不受到干扰,或你可能是想要为不同的客户提供
独立的MySQL安装一个因特网服务供应商。
如果你想要运行多个服务器,最容易的方法是用不同的TCP/IP端口和套接字文件重新编
译服务器,因此他们不是侦听同一个TCP/IP端口或套接字。
假设一个现存服务器配置为缺省端口号和套接字文件,那么用一个这样的configure命令
行设置新的服务器:
shell> ./configure  --with-tcp-port=port_number \
             --with-unix-socket=file_name \
             --prefix=/usr/local/mysql-3.22.9
这里port_number和file_name应该不同于缺省端口号和套接字文件路径名,而且--pref
ix值应该指定一个不同于现存的MySQL安装所在的安装目录。
你可以用这个命令检查由任何当前执行的MySQL所使用的套接字和端口:
shell> mysqladmin -h hostname --port=port_number variables
如果你有一个MySQL服务器正运行在你使用了的端口上,你将得到MySQL的一些最重要的
可配置变量的一张表,包括套接字名等。
你也应该编辑你机器的初始化脚本(可能是“mysql.server”)来启动并杀死多个mysqld
服务器。
你不必重新编译一个新MySQL服务器,只要以一个不同的端口和套接字启动即可。你可以
通过指定在运行时safe_mysqld使用的选项来改变端口和套接字:
shell> /path/to/safe_mysqld --socket=file_name --port=port_number
如果你在与开启日志的另一个服务器相同的一个数据库目录下运行新服务器,你也应该
用safe_mysqld的--log和--log-update选项来指定日志文件的名字,否则,两个服务器
可能正在试图写入同一个日志文件。
警告:通常你决不应该有在同一个数据库中更新数据的2个服务器!如果你的OS不支持无
故障(fault-free)的系统锁定,这可能导致令人惊讶的事情发生!
如果你想要为第二个服务器使用另一个数据库目录,你可以使用safe_mysqld的--datad
ir=path选项。
当你想要连接一个正在运行的使用一个不同于编译进你的客户程序中端口的MySQL服务器
时,你可以使用下列方法之一:
以--host 'hostname' --port=port_numer或[--host localhost] --socket=file_name
启动客户。
在你的C或Perl程序中,当连接MySQL服务器时,你可以给出端口和套接字参数。
在你启动客户程序之前,设置MYSQL_UNIX_PORT和MYSQL_TCP_PORT环境变量,指向Unix套
接字和TCP/IP的端口。如果你通常使用一个特定的套接字或端口,你应该将设置这些环
境变量的命令放进你的“.login”文件中。见12.1 不同的 MySQL程序概述。
在你的主目录下的“.my.cnf”文件中指定缺省套接字和TCP/IP端口。见4.15.4 选项文
件。
----------------------------------------------------------------------------
----
第一章, 前一章, 下一章, 最后一章,目录.

--
※ 来源:.武汉白云黄鹤站 bbs.whnet.edu.cn.[FROM: 211.69.195.74]
--
※ 转寄:.武汉白云黄鹤站 bbs.whnet.edu.cn.[FROM: 210.38.240.158]
--
※ 转寄:·快意灌水站 fb2000.dhs.org·[FROM: 210.39.3.50]
--
※ 转载:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.115]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店