上一主题: 具有多节点主-主复制的 N 层应用(适合于负载均衡)

下一主题: PGSQL64-PostgreSQL 数据库组件


在不同工具上运行的 N 层应用(适合于负载均衡和故障切换)

下图显示 MYSQLR64 组件在运行于多个工具中的 Web 应用中的典型用法。 使用此设置时,可以有两个或多个相同的应用在不同工具中运行,同时将数据库复制到主-主设置中的所有应用。 这在以下两种情况下很有用:

主应用

在不同工具上运行的 N 层应用(适用于执行负载均衡和故障切换)

从应用

从应用

正在使用的组件:

客户端请求到达用户网关。 该网关将请求转发给 web_lb 负载均衡器,后者将请求定向到 Web 服务器 web1 和 web2 中的一个。 Web 服务器访问主数据库。 主组件连接到远程(从)应用以复制数据库,仅有的差别是从服务器的 server_id 以及网络设置。 远程应用通过 vpn 网关连接到主组件,该网关配置为仅允许来自远程应用的 vpn 网关的连接。 两个应用中的主组件和从组件在主-主设置中运行,这样它们始终具有相同的数据。

示例属性配置(未列出的属性应保留为默认值):

通过端口 8080 上的 admin 网关可以对主组件和从组件进行 Web 访问。

主组件

属性名

说明

auto_create

1

如果卷为空,则创建数据库。

error_log_filename

master-db.error

要在日志数据卷上存储的错误日志文件的名称。

error_log_level

error

错误日志记录级别

server_id

1

主服务器(不一定是 1,应与从服务器上的 server_id 不同)

rpl_mode

master

写入二进制日志,以进行复制

主 vpn

属性名

说明

mode

server

作为服务器运行。

通道

证书

使用 SSL 证书。

tcp_ports

3306,22

允许使用 MYSQLR64 需要的端口。

ip_addr

master_vpn_ip

主应用中的 VPN 的 IP 地址。

remote_host

slave_vpn_ip

从应用中的 VPN 的 IP 地址。

从组件

属性名

说明

auto_create

1

如果卷为空,则创建数据库。

error_log_filename

slave-db.error

要在日志数据卷上存储的错误日志文件的名称。

error_log_level

error

错误日志记录级别

server_id

2

从服务器(不一定是 2,应与主服务器上的 server_id 不同)

rpl_mode

slave

连接到主服务器

从 vpn

属性名

说明

mode

client

作为客户端运行。

通道

证书

使用 SSL 证书。

auth_path

"client1"

SSL 证书文件的路径。

ip_addr

slave_vpn_ip

从应用中的 VPN 的 IP 地址。

remote_host

master_vpn_ip

主应用中的 VPN 的 IP 地址。

远程应用是精确副本,仅有的差别是 user、admin 和 vpn 组件的网络设置、vpn 组件与 master=/=slave 之间的连接以及 master=/=slave 组件的 server_id(它应该是唯一的)。

在 MYSQLR 和 MYSQLR64 之间进行迁移

如果需要从 MYSQLR 迁移到 MYSQLR64(或执行相反的迁移),不能只在 64 位组件上使用 32 位组件中的卷(反之亦然),因为这可能会导致数据损坏。 实现此目的的建议方法是是在旧组件上转储数据库,将转储的文件传输到新组件,然后将数据库导入新组件。

相同的程序可用于从较旧的数据库组件(MYSQL、MYSQL5、MYSQL64)或 CA AppLogic 组件上未运行的 mysql 数据库中迁移数据库。

要迁移数据库:

说明

请注意下列各项:

重要信息! 为数据库创建用户时,请确认所创建的用户对他们连接时所在的主机没有任何限制。 例如:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
    ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
组件中使用的第三方开源软件

MYSQLR64 除了使用其基类 LUX64 所用的第三方开源软件包之外,还使用下列第三方/开源软件包。

软件

版本

已修改

许可

说明

aspell

0.60.3-7.1

No

LGPLv2.1

N/A

aspell-en

6.0-2.1

No

LGPLv2.1

N/A

cURL

7.15.5-2

No

MIT

N/A

device-mapper-event

1.02.32-1

No

GPLv2

N/A

freetype

1.02.32-1

No

FTL

N/A

gmp

4.1.4-10.el5

No

LGPLV2.1

N/A

libidn

0.6.5-1.1

No

LGPLv2.1

N/A

libjpeg

6b-37

No

可分发

N/A

libpng

1.2.10-7.0.2

No

zlib/libpng

N/A

lvm2

2.6.26-2.1.2.8

No

GPLv2.0

N/A

mysql

5.0.77-3.el5

No

GPL

N/A

mysql-server

5.0.77-3.el5

No

GPLv2

N/A

perl-DBD-MySQL

3.0007-2.el5

No

Artistic

N/A

perl-DBI

1.52-2.el5

No

Artistic

N/A

php-cli

5.1.6-23.el5

No

PHPv3.01

N/A

php-common

5.1.6-23.el5

No

PHPv3.01

N/A

php-gd

5.1.6-23.el5

No

PHPv3.01

N/A

php-mbstring

5.1.6-23.el5

No

PHPv3.01

N/A

php-mysql

5.1.6-23.el5

No

PHPv3.01

N/A

php-pdo

5.1.6-23.el5

No

PHPv3.01

N/A

rsync

2.6.8-3.1

No

GPLv2

N/A

samba-client

3.0.28-1.el5_2.1

No

GPLv2

N/A

samba-common

3.0.28-1.el5_2.1

No

GPLv2

N/A

sudo

1.6.8p12-10

No

ISC

N/A

lighttpd

1.4.18-1.el5.rf

No

BSD

N/A

perl-IPC-Run

0.84-1.el5.rf

No

Artistic

N/A

perl-Time-Duration

1.06-1.el5.rf

No

Artistic

N/A

phpMyAdmin

2.11.10-1

No

GPLv2

N/A

MYSQLR 故障排除

MYSQLR 组件在重新启动时冻结

从 MYSQLR 1.6.2 开始,您可以设置/更改根数据库帐户的密码。 但是,MSYQLR 组件有几个主机名不同的根帐户。 在设置/更改密码时,应始终使用 root@% 帐户。 root@% 帐户是连接到 MYSQLR in 终端的组件的帐户,将针对该帐户进行身份验证。 其他根帐户仅由本地用户使用,并且决不可为这些根帐户设置密码,因为这样做将导致 MYSQLR 组件无法启动。

注意:如果没有为 root@localhost 帐户设置密码,则这不是安全问题,因为此帐户只能由组件上的本地用户使用,并且有权访问组件的任何人都可以更改密码。

恢复在更改根数据库密码之后无法启动的 MYSQLR 组件

要恢复因更改数据库根密码而无法启动的组件,请执行以下步骤:

  1. 在调试模式下启动组件或应用。
    组件启动命令
    comp start main.MYSQLR --debug 
    
    应用启动命令
    app start --debug 
    

    在启动组件几秒钟之后,您应该能够登录到该组件。 不必等待组件超时。

  2. 通过 SSH 登录到组件并执行以下命令:
    mysql -p -e "update mysql.user set Password='' where User='root'" 
    mysqladmin -p flush-privileges 
    mysql -e 'update mysql.user set password=PASSWORD("NEWPASSWORD") where User="root" and Host="%"' 
    mysqladmin flush-privileges
    
  3. 重新启动组件以验证它是否已启动,以及用户 root 的“in”终端上的 mysql 连接是否需要密码。