科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道数据库负载均衡功能优化代码

数据库负载均衡功能优化代码

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文详细介绍了负载均衡功能的域名服务器和数据库优化代码的相关内容,通过对连接配置文件,语句优化代码的介绍,相信大家能完善系统。假设用户为三台Slave分配的DNS名字为mysqlslave.yourdomain,DNS服务器区域文件/var/named/yourdomain.zone中应包含如下数据项:  sqlmaster.yourdomain.

来源:ZDNet网络频道 2010年4月23日

关键字: 负载均衡 数据库 网络

  • 评论
  • 分享微博
  • 分享邮件

本文详细介绍了负载均衡功能的域名服务器和数据库优化代码的相关内容,通过对连接配置文件,语句优化代码的介绍,相信大家能完善系统。

通过MySQL负载均衡功能的设置文章,相信大家已经基本上对一些设置有所了解了,那么现在我们在对网络域名服务器和数据库优化做一下详细介绍。其中包括了相关内容的代码配置。

配置网络DNS服务器

在BIND DNS服务器中,为三台从属服务器Slave配置同一个名字,客户端的查询检索操作将由DNS服务器定向到其中的一台Slave?因此,对于同一名字,不同的客户端会定向到不同的地址,访问不同的MySQL服务器,从而达到负载均衡功能实现的目的?假设用户为三台Slave分配的DNS名字为mysqlslave.yourdomain,DNS服务器区域文件/var/named/yourdomain.zone中应包含如下数据项:

sqlmaster.yourdomain. IN A 192.168.1.100

sqlslave1.yourdomain. IN A 192.168.1.101

sqlslave2.yourdomain. IN A 192.168.1.102

sqlslave3.yourdomain. IN A 192.168.1.103

sqlslave IN CNAME sqlslave1

sqlslave IN CNAME sqlslave2

sqlslave IN CNAME sqlslave3

当客户端进行查询操作时,提交给主机sqlslave.yourdomain的请求将由DNS服务器随机定向到三台Slave中的一台,由其执行查询作业,返回结果?从而在三台Slave之间实现查询级别的负载均衡功能?

应用系统程序代码优化

实际应用中,对数据库的写入操作相对查询操作少得多,因此,优化应用程序的数据库连接代码,把写入操作定向到Master服务器,查询操作定向到Slave服务器,提供主服务器和从属服务器之间更新?查询的负载均衡功能?本文以PHP数据库连接代码为例,简要介绍代码优化方法?

(1).准备不同的数据库连接配置文件

准备两个数据库连接文件mysql_connect_master.php和mysql_connect_slave.php,其文件内容如下:

mysql_connect_master.php文件的内容:

// Connect to the Database Server

$linkID = @mysql_connect("sqlmaster.yourdomain", "user", "password") or die("Sorry, could not connect to the database!");

// Select the Database

@mysql_select_db("repl_db") or die("Sorry, Could not select database!");

>

mysql_connect_slave.php文件的内容:

// Connect to the Database Server

$linkID = @mysql_connect("sqlslave.yourdomain", "user", "password") or die("Sorry, could not connect to the database!");

// Select the Database

@mysql_select_db("repl_db") or die("Sorry, Could not select database!");

>

(2).优化程序SQL语句代码

对应用程序中访问数据库的代码段做出如下优化:

...

// $sql is the query string to be committed to MySQL server.

if ( stripos( $sql, " SELECT" ) )

{

include_once("./mysql_connect_slave.php");

...

mysql_close();

}

else

{

include_once("./mysql_connect_master.php");

...

mysql_close();

}

...

>

说明:每当向MySQL服务器提交数据库操作时,加入一个if-else判断语句对变量$sql进行判断定向,如果是SELECT查询操作,将其定向到从属服务器Slave中的一个;如果是其它更新语句,则将其定向到主服务器Master?此处代码段是应用系统实现负载均衡的关键,用户务必根据自己实际情况,写出准确无误的代码?每次对数据库操作完毕都要及时释放数据库连接,以免更新?查询操作分别定向失败,影响系统负载均衡功能?这样做虽然在一定程度上增加Web服务器或应用服务器的开销,但与MySQL服务器集群负载均衡功能带来的大幅性能提升及冗余容错特性相比,这个开销绝对是物超所值!

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章