この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:5
ページ更新者:T
更新日時:2026-06-11 07:10:02

タイトル: レプリケーションのステータス確認方法
SEOタイトル: MySQL/MariaDB レプリケーション状態確認(SHOW MASTER/SLAVE STATUS / 遅延チェック / 障害対応)

この記事の要点
  • マスター側: SHOW MASTER STATUS; でバイナリログのファイル名と Position を確認
  • スレーブ側: SHOW SLAVE STATUS\GSlave_IO_Running / Slave_SQL_RunningYes なら正常
  • 遅延確認: Seconds_Behind_Master がスレーブの遅れ秒数。0 または NULL 以外なら遅延中
  • MySQL 8.0+ / MariaDB 10.5+ では SHOW REPLICA STATUS / SHOW BINARY LOG STATUS に名称変更
  • エラー時は Last_IO_Error / Last_SQL_Error を確認。GTID 利用なら Retrieved_Gtid_Set / Executed_Gtid_Set も対照

マスター側のステータス確認

マスター DB で以下を実行します。

SHOW MASTER STATUS;

-- MySQL 8.0.22+ / MariaDB 10.5+ では別名も利用可
SHOW BINARY LOG STATUS;

出力例

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000123 | 51234567 |              |                  | uuid:1-1000       |
+------------------+----------+--------------+------------------+-------------------+
項目意味
File現在書き込み中のバイナリログファイル名
Positionそのファイル内の現在の書き込み位置(バイト)
Executed_Gtid_Setマスターで実行済みの GTID 範囲

スレーブ側のステータス確認

-- 横方向だと見づらいので \G を付けて縦に展開
SHOW SLAVE STATUS\G

-- MySQL 8.0.22+ / MariaDB 10.5+
SHOW REPLICA STATUS\G

正常時の主要項目

項目期待値意味
Slave_IO_RunningYesマスターから binlog を受信中
Slave_SQL_RunningYes受信した binlog を適用中
Seconds_Behind_Master0マスターからの遅延秒数
Last_IO_ErrorIO スレッドのエラー
Last_SQL_ErrorSQL スレッドのエラー
Master_Log_File / Read_Master_Log_Posマスター側 File/Position に追従IO スレッドの読込位置
Relay_Master_Log_File / Exec_Master_Log_PosRead_Master_Log_Pos に追従SQL スレッドの適用位置

レプリケーション遅延の確認

Seconds_Behind_Master が遅延の目安ですが、ネットワーク断時は NULL になります。実運用では pt-heartbeat (Percona Toolkit) のような外部ツールでの計測が正確です。

# 簡易: 1 秒ごとに遅延を出力
watch -n 1 'mysql -e "SHOW SLAVE STATUS\G" | grep Seconds_Behind_Master'

レプリケーション停止/再開

-- 停止
STOP SLAVE;
STOP REPLICA;       -- MySQL 8.0.22+

-- 再開
START SLAVE;
START REPLICA;

-- IO スレッドだけ / SQL スレッドだけ
STOP SLAVE IO_THREAD;
STOP SLAVE SQL_THREAD;

レプリケーション障害の典型と対処

症状原因対処
Slave_IO_Running=No, Last_IO_Error: Got fatal error 1236マスター側 binlog purge / position 不整合正しい binlog / position に CHANGE MASTER TO
Slave_SQL_Running=No, Last_SQL_Errno: 1062 (Duplicate entry)スレーブ側に重複行該当行削除 → START SLAVE 、または sql_slave_skip_counter=1
Slave_SQL_Running=No, Last_SQL_Errno: 1032 (record not found)スレーブ側に行が存在しない欠落データを補填、または skip
Seconds_Behind_Master が増え続けるSQL スレッドの適用が追いつかない並列レプリケーション(slave_parallel_workers)有効化

GTID 利用時の確認

-- マスターで実行済み GTID
SELECT @@global.gtid_executed;

-- スレーブで受信済み / 実行済み
SHOW SLAVE STATUS\G
-- Retrieved_Gtid_Set: 受信したGTID範囲
-- Executed_Gtid_Set:  適用済みGTID範囲

両者が一致していれば追いついている状態。差分があれば未適用のトランザクションが残っています。