配置高可用性的MySQL服务器负载均衡群集

  • 来源: 天新网 作者: 若水   2008-05-08/08:52
  • MYSQL客户端下载:Navicat for MySQL简体中文版V8.1.20

    这篇论坛文章要介绍了配置一个高可用性的MySQL服务器负载均衡群集的具体过程,详细内容请参考下文:

    本文将告诉你如何配置一个三个节点的MySQL 5数据库服务器群集:两个存储节点和一个

    管理节点。这个群集是由用提供“heartbeat心跳”(用来检查另外一个节点是否活动)和

    “ldirectord”(将请求分发到MySQL群集的节点)的Ultra Monkey安装包的两个节点组成的

    一个高可用性负载均衡器。

    本文我们的每个节点使用Debian Sarge Linux系统。其它Linux发行版本的安装可能一点点

    区别。MySQL的版本我们使用5.0.19。如果你不想使用MySQL 5,你也可以使用MySQL 4.1,尽

    管我还没有测试过。

    本文是一篇实践应用指导;它没有涉及太多的理论。关于群集的理论你可以在网上找到很多。

    一 服务器

    我使用下面的Debian服务器,它们都在同一个网段(本例如:192.168.0.x):

    sql1.test.com: 192.168.0.101 MySQL 群集节点 1

    sql2.test.com: 192.168.0.102 MySQL 群集节点 2

    loadb1.test.com: 192.168.0.103 负载均衡 1 / MySQL 群集管理服务器

    loaDB2.test.com: 192.168.0.104 负载均衡 2

    另外我们需要一个虚拟IP地址:192.168.0.105。它会安排给这个MySQL群集的负载均衡,以便于

    应用程序通过统一单独的IP地址来访问群集。

    尽管我们想在MySQL群集中使用两个节点,但是我们仍然需要第三个节点,MySQL群集管理服务器

    ,主要的一个原因是:如果其中一个MySQL群集节点坏了,而MySQL群集管理服务器没有运行,那

    么两个群集节点上的数据将会不一致(“split brain”)。我们需要它来配置MySQL群集.

    因此我们的安装一般需要五台机器:

    2个MySQL群集节点 + 1个群集管理服务器 + 2个负载均衡 = 5

    因为群集管理服务器没有使用多少资源,系统将会空着什么都不做,所以我们可以把我们的第一

    个负载均衡和它一起放在同一台机器上,这样可以节约我们一台服务器,所以最好我们只需要四台

    机器。

    二 配置MySQL群集管理服务器

    首先我们要下载MySQL 5.0.19,并安装群集管理服务器(ndb_mgmd)和群集管理客户端 (ndb_mgm - 它

    可以用来监控群集的运行情况). 下面的步骤是在loadb1.test.com (192.168.0.103)上进行的:

    loadb1.test.com:

    mkdir /usr/src/mysql-mgm

    cd /usr/src/mysql-mgm

    wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-\

    glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/

    tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz

    cd mysql-max-5.0.19-linux-i686-glibc23

    mv bin/ndb_mgm /usr/bin

    mv bin/ndb_mgmd /usr/bin

    chmod 755 /usr/bin/ndb_mg*

    cd /usr/src

    rm -rf /usr/src/mysql-mgm

    下一步,我们必须创建群集的配置文件,/var/lib/mysql-cluster/config.ini:

    loadb1.test.com:

    mkdir /var/lib/mysql-cluster

    cd /var/lib/mysql-cluster

    vi config.ini

    ———-

    [NDBD DEFAULT]

    NoOfReplicas=2

    [MYSQLD DEFAULT]

    [NDB_MGMD DEFAULT]

    [TCP DEFAULT]

    # Section for the cluster management node

    [NDB_MGMD]

    # IP address of the management node (this system)

    HostName=192.168.0.103

    # Section for the storage nodes

    [NDBD]

    # IP address of the first storage node

    HostName=192.168.0.101

    DataDir= /var/lib/mysql-cluster

    [NDBD]

    # IP address of the second storage node

    HostName=192.168.0.102

    DataDir=/var/lib/mysql-cluster

    # one [MYSQLD] per storage node

    [MYSQLD]

    [MYSQLD]

    ———-

    实际应用中请将文件中的IP地址换成你相应的IP。

    这篇论坛文章要介绍了配置一个高可用性的MySQL服务器负载均衡群集的具体过程,详细内容请参考下文:

    本文将告诉你如何配置一个三个节点的MySQL 5数据库服务器群集:两个存储节点和一个

    管理节点。这个群集是由用提供“heartbeat心跳”(用来检查另外一个节点是否活动)和

    “ldirectord”(将请求分发到MySQL群集的节点)的Ultra Monkey安装包的两个节点组成的

    一个高可用性负载均衡器。

    本文我们的每个节点使用Debian Sarge Linux系统。其它Linux发行版本的安装可能一点点

    区别。MySQL的版本我们使用5.0.19。如果你不想使用MySQL 5,你也可以使用MySQL 4.1,尽

    管我还没有测试过。

    本文是一篇实践应用指导;它没有涉及太多的理论。关于群集的理论你可以在网上找到很多。

    一 服务器

    我使用下面的Debian服务器,它们都在同一个网段(本例如:192.168.0.x):

    sql1.test.com: 192.168.0.101 MySQL 群集节点 1

    sql2.test.com: 192.168.0.102 MySQL 群集节点 2 #p#分页标题#e#

    loadb1.test.com: 192.168.0.103 负载均衡 1 / MySQL 群集管理服务器

    loaDB2.test.com: 192.168.0.104 负载均衡 2

    另外我们需要一个虚拟IP地址:192.168.0.105。它会安排给这个MySQL群集的负载均衡,以便于

    应用程序通过统一单独的IP地址来访问群集。

    尽管我们想在MySQL群集中使用两个节点,但是我们仍然需要第三个节点,MySQL群集管理服务器

    ,主要的一个原因是:如果其中一个MySQL群集节点坏了,而MySQL群集管理服务器没有运行,那

    么两个群集节点上的数据将会不一致(“split brain”)。我们需要它来配置MySQL群集.

    因此我们的安装一般需要五台机器:

    2个MySQL群集节点 + 1个群集管理服务器 + 2个负载均衡 = 5

    因为群集管理服务器没有使用多少资源,系统将会空着什么都不做,所以我们可以把我们的第一

    个负载均衡和它一起放在同一台机器上,这样可以节约我们一台服务器,所以最好我们只需要四台

    机器。

    二 配置MySQL群集管理服务器

    首先我们要下载MySQL 5.0.19,并安装群集管理服务器(ndb_mgmd)和群集管理客户端 (ndb_mgm - 它

    可以用来监控群集的运行情况). 下面的步骤是在loadb1.test.com (192.168.0.103)上进行的:

    loadb1.test.com:

    mkdir /usr/src/mysql-mgm

    cd /usr/src/mysql-mgm

    wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-\

    glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/

    tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz

    cd mysql-max-5.0.19-linux-i686-glibc23

    mv bin/ndb_mgm /usr/bin

    mv bin/ndb_mgmd /usr/bin

    chmod 755 /usr/bin/ndb_mg*

    cd /usr/src

    rm -rf /usr/src/mysql-mgm

    下一步,我们必须创建群集的配置文件,/var/lib/mysql-cluster/config.ini:

    loadb1.test.com:

    mkdir /var/lib/mysql-cluster

    cd /var/lib/mysql-cluster

    vi config.ini

    ———-

    [NDBD DEFAULT]

    NoOfReplicas=2

    [MYSQLD DEFAULT]

    [NDB_MGMD DEFAULT]

    [TCP DEFAULT]

    # Section for the cluster management node

    [NDB_MGMD]

    # IP address of the management node (this system)

    HostName=192.168.0.103

    # Section for the storage nodes

    [NDBD]

    # IP address of the first storage node

    HostName=192.168.0.101

    DataDir= /var/lib/mysql-cluster

    [NDBD]

    # IP address of the second storage node

    HostName=192.168.0.102

    DataDir=/var/lib/mysql-cluster

    # one [MYSQLD] per storage node

    [MYSQLD]

    [MYSQLD]

    ———-

    实际应用中请将文件中的IP地址换成你相应的IP。

    你应该看到像这样的输出:

    MySQL> SELECT * FROM testtable;

    +——+

    | i |

    +——+

    | 1 |

    | 2 |

    +——+

    2 rows in set (0.05 sec)

    所以每个群集节点都有着相同的数据!

    现在让我们看看如果我们停止节点1(sql1.example.com):运行

    sql1.example.com:

    killall ndbd

    并检查

    ps aux | grep ndbd | grep -iv grep

    看看所有的ndbd进程已经结束了。如果你仍然看见ndbd进程,再运行

    killall ndbd

    直到所有的ndbd进程都结束。

    现在让在我们的管理服务器上,检查群集的状态(loadb1.example.com):

    loadb1.example.com:

    ndb_mgm

    在ndb_mgm控制台上输入

    show;

    你应该看到这些:

    ndb_mgm> show;

    Connected to Management Server at: localhost:1186

    Cluster Configuration

    ———————

    [ndbd(NDB)] 2 node(s)

    id=2 (not connected, accepting connect from 192.168.0.101)

    id=3 @192.168.0.102 (Version: 5.0.19, Nodegroup: 0, Master)

    [ndb_mgmd(MGM)] 1 node(s)

    id=1 @192.168.0.103 (Version: 5.0.19)

    [mysqld(API)] 2 node(s)

    id=4 @192.168.0.101 (Version: 5.0.19)

    id=5 @192.168.0.102 (Version: 5.0.19)

    ndb_mgm>

    你看见,sql1.example.com节点没有连接上了。

    输入:

    quit;

    退出ndb_mgm控制台。

    让我们检查sql2.example.com节点:

    sql2.example.com:

    mysql -u root -p

    USE mysqlclustertest;

    SELECT * FROM testtable;

    quit;

    SELECT查询出的结果应该依然是:

    mysql> SELECT * FROM testtable;

    +——+

    | i |

    +——+

    | 1 |

    | 2 |

    +——+

    2 rows in set (0.17 sec)

    Ok,所有的测试都正常,现在让我们再次启动sql1.test.com节点:

    sql1.example.com:

    ndbd #p#分页标题#e#

    五 如何重新启动群集

    现在让我们设想你由于修改了loadb1.test.com节点上的/var/lib/mysql-cluster/config.ini

    或者其它原因,需要重新启动MySQL群集。为了这样做,你要使用loadb1.example.com节点上的

    ndb_mgm群集管理客户端:

    loadb1.test.com:

    ndb_mgm

    在ndb_mgm控制台上,你输入

    shutdown;

    你将看到像这样的信息:

    ndb_mgm> shutdown;

    Node 3: Cluster shutdown initiated

    Node 2: Node shutdown completed.

    2 NDB Cluster node(s) have shutdown.

    NDB Cluster management server shutdown.

    ndb_mgm>

    这意味着群集节点sql1.test.com和sql2.test.com,已经群集管理服务器都已经关闭。

    运行

    quit;

    退出 ndb_mgm 控制台。

    为启动群集管理服务器,在loadb1.test.com上这样做:

    loadb1.test.com:

    ndb_mgmd -f /var/lib/mysql-cluster/config.ini

    并在sql1.test.com 和 sql2.test.com 上运行:

    sql1.example.com / sql2.example.com:

    ndbd

    或者,你刚修改过loadb1.test.com上的/var/lib/mysql-cluster/config.ini文件:

    ndbd –initial

    在这之后,你可以在loadb1.test.com上检查看看群集是否已经重启:

    loadb1.test.com:

    ndb_mgm

    在ndb_mgm控制台,输入

    show;

    来查看当前群集的状态。所有节点重启后可能需要一点点时间来报告已经连接上。

    输入:

    quit;

    退出ndb_mgm控制台。

    六 配置负载均衡

    我们的MySQL群集已经现在完成了,你现在可以开始使用它了。然而,我们没有一个访问群集的

    单独的IP地址,这意味着你必须配置应用程序一部分使用MySQL群集节点1(sql1.test.com),另

    外的部分使用节点2(sql2.test.com).当然,所有的应用程序只是需要使用一个节点,但如果你

    不想在群集节点之间分流负载,那你拥有一个群集的目的是什么?另外一个问题是,如果一个群集

    节点坏掉了怎么办?那么使用这个群集节点的应用程序将根本不能够工作了。

    这里的解决方案是在MySQL群集前端配置一个负载均衡器来在每个MySQL群集节点之间平衡负载。

    负载均衡器在群集节点之间配置一个共享的虚拟IP地址,所有你的应用程序使用这个虚拟IP地址来

    访问群集。如果其中一个节点坏掉,那么你的应用程序将仍然可以工作,因为负载均衡器将请求转移

    到了工作正常的另外一个节点。

    现在在这个例子中负载均衡器成为了瓶颈。如果这个负载均衡器坏掉了怎么办呢?因此我们将以(active/passive)

    主动/被动安装方式来配置两个负载均衡器。这意味着我们有一个负载均衡器是主动的,另外一个是

    热备的,当主动的那个坏掉了,它将会变为主动。每个负载均衡器都使用heartbeat(心跳)来检查

    另外一个负载均衡器的活动情况,同时负载均衡器也使用ldirectord,它负责将流量分配到群集节点。

    heartbeat和ldirectord都在我们将要安装的 Ultra Monkey 安装包中。

    loadb1.test.com 和 loaDB2.test.com 节点的系统内核支持IPVS(IP虚拟服务器) 非常重要。

    IPVS是在Linux内核的传输层执行负载均衡的。

    6.1 安装 Ultra Monkey

    好,现在让我们开始: 首先我们启用loadb1.test.com 和 loadb2.test.com节点上IPVS:

    loadb1.example.com / loadb2.example.com:

    modprobe ip_vs_dh

    modprobe ip_vs_ftp

    modprobe ip_vs

    modprobe ip_vs_lblc

    modprobe ip_vs_lblcr

    modprobe ip_vs_lc

    modprobe ip_vs_nq

    modprobe ip_vs_rr

    modprobe ip_vs_sed

    modprobe ip_vs_sh

    modprobe ip_vs_wlc

    modprobe ip_vs_wrr

    为了在启动时IPVS模块,我们在/etc/modules列举了模块:

    loadb1.test.com / loadb2.test.com:

    vi /etc/modules

    ip_vs_dh

    ip_vs_ftp

    ip_vs

    ip_vs_lblc

    ip_vs_lblcr

    ip_vs_lc

    ip_vs_nq

    ip_vs_rr

    ip_vs_sed

    ip_vs_sh

    ip_vs_wlc

    ip_vs_wrr

    现在我们编辑/etc/apt/sources.list,添加 Ultra Monkey 的下载点,然后我们安装Ultra Monkey:

    loadb1.test.com / loadb2.test.com:

    vi /etc/apt/sources.list

    deb http://www.ultramonkey.org/download/3/ sarge main

    deb-src http://www.ultramonkey.org/download/3 sarge main

    apt-get update

    apt-get install ultramonkey libdbi-Perl libdbd-mysql-perl libmysqlclient14-dev

    现在Ultra Monkey已经安装了,如果你看到下面这样的警告:

    | libsensors3 not functional

    |

    | It appears that your kernel is not compiled with sensors support. As a

    | result, libsensors3 will not be functional on your system.

    |

    | If you want to enable it, have a look at “I2C Hardware Sensors Chip

    | support” in your kernel configuration.

    你可以忽略它。 #p#分页标题#e#

    回答下面的问题:

    Do you want to automatically load IPVS rules on boot?

    <-- No

    Select a daemon method.

    <-- none

    我刚安装的libdbd-mysql-perl安装包不能够在MySQL 5(我们在MySQL群集上使用MySQL 5),

    因此我们安装最新的DBD::mysql Perl安装包:

    loadb1.test.com / loaDB2.test.com:

    cd /tmp

    wget http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-MySQL-3.0002.tar.gz

    tar xvfz DBD-mysql-3.0002.tar.gz

    cd DBD-mysql-3.0002

    Perl Makefile.PL

    make

    make install

    我们必须先启用packet forwarding:

    loadb1.example.com / loadb2.example.com:

    vi /etc/sysctl.conf

    # Enables packet forwardingnet.ipv4.ip_forward = 1

    6.2 配置heartbeat(心跳)

    我们通过创建三个文件(loadb1.test.com 和 loadb2.test.com的文件必须完全一样)来配置heartbeat:

    loadb1.test.com / loadb2.test.com:

    vi /etc/ha.d/ha.cf

    logfacility local0

    bcast eth0

    mcast eth0 225.0.0.1 694 1 0

    auto_failback off

    node loadb1

    node loadb2

    respawn hacluster /usr/lib/heartbeat/ipfail

    apiauth ipfail gid=haclient uid=hacluster

    请记住:你必须列出节点名称(本例中是loadb1 和 loadb2)

    uname -n

    除了这些,我们不需要对这个文件做任何修改。

    vi /etc/ha.d/haresources

    loadb1 \

    ldirectord::ldirectord.cf \

    LVSSyncDaemonSwap::master \

    IPaddr2::192.168.0.105/24/eth0/192.168.0.255

    你必须列举其中一个负载均衡节点名称(这里是:loadb1),并且列出

    虚拟IP地址(192.168.0.105)和广播地址(192.168.0.255).

    vi /etc/ha.d/authkeys

    auth 3

    3 md5 somerandomstring

    somerandomstring是loadb1 和 loadb2 用来相互认证的两个heartbeat守护进程的密码。

    这里设置成你自己的密码。你可以选择3种加密方式。我一般使用md5来加密。

    /etc/ha.d/authkeys应该是root帐号只读,这里我们这样做:

    loadb1.test.com / loadb2.test.com:

    chmod 600 /etc/ha.d/authkeys

    6.3 配置 ldirectord

    现在我们为ldirectord创建配置文件, 负载均衡器:

    loadb1.example.com / loadb2.example.com:

    vi /etc/ha.d/ldirectord.cf

    # Global Directives

    checktimeout=10

    checkinterval=2

    autoreload=no

    logfile="local0"

    quiescent=yes

    virtual = 192.168.0.105:3306

    service = mysql

    real = 192.168.0.101:3306 gate

    real = 192.168.0.102:3306 gate

    checktype = negotiate

    login = "ldirector"

    passwd = "ldirectorpassword"

    database = "ldirectordb"

    request = "SELECT * FROM connectioncheck"

    scheduler = wrr

    请填入正确的虚拟IP地址(192.168.0.105)和正确的MySQL群集节点的IP地址(192.168.0.101 和 192.168.0.102)。

    3306是MySQL运行时默认的端口。我们也指定了一个MySQL用户(ldirector)和密码(ldirectorpassword),一个数据库(ldirectordb)和

    一条SQL查询。ldirectord 使用这些信息来测试MySQL群集节点,以此来检查它们的是否一直可用。下一步我们将用ldirector用户来

    创建ldirectordb数据库。

    现在我们为heartbeat创建系统必需的启动连接,并移除ldirectord(因为ldirectord将由heartbeat来启动):

    loadb1.test.com / loadb2.test.com:

    update-rc.d -f heartbeat remove

    update-rc.d heartbeat start 75 2 3 4 5 . stop 05 0 1 6 .

    update-rc.d -f ldirectord remove

    6.4 创建数据库ldirector

    下面我们在MySQL群集节点sql1.test.com 和 sql2.test.com上创建ldirector数据库。这个数据库将会用于我们的负载均衡器来检查

    MySQL群集节点的可用性。

    sql1.test.com:

    mysql -u root -p

    GRANT ALL ON ldirectordb.* TO 'ldirector'@'%' IDENTIFIED BY 'ldirectorpassword';

    FLUSH PRIVILEGES;

    CREATE DATABASE ldirectordb;

    USE ldirectordb;

    CREATE TABLE connectioncheck (i INT) ENGINE=NDBCLUSTER;

    INSERT INTO connectioncheck () VALUES (1);

    quit;

    sql2.test.com:

    mysql -u root -p

    GRANT ALL ON ldirectordb.* TO 'ldirector'@'%' IDENTIFIED BY 'ldirectorpassword';

    FLUSH PRIVILEGES;

    CREATE DATABASE ldirectordb;

    quit;

    6.4 为负载均衡准备MySQL群集节点

    最后我们必须配置MySQL群集节点sql1.test.com 和 sql2.test.com来接受虚拟IP地址192.168.0.105。

    sql1.test.com / sql2.test.com:

    apt-get install iproute

    在/etc/sysctl.conf里面添加下面的内容:

    vi /etc/sysctl.conf

    # Enable configuration of arp_ignore option

    net.ipv4.conf.all.arp_ignore = 1 #p#分页标题#e#

    # When an arp request is received on eth0, only respond if that address is

    # configured on eth0. In particular, do not respond if the address is

    # configured on lo

    net.ipv4.conf.eth0.arp_ignore = 1

    # Ditto for eth1, add for all ARPing interfaces

    #net.ipv4.conf.eth1.arp_ignore = 1

    # Enable configuration of arp_announce option

    net.ipv4.conf.all.arp_announce = 2

    # When making an ARP request sent through eth0 Always use an address that

    # is configured on eth0 as the source address of the ARP request. If this

    # is not set, and packets are being sent out eth0 for an address that is on

    # lo, and an arp request is required, then the address on lo will be used.

    # As the source IP address of arp requests is entered into the ARP cache on

    # the destination, it has the effect of announcing this address. This is

    # not desirable in this case as adresses on lo on the real-servers should

    # be announced only by the Linux-director.

    net.ipv4.conf.eth0.arp_announce = 2

    # Ditto for eth1, add for all ARPing interfaces

    #net.ipv4.conf.eth1.arp_announce = 2

    sysctl -p

    将下面这段加入到/etc/network/interfaces:

    sql1.test.com / sql2.test.com:

    vi /etc/network/interfaces

    auto lo:0

    iface lo:0 inet static

    address 192.168.0.105

    netmask 255.255.255.255

    pre-up sysctl -p > /dev/null

    ifup lo:0

    七.启动负载均衡器并测试

    现在我们启动两个负载均衡管理器:

    loadb1.test.com / loadb2.test.com:

    /etc/init.d/ldirectord stop

    /etc/init.d/heartbeat start

    如果你没有看见错误,你需要现在重启每个负载均衡器:

    loadb1.test.com / loadb2.test.com:

    shutdown -r now

    重启之后我们可以检查是否两个负载均衡器象期望一样工作

    loadb1.test.com / loadb2.test.com:

    ip addr sh eth0

    主动的负载均衡器应该列出了虚拟IP地址(192.168.0.105):

    2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:16:3e:45:fc:f8 brd ff:ff:ff:ff:ff:ff

    inet 192.168.0.103/24 brd 192.168.0.255 scope global eth0

    inet 192.168.0.105/24 brd 192.168.0.255 scope global secondary eth0

    被动(热备)的负载均衡器应该显示如下:

    2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:16:3e:16:c1:4e brd ff:ff:ff:ff:ff:ff

    inet 192.168.0.104/24 brd 192.168.0.255 scope global eth0

    loadb1.test.com / loadb2.test.com:

    ldirectord ldirectord.cf status

    主动负载均衡器上的输出:

    ldirectord for /etc/ha.d/ldirectord.cf is running with pid: 1603

    被动负载均衡器上的输出:

    ldirectord is stopped for /etc/ha.d/ldirectord.cf

    loadb1.example.com / loadb2.example.com:

    ipvsadm -L -n

    主动负载均衡器上的输出:

    IP Virtual Server version 1.2.1 (size=4096)

    Prot LocalAddress:Port Scheduler Flags

    -> RemoteAddress:Port Forward Weight ActiveConn InActConn

    TCP 192.168.0.105:3306 wrr

    -> 192.168.0.101:3306 Route 1 0 0

    -> 192.168.0.102:3306 Route 1 0 0

    被动负载均衡器上的输出:

    IP Virtual Server version 1.2.1 (size=4096)

    Prot LocalAddress:Port Scheduler Flags

    -> RemoteAddress:Port Forward Weight ActiveConn InActConn

    loadb1.test.com / loadb2.test.com:

    /etc/ha.d/resource.d/LVSSyncDaemonSwap master status

    主动负载均衡器上的输出:

    master running

    (ipvs_syncmaster pid: 1766)

    被动负载均衡器上的输出:

    master stopped

    (ipvs_syncbackup pid: 1440)

    如果你的测试都是正常的,你现在可以从相同网络(192.168.0.x)中的其它服务器用虚拟IP地址192.168.0.105来访问MySQL数据库:

    mysql -h 192.168.0.105 -u ldirector -p

    (请记住:你的MySQL客户端必须至少是4.1版本的;旧的版本不能运行MySQL5。)

    你现在可以关掉一个MySQL群集节点来测试;你应该仍然可以连接到MySQL数据库。

    八 注解

    运行一个MySQL群集时,这里有一些重要的东西需要记住:

    –所有的数据都是存在内存! 因此你的群集节点上需要大容量的内存。这里有每个节点需要内存

    容量的计算公式:

    (数据库大小SizeofDatabase * 复制数量NumberOfReplicas * 1.1 ) / 数据节点数量NumberOfDataNodes

    所以如果你有一个数据库的大小是1GB,你应该为每个节点配备1.1GB内存!

    –群集管理节点在监听1186端口上的任意连接。所以这意味着不是很安全,所以你应当在一个独立的网络上运行MySQL群集。


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多