当前位置:首页 >> IT/计算机 >>

用MySQL解决一些常见问题


用 MySQL 解决一些常见问题
1 数据库复制 一方面复制可以用来增加健壮性和速度。对健壮性,你有 2 个系统,而如果 你出了问题,切换到备份即可。额外的速度通过把非更新查询的一部分送到复制 服务器来达到。当然,这只在非更新查询为主时有用,但是这正是一般的情形。 一方面复制计划在不久的未来实现。这将被实现,使得从服务器将以较低优 先级的更新和延迟插入被同步到最新数据(这将给读者以比写者更高的优先级)。 MySQL(至今)没有数据库复制,但是有一些如何实现的信息。 MySQL 复制一个数据库最一般的方法是使用更新日志。见 9.2 更新日志。这要求 充当一个主数据库(进行数据改变的)并且另一个或多个充当从数据库。 要更新一 个从数据库,只要运行 mysql < update_log。提供对于从数据库适当的主机、 用户和口令选项,并且将主数据库的更新日志作为输入。 如果你从未从一张表中删除任何东西, 你可以使用一个 TIMESTAMP 列找出自 上一次复制以来(通过比较作你上次做复制的时间) 表中哪个行被插入和被改变, 且仅拷贝这些行到镜像中。 有可能使用更新日志(对删除)和时间戳记(在两端)做成一个双向更新系统 统,但是在这种情况下,当同一数据在两端被改变时,你必须能处理冲突。你可 能想保持旧版本以帮助决定什么被更新了。 因为在这种情况中复制用 SQL 语句进行, 你不应该在更新数据库的语句中使 用下列函数;他们不能返回与原数据库相同的值:
? ? ? ?

DATABASE() GET_LOCK()和 RELEASE_LOCK() RAND() USER(), SYSTEM_USER()或 SESSION_USER()

?

VERSION()

所有的时间函数可安全地使用,比如如果需要,时间戳记被送到镜像。 LAST_INSERT_ID()也可安全地使用。 2 数据库备份 因为 MySQL 表作为文件存储, 做一个备份是容易的。 为了得到一个一致的备 份,在相关的表上做一个 LOCK TABLES。见 7.24 LOCK TABLES/UNLOCK TABLES 句法。你只需一个读锁定;当你在数据库目录中做文件的一个拷贝时,这允许其 他线程继续查询该表。如果你想要做一个 SQL 级的备份,你可以 SELECT INTO OUTFILE。 备份一个数据库的另一个方法是使用 mysqldump 程序: 1. 2. 为你的数据库做一个完整的备份: shell> mysqldump --tab=/path/to/some/dir --opt --full

你也可以简单地拷贝所有的表文件(“*.frm”、 “*.MYD”和“*.MYI” 文件),只要服务器不在更新任何东西。 3. 停止 mysqld 如果它正在运行, 然后以--log-update 选项启动它。

你将得到一个名为“hostname.n”形式的日志文件, 这里 n 是随着你每 次执行 mysqladmin refresh 或 mysqladmin flush-logs、FLUSH LOGS 语 句、或重启服务器而递增的一个数字。这些日志文件向你提供了在你执行 mysqldump 处后面进行的复制数据库改变的所需信息。 如果你必须恢复一些东西,尝试首先用 myisamchk -r 恢复你的表。这应该 处理所有情况的 99.9%。如果 myisamchk 失败,尝试下列过程: 1. 2. 3. 恢复原来的 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 键。当在唯一键值上一个新 记录与一个老记录重复时,REPLACE 关键词使得老记录用一个新记录替代。 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 应该不同于缺省端口号和套接字文件路径名, 而且--prefix 值应该指定一个不同于现存的 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 的--datadir=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 端口。


相关文章:
用MYSQL解决一些常见问题.pdf
用MYSQL解决一些常见问题 - 用 MySQL 解决一些常见问题 1 数据库复
mysql常见问题解决方法.pdf
mysql常见问题解决方法 - 一、Can't connect to MySQL server on 'localhost' (10061) 翻译:不能连接到 localhost 上的mysql...
用MySQL解决一些常见问题.doc
用MySQL解决一些常见问题 - 19.1 数据库复制 一方面复制可以用来增加健
用MySQL解决一些常见问题.doc
用MySQL解决一些常见问题 - 专业文献,计算机,MySQL数据库... 用MySQL解决一些常见问题_IT/计算机_专业资料。专业文献,计算机,MySQL数据库 用MySQL 解决一些常见问题 1...
MySQL常见问题集锦详解-完整版.doc
使用 MySQL 时的一些常见错误 MySQL server has gone away 常见的原因是服务器...快速解决Oracle数据库中... 3页 1下载券 Oracle数据库常见问题答... 6页...
MySQL常见问题解决方案.doc
MySQL常见问题解决方案 - MySQL 问题解决之宝典 下面我针对给班级学员安装 MySQL 的过程中遇到的问题解决方案进行总结, 为了北 方基地项目部同仁与 MIS 部同事,...
mysql各种问题.doc
mysql各种问题_计算机软件及应用_IT/计算机_专业资料..., 然后继续解决,通过命令:show variables ...在这种情况下,分配符必须为:=而不能 用=,因为在...
mysql问题解决总结.doc
mysql问题解决总结 - MySql 问题解决总结 ERROR 1045 (2
mysql常见问题.txt
mysql常见问题 - mysql常见错误提示及解决方法 本帖被 lisheng51 从 常见问题 移动到本区(2008-07-09) 130 :文件格式不正确。(还不是很清楚错误的状况) ...
MYSQL常见错误代码及处理.doc
MYSQL常见错误代码及处理_计算机软件及应用_IT/计算机_专业资料。MYSQL错误代码,...错误,或 2)使用工具修复数据不一致,或 3)重做主从复制 错误代码:1205 错误...
MYSQL常见出错代码解析大全.doc
记录 1016:文件无法打开,使用后台修复或者使用 ...1064:MySQL 不支持错误提示中编码。 1065:MYSQL ...不存在 1135:可能是内存不足够,请联系空间商解决。...
MySQL数据库中出现的问题及解决方法.doc
MySQL数据库中出现的问题解决方法_计算机软件及应用_IT/计算机_专业资料。MySQL 数据库 问题: 创建数据库不成功,报错: Access denied for user 原因:未设置密码...
MySQL常见错误提示及解决方法.txt
MySQL常见错误提示及解决方法_IT/计算机_专业资料。130 :文件格式不正
mysql常见错误提示及解决方法.doc
mysql常见错误提示及解决方法_IT/计算机_专业资料。mysql常见错误提示及解决方法 ...或用 mysqlcheck 命令进行修复。具体的方法:利用命令行进入 mysql/bin 目录,...
mysql安装常见问题.txt
mysql安装常见问题 - ./configure 的时候报一下的错误,可以尝试这样解决 Mysql安装:/bin/rm: cannot remove `libtoolt': No such f...
自己总结的Mysql安装及错误处理.txt
连接mysql速度慢的解决方法. 配置超时时间如果在配置文件my.cnf中只设置参数wait...(0.02 sec) mysql> 其他的一些设置方法: 修改数据库的字符集 mysql>use ...
MySQL服务问题.txt
0 原因是系统里有旧的mysql服务存在,解决办法如下:要永久删除旧的mysql服务,...当你使用start命令时,你可以传递一些参数(arguments)给服务的主函数,但是不是给...
mysql数据库实时同步配置与常见问题解决方法.doc
mysql数据库实时同步配置与常见问题解决方法_计算机软件及应用_IT/计算机_专业资料。mysql数据库双机或多机实时同步配置,与常见问题解决方法,我亲自测试成功并使用,...
MYSQL常见错误列表和解决.doc
MYSQL常见错误列表和解决_IT/计算机_专业资料。详细的MYSQL常见错误列表和解决方法 MYSQL 出错代码列表在用 mysql 创建表时,有 A、B 两个表需要同时创建 C 表的...
关于MySQL的1067错误解决方法.txt
※ 关于MySQL的1067错误解决方法 ※ 内容: *** 1 安装MYSQL后更改了ROOT的密码后用 net startmysql 启动时我就遇到了这样的问题.使用以下命令后 c:\mysql\bin...
更多相关标签: