このセクションでは、レプリケーションマスターサーバーで使用できるサーバーオプションとシステム変数について説明します。オプションはコマンド行またはオプションファイルで指定できます。システム変数値はSET
を使用して指定できます。
マスターと各スレーブでは、server-id
オプションを使用して一意レプリケーション ID を確立する必要があります。サーバーごとに、一意の正の整数を 1 から 232 − 1 の範囲から選択してください。各 ID は、ほかのレプリケーションのマスターまたはスレーブが使用するほかのあらゆる ID と異なっている必要があります。例: server-id=3
。
バイナリロギングを制御するためにマスターで使用されるオプションについては、セクション17.1.4.4「バイナリログのオプションと変数」を参照してください。
次のシステム変数は、レプリケーションマスターを制御するために使用されます。
-
システム変数 auto_increment_increment
スコープ グローバル、セッション 動的 はい 型 数値 デフォルト 1
最小値 1
最大値 65535
auto_increment_increment
およびauto_increment_offset
は、マスターからマスターへのレプリケーションで使用するためのもので、AUTO_INCREMENT
カラムの操作を制御するために使用できます。両方の変数はグローバル値とセッション値を持ち、各値は 1 から 65,535 (1 と 65,535 を含みます) の間の整数値を取ることができます。これらの 2 つの変数のいずれかの値を 0 に設定すると、代わりにその値は 1 に設定されます。これらの 2 つの変数のいずれかの値を 65,535 より大きな整数または 0 より小さい整数に設定しようとすると、代わりにその値は 65,535 に設定されます。auto_increment_increment
またはauto_increment_offset
の値を整数でない値に設定しようとすると、エラーが発生し、変数の実際の値は変化しません。注記auto_increment_increment
はNDB
テーブルで使用する場合にもサポートされます。これら 2 つの変数は、次のように
AUTO_INCREMENT
カラムの動作に影響します。-
auto_increment_increment
は、連続するカラム値の間隔を制御します。例:mysql> SHOW VARIABLES LIKE 'auto_inc%'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 1 | | auto_increment_offset | 1 | +--------------------------+-------+ 2 rows in set (0.00 sec) mysql> CREATE TABLE autoinc1 -> (col INT NOT NULL AUTO_INCREMENT PRIMARY KEY); Query OK, 0 rows affected (0.04 sec) mysql> SET @@auto_increment_increment=10; Query OK, 0 rows affected (0.00 sec) mysql> SHOW VARIABLES LIKE 'auto_inc%'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 10 | | auto_increment_offset | 1 | +--------------------------+-------+ 2 rows in set (0.01 sec) mysql> INSERT INTO autoinc1 VALUES (NULL), (NULL), (NULL), (NULL); Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> SELECT col FROM autoinc1; +-----+ | col | +-----+ | 1 | | 11 | | 21 | | 31 | +-----+ 4 rows in set (0.00 sec)
-
auto_increment_offset
はAUTO_INCREMENT
カラム値の開始点を指定します。次のことは、auto_increment_increment
の記述で示した例のように、同じセッション中にこれらのステートメントが実行されるものと仮定しています。mysql> SET @@auto_increment_offset=5; Query OK, 0 rows affected (0.00 sec) mysql> SHOW VARIABLES LIKE 'auto_inc%'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 10 | | auto_increment_offset | 5 | +--------------------------+-------+ 2 rows in set (0.00 sec) mysql> CREATE TABLE autoinc2 -> (col INT NOT NULL AUTO_INCREMENT PRIMARY KEY); Query OK, 0 rows affected (0.06 sec) mysql> INSERT INTO autoinc2 VALUES (NULL), (NULL), (NULL), (NULL); Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> SELECT col FROM autoinc2; +-----+ | col | +-----+ | 5 | | 15 | | 25 | | 35 | +-----+ 4 rows in set (0.02 sec)
auto_increment_offset
の値がauto_increment_increment
の値よりも大きいと、auto_increment_offset
の値は無視されます。
これらの変数のいずれかが変更されてから、
AUTO_INCREMENT
カラムを含むテーブルに新しい行が挿入される場合、結果は反直感的に見える場合があります。AUTO_INCREMENT
値のシリーズがカラムにすでに存在する値に関係なく計算され、挿入される次の値がAUTO_INCREMENT
カラムに存在する最大値よりも大きなシリーズ内最小値であるためです。シリーズは次のように計算されます。auto_increment_offset
+N
×auto_increment_increment
ここで、
N
はシリーズ内正の整数値 [1, 2, 3, ...] です。例:mysql> SHOW VARIABLES LIKE 'auto_inc%'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | auto_increment_increment | 10 | | auto_increment_offset | 5 | +--------------------------+-------+ 2 rows in set (0.00 sec) mysql> SELECT col FROM autoinc1; +-----+ | col | +-----+ | 1 | | 11 | | 21 | | 31 | +-----+ 4 rows in set (0.00 sec) mysql> INSERT INTO autoinc1 VALUES (NULL), (NULL), (NULL), (NULL); Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> SELECT col FROM autoinc1; +-----+ | col | +-----+ | 1 | | 11 | | 21 | | 31 | | 35 | | 45 | | 55 | | 65 | +-----+ 8 rows in set (0.00 sec)
auto_increment_increment
とauto_increment_offset
に示される値は、シリーズ 5 +N
× 10、つまり [5, 15, 25, 35, 45, ...] を生成します。INSERT
より前にcol
カラムに存在する最高値は 31、AUTO_INCREMENT
シリーズ内で次に使用できる値は 35 なので、col
に挿入される値はそのポイントで始まり、結果はSELECT
クエリーで示されるようになります。これらの 2 つの変数の影響を単一テーブルに制限することはできません。これらの変数は MySQL サーバーのすべてのテーブルのすべての
AUTO_INCREMENT
カラムの動作を制御します。どちらかの変数のグローバル値が設定されると、グローバル値が変更されるか、セッション値の設定によってオーバーライドされるまで、または mysqld が再起動されるまでその効果は持続します。ローカル値が設定されると、新しい値は、セッションの期間に現在のユーザーが新しい行を挿入したすべてのテーブルのAUTO_INCREMENT
カラムに影響します (そのセッション中にそれらの値が変更される場合を除く)。auto_increment_increment
のデフォルト値は 1 です。セクション17.4.1.1「レプリケーションと AUTO_INCREMENT」を参照してください。 -
-
システム変数 auto_increment_offset
スコープ グローバル、セッション 動的 はい 型 数値 デフォルト 1
最小値 1
最大値 65535
この変数のデフォルト値は 1 です。詳細については、
auto_increment_increment
の説明を参照してください。注記auto_increment_offset
はNDB
テーブルで使用する場合にもサポートされます。