具有负载均衡功能MySQL服务器集群部署实现
来自:http://it.china-b.com/zx/linuxsjk/20090525/24129_1.html
摘要:MySQL是一个高速度、高性能、多线程的关系型数据库
治理系统,适用平台多,可扩展性强。在实际生产环境中,部署和实现具有一定负载均衡功能的MySQL服务器集群,对于提高用户数据库
应用系统的性能、速度和稳定性具有明显的作用。本文简要介绍了在FreeBSD 7.0-Release系统上部署实现MySQL服务器集群的方案,并对可能出现的问题提供了相应的解决方法。
1. 引言
MySQL是一个高速度、高性能、多线程、开放源代码,建立在客户/服务器结构上的关系型数据库
治理系统。它始于1979年,最初是Michael Widenius为瑞典TcX公司创建的UNIREG数据库
系
统,当时的UNIREG没有SQL接口,限制了它的应用。1996年5月,Widenius开发出了MySQL的最初版本,开始在Internet上公开
发行。MySQL的开发人员从一开始就一直关注它的性能,为此不惜特性集,直到今天,MySQL依然保持本色,以高速度高性能为首要原则。随着时间的推
移,MySQL也加入了大型数据库
产品的高级特性,如存储过程、视图、触发器等,使其在企业级数据库
系统中开始被部署应用。2008年10月,SUN公司收购了MySQL AB公司,开始进入开源领域。随着重量级操作系统Solaris的开源,SUN MySQL在数据库
市场占有的份额将会进一步提高。因此,在生产环境中部署具有负载均衡功能的MySQL服务器集群,对于提高企业数据库
应用系统的速度、稳定性及可伸缩性具有很大的现实意义,也可以有效降低应用系统的投资成本。本文将以FreeBSD 7.0-Release操作系统为例,利用MySQL数据库
的复制特性,简要介绍部署MySQL服务器集群的实现方法和相关注重事项。
2. 系统模型
本集群的结构为一个主MySQL服务器服务器与多个从属MySQL服务器建立复制连接,主服务器与从属服务器实现一定程度上的数据同步,多个从属服务器存储相同的数据副本,实现数据冗余,提供容错功能。部署开发应用系统时,对数据库
操作代码进行优化,将写操作定向到主服务器,把大量的查询操作定向到从属服务器,实现集群的负载均衡功能。假如主服务器发生故障,从属服务器将转换角色成为主服务器,使应用系统为终端用户提供不间断的网络服务;主服务器恢复运行后,将其转换为从属服务器,存储数据库
副本,继续对终端用户提供数据查询检索服务。
3. 部署实现
本文以一台主服务器带三台从属服务器为例,简要介绍MySQL服务器集群的实现方案和具体方法步骤。
3.1 系统部
相关文档:
数据库设计:
--
-- 数据库: `test`
--
-- --------------------------------------------------------
--
-- 表的结构 `menu`
--
CREATE TABLE IF NOT EXISTS `menu` (
`ID` int(10) unsigned NOT NULL auto_increment,
`PID` int(11) NOT NULL,
`TITLE` varchar(200) NOT NULL,
`REMARK` varchar(200) NOT ......
Apache官方下载地址:apache_2.0.55-win32-x86-no_ssl.msi,更多版本在这里;
php官方下载地址:php-5.0.5-Win32.zip,更多镜像下载地址,更多版本下载;
mysql官方下载地址:mysql-4.1.14-win32.zip,更多镜像下载地址,更多版本下载。
Apache的配置:
我一开始怎么搞都不好,我上网找,有的说是iis的问题,有的说是 ......
Mysql my.ini 配置文件详解
#BEGIN CONFIG INFO
#DESCR: 4GB RAM, 只使用InnoDB, ACID, 少量的连接, 队列负载大
#TYPE: SYSTEM
#END CONFIG INFO
#
# 此mysql配置文件例子针对4G内存
# 主要使用INNODB
#处理复杂队列并且连接数量较少的mysql服务器
#
# 将此文件复制到/etc/my.cnf 作为全局设置,
# mysql-data-d ......
导出是,没有指定编码
方法一 phpmyadmin处理方式
检查php-mbstring是否有可装,没有安装上 yum -y install php-mbstring
打开phpmyadmin 中导出,再从phpmyadmin 导入是选取二制进(binary)
如果还不行,在my.cnf mysqld中加入 default-character=你的编码, 重启mysql 再试 ......
create procedure getInfor2()
BEGIN
declare _abc varchar(200);
declare stopFlag int;
DECLARE cursor_name CURSOR
FOR
select zhuanyuan from server;
DECLARE CONTINUE HANDLER FOR NOT FOUND set stopFlag=1;
OPEN cursor_name;
REPEAT
FETCH cursor_name INTO _abc;
begin
if _abc='root'
the ......