上一主题: MYSQL5-MySQL 数据库组件

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

MYSQLR、MYSQLR64-适合复制的 MySQL 数据库组件

MYSQLR64:适用于复制的 MySQL 数据库组件

概览

目录

系统

类别

数据库组件

用户卷

yes

最小 内存

160 MB

操作系统

Linux

问题/注释

咨询论坛

功能概述

MYSQLR64 是基于 MySQL 数据库引擎的数据库组件 (http://www.mysql.org)。 它提供一种简便方法将数据库添加到任何应用。 这些组件还可用于复杂的 MYSQL 复制方案。 这些组件基于 MYSQL5 (CentOS 5.5/MySQL 5),并且还可处理数据库复制。

通过数据库复制,可以将数据从一个 MySQL 数据库服务器(称为主服务器)复制到一个或多个 MySQL 数据库服务器(称为从服务器)。 可以针对主服务器-从服务器复制、主服务器-主服务器复制以及涉及两个以上主服务器的复制设置 MYSQLR64 组件。

通过 Web 界面完成复制设置、管理和监控。 通过 Web 界面可以方便地开始复制,并且给主服务器造成的停机时间几乎为零。 出现问题时,还可以使用 Web 界面修复复制。 可以使用 Web 界面从早期数据库组件(例如 MYSQL 和 MYSQL5)复制数据库。 MYSQLR64 还提供了一种简便的方法用于管理和浏览您的数据库(基于 phpMyAdmin)。

在许多情况下,复制功能非常有用:

使用默认配置时,MYSQLR64 的功能与某个带有管理 Web 界面的 MYSQL5 组件完全相同。 要将 MYSQLR64 用于复制方案,至少需要提供两个使用适当配置的 MYSQLR64 组件(请参见典型用法)。

MYSQLR64 在应用定义的卷(可在每个 MYSQLR64 实例上配置)上存储数据库。 MYSQLR64 在空卷上启动时,将自动创建一个空数据库。

名称

最新版本

操作系统

!MySQL

说明

MYSQLR

2.0.3-1

CentOS 5.5

5.5.8

MYSQLR64

2.0.3-1

CentOS 5.5 (64 bit)

5.5.8

 

重要信息! 使用复制时,不应混合使用 32 位和 64 位 MYSQLR 组件,因为数据库文件是按原样从主服务器复制到从服务器的。 此外,32 位版本的组件中的数据卷不应与 64 位版本的相同组件一起使用(反之亦然)。 要在 32 位和 64 位 MYSQLR 版本之间迁移数据库,请根据此处所述,在一台主机上转储数据库,然后在另一台主机上导入这些数据库。

边界

资源

资源

最小值

最大值

默认值

CPU

0.10

16

0.40

内存

128 MB

32G

512 MB

带宽

1 Mbps

2 Gbps

250 Mbps

终端

名称

目录

协议

说明

in

in

MYSQL

接收 MySQL 数据库请求。

rin

in

Any

将该组件用作主组件的从 MYSQLR64 组件连接到此终端。

ui

in

HTTP

提供对 MYSQLR64 的 Web 界面的访问。

log

out

CIFS

连接到用于存储错误日志的 NAS 组件。 如果未使用该终端,则可将其保持未连接状态。

rout

out

Any

连接到主 MYSQLR64 服务器。 此终端可能一直保持未连接,仅应在复制方案中使用。

mon

out

CCE

发送性能和资源使用统计信息。 此终端可保持未连接状态。

默认接口已启用。 它用于诊断和故障排除(通过 SSH)。 此组件的未来版本可能会禁用 SSH 访问。
重要信息! rin 和 rout 终端用于 SSH (tcp 22) 和 MYSQL (tcp 3306) 数据。 在将网关/VPN 用于连接这些终端时,防火墙应配置为允许两个端口。

用户卷

说明

data

用于数据库数据存储的卷。 该卷是强制性卷。

binlogs

在复制模式(设置为 master 或 slave)下运行时用于二进制日志的卷。 此卷不是强制性卷,但如果在复制中使用该组件(将 rpl_mode 设置为除 none 之外的值)且不提供 binlogs 卷,该组件将无法启动。

数据卷可以选择在其顶级目录中包含一个 my.cnf 文件,该文件中包括 MYSQL 配置选项。 有关更多详细信息,请参阅自定义配置一节。 该功能在 MYSQLR64 1.6.1 或更高版本中可用。

重要信息!

要迁移旧组件(MYSQL、MYSQL5、MYSQL64)的数据库,从物理服务器的数据库或 MYSQLR(如果从 32 位迁移到组件的 64 位版本)的数据库迁移,有关其他组件的过程,请参阅“从其他组件迁移数据库”。

属性

属性名

类型

说明

auto_create

整数

当数据库不存在时是否创建它。 可能值为 1 和 0,1 表示创建数据库,0 表示阻止自动创建(以避免在卷损坏时意外覆盖)。 如果设置为 0,且数据卷上不存在数据库,则组件在维护模式下启动(组件将正确启动,但不启动 MySQL 后台进程,以便用户可以检查问题)。 默认是 1。

error_log_filename

字符串

错误日志文件相对于日志文件系统的名称(例如:/mysql_logs/my.log)。 路径中的目录是自动创建的。 如果为空,则将错误日志写入数据卷 (/mnt/data/error.log)。 默认值:(空)

error_log_level

字符串

错误日志记录级别。 可能值为 error 和 warn,error 表示只记录错误,warn 表示同时记录警告和错误。 此属性不区分大小写。 默认值:error

时区

字符串

指定在组件中使用的时区。 如果此属性为空,则时区未经修改且保持原样。 此处提供可支持时区的列表。 默认值:空

自 MYSQLR64 1.6.8 起,已删除 use_old_passwords 属性。 如果需要启用 old_passwords,请按如下所述创建自定义配置。

如果指定了 error_log_filename 但未连接 log 终端或者无法挂接文件系统,MYSQLR 组件将无法启动。

高级属性

属性名

类型

说明

server_id

整数

服务器 ID。 可能值为 1 到 10。 此属性可在执行复制时指定服务器的 ID。 有助于确保您为属于复制一部分的所有服务器设置唯一 ID。 默认值:1

rpl_mode

字符串

复制模式。 可能值包括 none(无复制)、master、slave 和 master_and_slave(用于一个服务器同时作为主服务器和从服务器的多主复制方案)。 默认值:none

web_pwd

字符串

Web 界面的身份验证密码。 此属性是可选的。 如果设置了此属性,将启动组件的 http 服务器,并在 ui 终端和默认界面上都会公开 Web 界面,可通过 CA 3Tera AppLogic 编辑器中的“登录 (Web)”选项来访问它。 默认值:(空)。

自定义配置

该功能在 MYSQLR64 1.6.1 或更高版本中可用。

MYSQLR64 允许使用自定义 MYSQL 配置文件,该文件可以提供其他配置选项或覆盖在 /etc/my.cnf 中指定的现有配置。

要使用自定义配置,请创建名为 my.cnf 的文件并将其放在数据卷的顶级目录中。 文件的格式应遵循 MYSQL 文档中所述的 MYSQL 选项文件语法。

例如:在使用 InnoDB 时可以使用以下内容调整 MYSQLR64 以提高性能 (为 MyISAM 优化了默认的 MYSQLR64 配置)。 该示例以使用 512M 内存(MYSQLR64 的默认设置)为基础。

[mysqld]
# Shrink down MyISAM buffers
key_buffer = 512K
myisam_sort_buffer_size = 512K

# Make InnoDB the default storage engine (optional)
default-storage-engine = INNODB

# Set InnoDB buffer size
innodb_buffer_pool_size=350M
innodb_log_file_size=128M
innodb_log_buffer_size=4M
innodb_thread_concurrency=8

# If you do not have too many tables use this option, so you will not have uncontrolled innodb main tablespace growth which you can’t reclaim.
innodb_file_per_table=1

重要信息! 在复制模式下使用时,只要您修复/启动复制,MYSQLR64 就会同步数据卷中的 my.cnf 文件,因此从服务器将与主服务器具有相同配置。

Web 界面

MYSQLR64 提供了一个 Web 界面,通过 CA 3Tera AppLogic 编辑器中的“登录 (Web)”选项在其 ui 终端和默认界面中均可访问该界面。 使用 Web 界面需要 HTTP 身份验证。 将用户名保留为空并使用 web_pwd 的值作为密码。 该界面具有以下功能:

使用 PhPMyAdmin 浏览并编辑数据库

复制设置和维护

将主-从复制添加到 MYSQLR64 组件

CA 3Tera AppLogic 使您可以在不丢失任何数据的情况下,将主-从复制添加到现有的 MYSQLR64 组件。

将主-从复制添加到 MYSQLR64 组件

  1. 在现有组件上将 rpl_mode 设置为 master
  2. 将新的 MYSQLR64 组件添加到具有空数据卷的应用。 将其 rout 终端连接到当前组件的 rin 终端。
  3. (可选)如果您将要在主-主复制中使用它,请将当前组件上排除的终端连接到新组件的 rin 终端。
  4. 重新启动应用。
  5. 登录到新组件的 Web 界面,并从“管理复制”选项卡选择“启动/修复复制”。 日志记录所用的时间取决于主服务器上的数据大小。 如果您使用 INSSLR 来访问 MYSQLR64,请帮助确保将超时属性设置为较大的值 (36000) 来避免超时。 确认在客户端的任何代理(最好根本不使用代理)中都没有超时。

在启动复制后,登录到两个 MYSQLR64 组件上的 Web 界面并验证复制状态。 在 5 分钟或更短的时间内,复制应在两个组件上运行。

将 MYSQLR64 组件添加到主-从复制

CA 3Tera AppLogic 使您可以在不丢失任何数据的情况下,将新的 MYSQLR64 组件添加到现有的主-主复制。

将 MYSQLR64 组件添加到主-从复制

  1. 将新的 MYSQLR64 组件添加到具有空数据卷的应用。 以 dbN 为例,假定您已经具有 N-1 个 MYSQLR64 组件 (3 <= N <= 10),且每个组件的 rout 终端连接到循环设置中下一个组件的 rin 终端(db1 rout 连接到 db2 rin,依此类推)。
  2. 将 dbN 的 rpl_mode 设置为 master_and_slave。
  3. 将 dbN-1 组件的 rout 终端连接到 dbN 组件的 rin 终端。
  4. 将 dbN 组件的 rout 终端连接到 db1 组件的 rin 终端。
  5. 重新启动应用,以使更改生效。 在重新启动之后,复制直到过程结束时才会同步。 在执行该过程期间,写入一个组件的数据可能不会在所有其他组件上复制。
  6. 登录到 dbN 组件的 Web 界面,并从“管理复制”选项卡选择“启动/修复复制”。 日志记录所用的时间取决于主服务器上的数据大小。 如果您使用 INSSLR 来访问 MYSQLR64,请帮助确保超时属性设置为较大的值 (36000) 来避免超时。 此外,帮助确保在客户端的任何代理(最好根本不使用代理)中都没有超时。
  7. 在启动复制后,登录到 dbN-1 的 Web 界面,并选择“重置主日志位置”。 日志记录使应用读取 dbN-1,并从开头读取 dbN 的二进制日志。

登录到所有 MYSQLR64 组件的 Web 界面并验证复制状态,在 5 分钟或更短的时间内复制应在所有组件上运行。

在主-从配置中修复复制

CA 3Tera AppLogic 使您可以在不丢失任何数据的情况下,在主-从设置中修复复制。

在主-从配置中修复复制

  1. 登录到从组件的 Web 界面,然后选择“启动/修复复制”。 日志记录所用的时间取决于主服务器上的数据大小。 在操作过程中,从组件上的 mysql 服务会停止。 主组件上未产生停机时间。 此操作相当于将新组件添加到现有的 MYSQLR64 组件。 如果您使用 INSSLR 来访问 MYSQLR64,请验证超时属性是否设置为较大的值 (36000) 来避免超时。 此外,请确认客户端的任何代理(最好根本不使用代理)中都没有超时。

在启动复制后,登录到从 MYSQLR64 组件的 Web 界面,然后验证复制状态,复制应在 5 分钟或更短的时间内运行。

在主-主配置中修复复制

CA 3Tera AppLogic 使您可以在不丢失任何数据的情况下,在主-主设置中修复复制。

登录到报告复制失败的组件的 Web 界面,然后选择“启动/修复复制”。 日志记录所用的时间取决于主服务器上的数据库大小。 在操作过程中,组件上的 mysql 服务会停止。 主组件上未产生停机时间。 直到修复结束,数据库才会在所有主组件之间同步。 在修复期间,可能无法在其他所有 MYSQLR64 组件上复制数据库更新。

此组件上的所有数据将从主组件初始化。 如果当前组件上的数据库有任何更新,由于复制中断,因此这些更新将丢失。 在此类情况下,请手工解决冲突。

在主-主配置中修复复制

  1. 登录到已将其 rout 终端连接到运行修复复制的组件的组件的 Web 界面。 选择“重置主日志位置”。 设置主日志可使应用从开头读取固定组件的二进制日志。 如果您使用 INSSLR 来访问 MYSQLR64,请验证超时属性是否设置为较大的值 (36000) 来避免超时。 此外,请确认客户端的任何代理(最好根本不使用代理)中都没有超时。

登录到所有 MYSQLR64 组件的 Web 界面,然后查看复制状态。 在 5 分钟或更短的时间内,复制应在所有组件上运行。

复制监控

有一个 cron 作业可监控 MYSQLR64 组件之间的复制。 如果启用了复制,cron 作业将每两分钟运行一次,并在以下情况下向网格显示板发送警报:

在此类情况下,用户应手工解决该问题。

在复制失败的情况下,可以按照上节所述使用 Web 界面进行修复。

复制监控

有一个 cron 作业可监控 MYSQLR64 组件之间的复制。 如果启用了复制,cron 作业将每两分钟运行一次,并在以下情况下向网格显示板发送警报:

在此类情况下,用户应手工解决该问题。

在复制失败的情况下,可以按照上节所述使用 Web 界面进行修复。

自定义计数器

MYSQLR64 组件通过 mon 终端报告以下自定义计数器。

以下计数器属于 MySql 计数器组:

计数器名称

说明

Aborted Clients

服务器中止的客户端数

Aborted Connections

服务器中止的连接数

Bytes Received

接收的字节数

Bytes Sent

发送的字节数

Total Connections

连接数

Questions

问题总数

Slow Queries

慢查询数

Threads Created

已创建的线程数

Threads Connected

已连接的线程数

Threads Running

正在运行的线程数

Max Used Connections

使用的最大连接数

Open Files

打开的文件数

Admin Commands

admin 命令数

Alter Table Commands

alter table 命令数

Analyze Commands

analyze 命令数

Change DB Commands

change DB 命令数

Change Master Commands

change master 命令数

Check Commands

check 命令数

Commit Commands

commit 命令数

Create DB Commands

create DB 命令数

Create Function Commands

create function 命令数

Create Index Commands

create index 命令数

Create Table Commands

create table 命令数

Delete Commands

delete 命令数

Drop DB Commands

drop DB 命令数

Drop Function Commands

drop function 命令数

Drop Index Commands

drop index 命令数

Drop Table Commands

drop table 命令数

Flush Commands

flush 命令数

Grant Commands

grant 命令数

Insert Commands

insert 命令数

Insert Select Commands

insert select 命令数

Kill Commands

kill 命令数

Load Commands

load 命令数

Lock Tables Commands

lock tables 命令数

Optimize Commands

optimize 命令数

Purge Commands

purge 命令数

Rename Table Commands

rename table 命令数

Repair Commands

repair 命令数

Replace Commands

replace 命令数

Replace Select Commands

replace select 命令数

Reset Commands

reset 命令数

Revoke Commands

revoke 命令数

Rollback Commands

rollback 命令数

Select Commands

select 命令数

Set Option Commands

set option 命令数

Truncate Commands

truncate 命令数

Unlock Tables Commands

unlock tables 命令数

Update Commands

update 命令数

错误消息

当组件无法启动时,网格控制器的组件日志文件或系统日志中可能会出现下列消息:

错误消息

说明

无法设置时区!

无法设置时区属性配置的组件时区。

组件正在 [$rpl_mode] 复制模式下运行,但缺少 binlogs 卷

组件配置为在 master、slave 或 master_and_slave 模式下运行,但是未指定 binlogs 卷。

组件正在 [$rpl_mode] 复制模式下运行,但未连接“rout”终端

组件配置为在 slave 或 master_and_slave 模式下运行,但未连接 rout 终端。

已连接“rout”终端,但 [rpl_mode] 属性设置为“none”。 通过 [rpl_mode] 属性配置复制,或将“rout”终端断开连接

已连接 rout 终端,但 [rpl_mode] 属性设置为 none。 通过 [rpl_mode] 属性配置复制,或将“rout”终端断开连接。

由于设置了 error_log_filename 但未连接 log 终端,无法启动 mysql!

配置了 error_log_filename 属性但未连接 log 终端。

无法通过 log 终端挂接共享!

组件配置为在 log 终端上写入日志,但它无法在 log 终端上挂接共享。

通过 log 终端的共享不可写!

log 终端上的共享不可写。

无法在 log 终端上创建 logdir [$logdir]!

无法在 log 终端上创建 logdir [$logdir]!

logdir [$logdir] 不可写!

log 终端上的 logdir [$logdir] 不可写!

日志文件 [$error_log] 不可写!

log 终端上的日志文件 [$error_log] 不可写!

无法创建数据库!

组件启动时没有数据库,并且无法安装 mysql 数据库。

无法设置复制!

组件无法配置复制。

无法启动 mysql!

无法启动 MySQL 后台进程。

mysql 数据库中的权限不足!

“root”@“%”的权限不足,或者在复制模式下使用时“replication_user”@“%”没有足够权限来运行 MySQL 复制。

Web 界面无法启动!

Web 界面无法启动!

数据卷大小至少应为 100 MB

数据卷应大于 100 MB。 请参阅有关卷要求的说明。

此外,在组件运行时,网格显示板上可能会显示以下错误:

错误消息

说明

数据卷上可用运行空间不足,请检查!

数据卷上的可用空间低于 20%。

主服务器复制未运行,请检查!

主服务器复制未运行。

从服务器的复制落后于主服务器的时间太长,请检查!

从服务器的复制落后于主服务器的时间太长。

binlogs 卷可用运行空间不足,请检查!

binlogs 卷上的可用空间低于 20%。

典型用法

简单的双层应用(无复制)

下图显示 MYSQLR64 组件在双层 Web 应用中的典型用法:

简单的双层应用(无复制)

正在使用的组件:

客户端请求到达用户网关。 网关会将请求转发到 Web 服务器,后者处理请求。 当 Web 上的脚本(例如:Perl 或 PHP)需要访问永久数据时,它们会通过 Web 服务器的 out 终端使用 db 组件。 db 组件配置为在由 logs 公开的共享的根目录内存储其日志文件。

使用浏览器,管理员可连接到 admin 网关来查看 mysql 或 Web 服务器日志文件。 admin 网关将请求转发给日志 NAS 组件。

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

属性名

说明

auto_create

1

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

error_log_filename

db.error

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

error_log_level

error

错误日志记录级别

注意:还必须在 db 组件以及 logs、content 和 mon 组件上配置数据卷。 要创建可在此处使用的应用卷,请参阅《网格用户指南》。

可扩展的双层应用(无复制)

下图显示 MYSQLR64 组件在双层 Web 应用中的典型用法,其中数据库用于在负载均衡的多个 Web 服务器之间共享状态和数据。 此外,此示例有一个单独的用于维护的输入,管理员通过该输入可以登录并访问用于维护的数据库;此示例还有一个可供管理员登录并查看 mysql 错误日志的输入。

可扩展的双层应用(无复制)

正在使用的组件:

客户端请求到达用户网关。 该网关将请求转发给 web_lb 负载均衡器,后者将请求定向到 Web 服务器 web1 和 web2 中的一个。 Web 服务器访问 db 数据库。

db 数据库以及 web1 和 web2 服务器通过 log 终端将其日志文件写入 logs 组件。 此外,管理员还可以通过 maint 网关登录到 logs 组件并查看日志文件。

此外,管理员还可以通过 admin 服务器的 maint 网关在 SSH 上登录(需要设置公钥-私钥)。 从 admin 服务器中,管理员可以访问 db 数据库中的统计信息或更改数据库架构。 例如:admin 服务器可以通过 gway 网关访问 Internet,以下载库或数据库架构的较新版本。

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

属性名

说明

auto_create

1

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

error_log_filename

db.error

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

error_log_level

error

错误日志记录级别

注意:

maint、admin、gway、mon 以及 log 组件不是运行双层应用所必需的。 如果存在,admin 服务器可能具有用于数据库清理、发送电子邮件等的 cron 作业。

具有主-从复制的 N 层应用(适合于备份)

下图显示 MYSQL 组件在将数据库复制到从服务器的 Web 应用中的典型用法。 从服务器可用于创建数据的一致备份,而不停止主服务器,因此引起的应用停机时间为零。

包含主服务器-从服务器复制的 N 层应用(适用于执行备份)

正在使用的组件:

客户端请求到达用户网关。 该网关将请求转发给 web_lb 负载均衡器,后者将请求定向到 Web 服务器 web1 和 web2 中的一个。 Web 服务器访问主数据库。

从组件连接到主组件并复制其数据。 为了执行 SQL 数据或大型分析的一致备份,可以随时停止从组件,而不会影响主组件和其余应用的性能。

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

master、slave、web1 和 web2 组件配置为在由 logs 公开的共享的根目录内存储其日志文件。 此外,管理员还可以通过 admin 网关查看日志文件。

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

主组件

属性名

说明

auto_create

1

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

error_log_filename

master-db.error

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

error_log_level

error

错误日志记录级别

server_id

1

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

rpl_mode

master

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

从组件

属性名

说明

auto_create

1

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

error_log_filename

slave-db.error

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

error_log_level

error

错误日志记录级别

server_id

2

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

rpl_mode

slave

连接到主服务器

注意:

admin、mon 以及 log 组件不是复制操作所必需的。

具有主-主复制的 N 层应用(适合于负载均衡)

下图显示 MYSQLR64 组件在 Web 应用中的典型用法,其中在主-主复制方案中将数据库复制到两个服务器。 在此用例中,应用在负载均衡操作期间使用 WEB 和 MYSQLR64 服务器。 此外,在其中一个 WEB/MYSQLR64 实例失败的情况下,其他 WEB/MYSQLR64 实例可用于防止应用停机。

包含主服务器-主服务器复制的 N 层应用(适用于执行负载均衡)

正在使用的组件:

客户端请求到达用户网关。 该网关将请求转发给 web_lb 负载均衡器,后者将请求定向到 Web 服务器 web1 和 web2 中的一个。 web1 使用 db1 数据库组件,web2 使用 db2 数据库组件。 连接 db1 和 db2,以复制 Web 服务器对数据库进行的更新。 每个 MYSQLR64 组件都将偏移(与其 server_id 相等)用于其 auto_increment 列,以防出现重复条目。

通过端口 8080 和 8081 上的 admin 网关,可以对 db1 和 db2 进行 Web 访问。

db1、db2、web1 和 web2 组件配置为在由 logs 公开的共享的根目录内存储其日志文件。 此外,管理员还可以通过 admin 网关查看日志文件。

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

db1

属性名

说明

auto_create

1

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

error_log_filename

db1.error

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

error_log_level

error

错误日志记录级别

server_id

1

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

rpl_mode

master_and_slave

主服务器和从服务器

db2

属性名

说明

auto_create

1

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

error_log_filename

db2.error

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

error_log_level

error

错误日志记录级别

server_id

2

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

rpl_mode

master_and_slave

主服务器和从服务器

注意:

admin、mon 以及 log 组件不是复制操作所必需的。

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

下图显示 MYSQLR64 组件在 Web 应用中的典型用法,其中在主-主复制方案中将数据库复制到四个服务器。 在此用例中,应用在负载均衡操作期间会使用所有的 WEB 和 MYSQLR64 服务器。 此外,在其中一个 WEB/MYSQLR64 实例失败的情况下,其他 WEB/MYSQLR64 实例可用于防止应用停机(MYSQLR64 不处理故障)。

包含多节点主服务器-主服务器复制的 N 层应用(适用于执行负载均衡)

正在使用的组件:

客户端请求到达用户网关。 网关会将请求转发到 web_lb 负载均衡器,后者将请求定向到 Web 服务器(web1、web2、web3 和 web4)中的一个。 每个 Web 服务器都使用自己的数据库组件。 所有数据库组件都以循环方式连接,以复制 Web 服务器对数据库进行的更新。 例如:将对 db1 的更新复制到 db2、db3 和 db4。 每个 MYSQLR64 组件都将偏移(与其 server_id 相等)用于其 auto_increment 列,以防出现重复条目。

通过端口 8080、8081、8082 和 8083 上的 admin 网关,可以对 db1、db2、db3、db4 进行 Web 访问。

db1、db2、web1 和 web2 组件配置为在由 logs 公开的共享的根目录内存储其日志文件。 此外,管理员还可以通过 admin 网关查看日志文件。

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

db1

属性名

说明

auto_create

1

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

error_log_filename

db1.error

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

error_log_level

error

错误日志记录级别

server_id

1

主服务器 1

rpl_mode

master_and_slave

主服务器和从服务器

db2

属性名

说明

auto_create

1

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

error_log_filename

db2.error

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

error_log_level

error

错误日志记录级别

server_id

2

主服务器 2

rpl_mode

master_and_slave

主服务器和从服务器

db3 组件

属性名

说明

auto_create

1

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

error_log_filename

db3.error

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

error_log_level

error

错误日志记录级别

server_id

3

主服务器 3

rpl_mode

master_and_slave

主服务器和从服务器

db4

属性名

说明

auto_create

1

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

error_log_filename

db4.error

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

error_log_level

error

错误日志记录级别

server_id

4

主服务器 4

rpl_mode

master_and_slave

主服务器和从服务器

注意:

admin、mon 以及 log 组件不是复制操作所必需的。

在不同工具上运行的 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(或执行相反的迁移),不能只在 64 位组件上使用 32 位组件中的卷(反之亦然),因为这可能会导致数据损坏。 实现此目的的建议方法是是在旧组件上转储数据库,将转储的文件传输到新组件,然后将数据库导入新组件。 下面是执行此操作的过程:

数据库现已传输,组件已准备就绪。

说明

请注意下列各项:

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

mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
    ->     IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

http://dev.mysql.com/doc/refman/5.0/en/index.html-MySQL 5.0 文档

组件中使用的第三方开源软件

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

软件

版本

已修改

许可

说明

aspell

0.60.3-7.1

LGPLv2.1

N/A

aspell-en

6.0-2.1

LGPLv2.1

N/A

cURL

7.15.5-2

MIT

N/A

device-mapper-event

1.02.32-1

GPLv2

N/A

freetype

1.02.32-1

FTL

N/A

gmp

4.1.4-10.el5

LGPLV2.1

N/A

libidn

0.6.5-1.1

LGPLv2.1

N/A

libjpeg

6b-37

可分发

N/A

libpng

1.2.10-7.0.2

zlib/libpng

N/A

lvm2

2.6.26-2.1.2.8

GPLv2.0

N/A

mysql

5.0.77-3.el5

GPL

N/A

mysql-server

5.0.77-3.el5

GPLv2

N/A

perl-DBD-MySQL

3.0007-2.el5

Artistic

N/A

perl-DBI

1.52-2.el5

Artistic

N/A

php-cli

5.1.6-23.el5

PHPv3.01

N/A

php-common

5.1.6-23.el5

PHPv3.01

N/A

php-gd

5.1.6-23.el5

PHPv3.01

N/A

php-mbstring

5.1.6-23.el5

PHPv3.01

N/A

php-mysql

5.1.6-23.el5

PHPv3.01

N/A

php-pdo

5.1.6-23.el5

PHPv3.01

N/A

rsync

2.6.8-3.1

GPLv2

N/A

samba-client

3.0.28-1.el5_2.1

GPLv2

N/A

samba-common

3.0.28-1.el5_2.1

GPLv2

N/A

sudo

1.6.8p12-10

ISC

N/A

lighttpd

1.4.18-1.el5.rf

BSD

N/A

perl-IPC-Run

0.84-1.el5.rf

Artistic

N/A

perl-Time-Duration

1.06-1.el5.rf

Artistic

N/A

phpMyAdmin

2.11.10-1

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
    

重新启动组件以验证它是否已启动,以及用户 root 的“in”终端上的 mysql 连接是否需要密码。