MySQL Application Recovery Kit は、mysqld_multi を介して管理される mysqld グループ機能を使用した my.cnf ファイルをサポートします。この MySQL の機能を使用すると、単一の my.cnf ファイル (通常 /etc に保存される) を介して、容易に複数の MySQL インスタンスを設定できるようになります。本キットは mysqld グループのフォーマットを利用している my.cnf ファイルを検出し、管理者に対して保護対象とする mysqld グループの番号を選択することを要求します。管理者が選択できる選択リストは、my.cnf ファイルで定義されているグループ番号から、すでに本キットにより保護されているグループ番号を差し引いたものから決定します。
一般的には、mysqld グループ機能を使用して複数の MySQL インスタンスを設定および制御するほうが容易になります。SIOS は、アクティブ / アクティブもしくは複数インスタンスの設定時には、このアプローチを使用することを推奨します。
my.cnf ファイル
mysqld グループ機能を使用する場合、以下が必須となります。
a. 単一の my.cnf ファイルが、データベースインスタンスの mysqld グループを定義するために使用される必要があります。
b. my.cnf ファイルは共有ストレージ上に配置しないでください。
c. 各クラスタノードに my.cnf ファイルの完全なコピーが必要です (/etc/my.cnf が望ましい)。
d. my.cnf ファイルに対して行ったすべての変更は、LifeKeper のすべてのクラスタノードに反映される必要があります。
Recovery Kit は、my.cnf ファイルが mysqld グループを使用していることを検知すると mysqld_multi コマンドを使用します。これに基づいて、LifeKeeper の制御下に配置する前に mysqld_multi を使用して MySQL インスタンスをテストすることができます。
以下は、mysqld_multi によって制御されている 2 つのデータベースインスタンスについて mysqld グループを使用した比較的複雑な my.cnf ファイルの解説です。mysqld_multi コマンド (および MySQL LifeKeeper Recovery Kit) は、管理者にさまざまな設定を行うためのオプションを提供しています。下記の例、 [mysqld1] では、さまざまな MySQL コマンドの大部分についてデフォルトのロケーションを使用する比較的単純な MySQL インスタンスを定義しています。その次の例、[mysqld55]では、より多くの変更を行っています。コメントは各セクションにおいて LifKeeper がどのように MySQL と相互作用しているかについて説明しているので参考にしてください。
#The following client section defines which username/password combination will be used for #LifeKeeper connections. The username/password combination needs to be defined in each MySQL # Database instance that will be described in this my.cnf file. [client] user = steeleye password = password
# This next section describes the default version of mysqld and mysqldadmin that mysqld_multi # will use when processing mysqld_multi commands. The username/password combo defines the # MySQL account that mysqld_multi will use when working with the database instances. This # username and password combo needs to be defined in each MySQL Database instance that will be # controlled by mysqld_multi. See how to set up the multi_admin account in the MySQL Reference # Manual, by issuing "mysqld_multi --example". [mysqld_multi] mysqld = /usr/bin/mysqld_safe mysqladmin = /usr/bin/mysqladmin user = multi_admin password = password
# The next section defines the first of two MySQL Database instances in this my.cnf file. Note # that each section starts with a [mysqldNN] where NN is the mysqld group number (or instance). # Each group name must have a number. There are a number of directives that the LifeKeeper MySQL # Recovery Kit will be looking for in these sections. [mysqld1] datadir = /s11/mysql-data5077 #Defines where the data files for the instance will live. For # LifeKeeper, this directory must be on LifeKeeper protected # (shared or replicated) storage. mysqld = /usr/bin/mysqld_safe # Defines specifically which mysqld command will be used for # starting the instance. This one is using the # default mysqld_safe that came with the distribution. socket=/s11/mysql-data5077/moe.socket # Defines the location of the socket for this instance. # If the socket is not on LifeKeeper protected storage, it # needs to be defined in exactly the same place on each # node in the cluster and be owned by the "user" defined # below. port = 3307 # Each instance needs its own, unique TCP/IP port. pid-file = /var/run/mysqld/mysqld.pid # The pid-file can be on LifeKeeper protected or # non-LifeKeeper protected storage. log-error= /var/log/mysqld.log # Location of the MySQL error log for this instance. Can be # on LifeKeeper protected or non-LifeKeeper protected # storage. user = mysql # The Linux user name that will run the MySQL processes.
#The next section defines the more complicated of the two MySQL instances. Instance "55" is not #using the default MySQL that came with the Linux distribution as it is using the 5.5.12 version #of MySQL that was installed from source. The binaries for this version were installed onto shared #storage, and the binary directory is LifeKeeper protected. [mysqld55] datadir = /s11/mysql-data5512 # Same as above; this instance uses a different data # directory, and this directory is on LifeKeeper # protected storage. mysqld =/s11/mysql5512/bin/mysqld_safe # For this instance, a different version of mysqld_safe # is used; the one that is included with 5.5.12. socket=/s11/mysql-misc5512/larry.socket # This instance has the socket on LifeKeeper protected # storage, but not in the default location (datadir). port = 3308 # This instance has a unique TCP/IP port as well. pid-file = /var/run/mysqld/mysqld55.pid # This instance's pid-file is not on LifeKeeper protected # storage. log-error = /var/log/mysqld55.log # This instance's log-error (error log) is not on # LifeKeeper protected storage. log-bin = /s11/mysql-log5512/larry # The log-bin directive specifies where the binary # transaction logs are located for this instance. # These logs must be on LifeKeeper protected storage # (the recovery kit will enforce this). By default, # these logs are in the datadir. user = mysql # The Linux user name that will run the MySQL processes.
マルチインスタンス用 [mysqld<N>] の設定とシングルインスタンス用 [mysqld] の設定を併記する場合は、シングルインスタンス用の設定を最後に記載してください。
例:
[mysqld1]
(mysqld1の設定)
[mysqld2]
(mysqld2の設定)
[mysqld55]
(mysqld55の設定)
[mysqld]
(シングルインスタンス用mysqldの設定)
mysqld_multi コマンド
例として mysql コマンドを実行します。
# mysqld_multi start 1
my.cnf で[mysqld1]として定義した mysqld グループ 1 インスタンスを、依存するすべての LifeKeeper 保護リソースが LifeKeeper のいずれかのノードで In Service であると仮定します。
以下のコマンドを実行します。
# mysqld_multi report 1
このインスタンスの状態がレポートされます (例:running (起動) または not running (停止))。このインスタンスが起動すると、LifeKeeper でのリソース作成が容易になります。
mysqld_multi 形式の my.cnf ファイルの設定方法に関する情報については以下のコマンドを実行してください。
# mysqld_multi --example
このトピックへフィードバック