10bet网址
MySQL5.6
下载手册
PDF(USLTR)26.8Mb
PDF(A4)26.8Mb


MySQL5.6/ innoDB++innoDBMYSQL

14.17 InnoDB+MYSQL

MySQLMyISAMテーブルに対して機能するのと同じように、innoDBテーブルに対して機能します。また、スレーブ上のストレージエンジンがマスター上の元のストレージエンジンと同じではない状況でレプリケーションを使用することもできます。たとえば、マスター上のinnoDBテーブルへの変更をスレーブ上のMyISAMテーブルにレプリケートできます。

マスターに対して新しいスレーブを設定するには、innoDBテーブルスペースとログファイルに加えてinnoDBテーブルの.frmファイルのコピーを作成し、それらのコピーをスレーブに移動します。innodb_file_per_tableオプションが有効になっている場合は、.ibdファイルもコピーします。これを行うための正しい手順については、セクション14.16「InnoDB のバックアップとリカバリ」を参照してください。

マスターまたは既存のスレーブを停止することなく新しいスレーブを作成するには、MySQL企业备份製品を使用します。マスターまたは既存のスレーブをシャットダウンできる場合は、innoDBテーブルスペースとログファイルのコールドバックアップを作成し、それを使用してスレーブを設定します。

マスター上で失敗したトランザクションがレプリケーションに影響を与えることはありません。MySQL レプリケーションは、データを変更する SQL ステートメントが MySQL によって書き込まれたバイナリログに基づいています。失敗したトランザクション (たとえば、外部キーの違反のため、またはロールバックされているため) はバイナリログに書き込まれないため、スレーブには送信されません。13.3.1命令传送 COMMITQROLLBACKを参照してください。

CASADEマスター上のinnoDBテーブルに関するカスケードアクションは、外部キー関係を共有しているテーブルがマスターとスレーブの両方でinnoDBを使用している場合にのみスレーブにレプリケートされます。これは、ステートメントベースのレプリケーションと行ベースのレプリケーションのどちらを使用している場合にも当てはまります。レプリケーションを開始したあと、次の日期表ステートメントを使用してマスター上に 2 つのテーブルを作成したとします。

Create表fc1Create表fc2(mINT初级KEY,nINT,FORETEKEYNIE(n)fc1iferencesfcCADE)ENGINE=INODB

このスレーブではinnoDBのサポートが有効になっていないと仮定します。この場合、スレーブ上にテーブルは作成されますが、それらのテーブルはMyISAMストレージエンジンを使用し、外国密钥オプションは無視されます。次に、マスター上のテーブルに何行か挿入します。

大师输入fc1VALUES(1,1,2,2)查询确定,2行受影响(0.09秒)记录:2重复:0警告:0主输入fc2VALUES(1,1)2,2,2,3,1查询确定3行受创数(0.19秒)记录:3重复数:0警告数:0

この時点では、次に示すように、マスターとスレーブの両方で、テーブルfc1には 2 行が含まれ、テーブルfc2には 3 行が含まれています。

大师SELECT*fc1++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++2+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

ここで、マスター上で次の开发者ステートメントを実行したとします。

主人从fc1查询确定一行受创(0.09秒)

カスケードのために、マスター上のテーブルfc2####################################################

大师SELECT*fc2+++++++2+++++++++++++++++++++++++++++

ただし、スレーブではfc1に対する开发者によってfc2から行が削除されないため、カスケードはスレーブに伝播されません。スレーブのfc2のコピーには引き続き、最初に挿入されたすべての行が含まれています。

select*fc2++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

この違いは、カスケード削除が、実際にはinnoDBストレージエンジンによって内部的に処理されることから来ています。つまり、どの変更もログに記録されません。