web-dev-qa-db-ja.com

スレーブとマスター間でBinlogが一貫していない

最初は、スレーブのbinlogが更新されているのがわかりません。今日、私はlog-slave-updatesオプションを見つけてスレーブに追加しましたが、現在更新中です。ただし、ファイル名がスレーブとマスター間で一致しません。

以下を確認してください、

スレーブステータス、

    slave> show slave status \G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 10.192.1.100
                      Master_User: repl
                      Master_Port: 3306
                    Connect_Retry: 60
              Master_Log_File: mysql-bin.000417
          Read_Master_Log_Pos: 103252997
               Relay_Log_File: mysqld-relay-bin.000027
                Relay_Log_Pos: 1035475
        Relay_Master_Log_File: mysql-bin.000417
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 103252997
              Relay_Log_Space: 1035632
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 3
1 row in set (0.00 sec)

binlogディレクトリの内容

Slave

root@slave:/vol/log/mysql# ll -h
total 9.9G
drwxr-xr-x 2 mysql mysql 4.0K Sep 23 02:23 ./
drwxr-xr-x 3 mysql mysql   18 Sep  4 20:51 ../
-rw-rw---- 1 mysql mysql 101M Sep 18 03:56 mysql-bin.000417
-rw-rw---- 1 mysql mysql 102M Sep 18 03:57 mysql-bin.000418
-rw-rw---- 1 mysql mysql 102M Sep 18 03:58 mysql-bin.000419
-rw-rw---- 1 mysql mysql 103M Sep 18 03:59 mysql-bin.000420
-rw-rw---- 1 mysql mysql 101M Sep 18 04:00 mysql-bin.000421
-rw-rw---- 1 mysql mysql 102M Sep 18 04:01 mysql-bin.000422
-rw-rw---- 1 mysql mysql 101M Sep 18 04:03 mysql-bin.000423
-rw-rw---- 1 mysql mysql 101M Sep 18 04:04 mysql-bin.000424
-rw-rw---- 1 mysql mysql 102M Sep 18 04:05 mysql-bin.000425
-rw-rw---- 1 mysql mysql 102M Sep 18 04:07 mysql-bin.000426
-rw-rw---- 1 mysql mysql 102M Sep 18 04:08 mysql-bin.000427
-rw-rw---- 1 mysql mysql 102M Sep 18 04:10 mysql-bin.000428
-rw-rw---- 1 mysql mysql 101M Sep 18 04:12 mysql-bin.000429
-rw-rw---- 1 mysql mysql 102M Sep 18 04:13 mysql-bin.000430
-rw-rw---- 1 mysql mysql 102M Sep 18 04:15 mysql-bin.000431
-rw-rw---- 1 mysql mysql 101M Sep 18 04:17 mysql-bin.000432
-rw-rw---- 1 mysql mysql 101M Sep 18 04:19 mysql-bin.000433
-rw-rw---- 1 mysql mysql 101M Sep 18 04:21 mysql-bin.000434
-rw-rw---- 1 mysql mysql 103M Sep 18 04:23 mysql-bin.000435
-rw-rw---- 1 mysql mysql 101M Sep 18 04:25 mysql-bin.000436
-rw-rw---- 1 mysql mysql 104M Sep 18 04:27 mysql-bin.000437
-rw-rw---- 1 mysql mysql 101M Sep 18 04:30 mysql-bin.000438
-rw-rw---- 1 mysql mysql 101M Sep 18 04:32 mysql-bin.000439
-rw-rw---- 1 mysql mysql 102M Sep 18 04:35 mysql-bin.000440
-rw-rw---- 1 mysql mysql 101M Sep 18 04:37 mysql-bin.000441
-rw-rw---- 1 mysql mysql 103M Sep 18 04:40 mysql-bin.000442
-rw-rw---- 1 mysql mysql 103M Sep 18 04:42 mysql-bin.000443
-rw-rw---- 1 mysql mysql 101M Sep 18 04:45 mysql-bin.000444
-rw-rw---- 1 mysql mysql 101M Sep 18 04:48 mysql-bin.000445
-rw-rw---- 1 mysql mysql 103M Sep 18 04:51 mysql-bin.000446
-rw-rw---- 1 mysql mysql 101M Sep 18 04:54 mysql-bin.000447
-rw-rw---- 1 mysql mysql 101M Sep 18 04:57 mysql-bin.000448
-rw-rw---- 1 mysql mysql 101M Sep 18 04:59 mysql-bin.000449
-rw-rw---- 1 mysql mysql 101M Sep 18 05:02 mysql-bin.000450
-rw-rw---- 1 mysql mysql 101M Sep 18 05:06 mysql-bin.000451
-rw-rw---- 1 mysql mysql 101M Sep 18 05:09 mysql-bin.000452
-rw-rw---- 1 mysql mysql 101M Sep 18 05:12 mysql-bin.000453
-rw-rw---- 1 mysql mysql 102M Sep 18 05:15 mysql-bin.000454
-rw-rw---- 1 mysql mysql 101M Sep 18 05:19 mysql-bin.000455
-rw-rw---- 1 mysql mysql 102M Sep 18 05:22 mysql-bin.000456
-rw-rw---- 1 mysql mysql 101M Sep 18 05:26 mysql-bin.000457
-rw-rw---- 1 mysql mysql 103M Sep 18 05:29 mysql-bin.000458
-rw-rw---- 1 mysql mysql 104M Sep 18 05:33 mysql-bin.000459
-rw-rw---- 1 mysql mysql 102M Sep 18 05:37 mysql-bin.000460
-rw-rw---- 1 mysql mysql 102M Sep 18 05:41 mysql-bin.000461
-rw-rw---- 1 mysql mysql 102M Sep 18 05:45 mysql-bin.000462
-rw-rw---- 1 mysql mysql 102M Sep 18 05:49 mysql-bin.000463
-rw-rw---- 1 mysql mysql 101M Sep 18 05:53 mysql-bin.000464
-rw-rw---- 1 mysql mysql 103M Sep 19 07:43 mysql-bin.000465
-rw-rw---- 1 mysql mysql 101M Sep 19 07:44 mysql-bin.000466
-rw-rw---- 1 mysql mysql 101M Sep 19 07:45 mysql-bin.000467
-rw-rw---- 1 mysql mysql 102M Sep 19 07:46 mysql-bin.000468
-rw-rw---- 1 mysql mysql 102M Sep 19 07:47 mysql-bin.000469
-rw-rw---- 1 mysql mysql 103M Sep 19 07:48 mysql-bin.000470
-rw-rw---- 1 mysql mysql 102M Sep 19 07:49 mysql-bin.000471
-rw-rw---- 1 mysql mysql 103M Sep 19 07:50 mysql-bin.000472
-rw-rw---- 1 mysql mysql 101M Sep 19 07:51 mysql-bin.000473
-rw-rw---- 1 mysql mysql 102M Sep 19 07:53 mysql-bin.000474
-rw-rw---- 1 mysql mysql 101M Sep 19 07:54 mysql-bin.000475
-rw-rw---- 1 mysql mysql 103M Sep 19 07:55 mysql-bin.000476
-rw-rw---- 1 mysql mysql 103M Sep 19 07:57 mysql-bin.000477
-rw-rw---- 1 mysql mysql 103M Sep 19 07:58 mysql-bin.000478
-rw-rw---- 1 mysql mysql 102M Sep 19 08:00 mysql-bin.000479
-rw-rw---- 1 mysql mysql 103M Sep 19 08:01 mysql-bin.000480
-rw-rw---- 1 mysql mysql 103M Sep 19 08:03 mysql-bin.000481
-rw-rw---- 1 mysql mysql 101M Sep 19 08:05 mysql-bin.000482
-rw-rw---- 1 mysql mysql 101M Sep 19 08:07 mysql-bin.000483
-rw-rw---- 1 mysql mysql 102M Sep 19 08:09 mysql-bin.000484
-rw-rw---- 1 mysql mysql 102M Sep 19 08:11 mysql-bin.000485
-rw-rw---- 1 mysql mysql 101M Sep 19 08:13 mysql-bin.000486
-rw-rw---- 1 mysql mysql 101M Sep 19 08:15 mysql-bin.000487
-rw-rw---- 1 mysql mysql 101M Sep 19 08:17 mysql-bin.000488
-rw-rw---- 1 mysql mysql 101M Sep 19 08:19 mysql-bin.000489
-rw-rw---- 1 mysql mysql 101M Sep 19 08:21 mysql-bin.000490
-rw-rw---- 1 mysql mysql 102M Sep 19 08:24 mysql-bin.000491
-rw-rw---- 1 mysql mysql 104M Sep 19 08:26 mysql-bin.000492
-rw-rw---- 1 mysql mysql 101M Sep 19 08:29 mysql-bin.000493
-rw-rw---- 1 mysql mysql 102M Sep 19 08:32 mysql-bin.000494
-rw-rw---- 1 mysql mysql 103M Sep 19 08:34 mysql-bin.000495
-rw-rw---- 1 mysql mysql 102M Sep 19 08:37 mysql-bin.000496
-rw-rw---- 1 mysql mysql 101M Sep 19 08:40 mysql-bin.000497
-rw-rw---- 1 mysql mysql 101M Sep 19 08:43 mysql-bin.000498
-rw-rw---- 1 mysql mysql 102M Sep 19 08:46 mysql-bin.000499
-rw-rw---- 1 mysql mysql 101M Sep 19 08:49 mysql-bin.000500
-rw-rw---- 1 mysql mysql 101M Sep 19 08:52 mysql-bin.000501
-rw-rw---- 1 mysql mysql 103M Sep 19 08:55 mysql-bin.000502
-rw-rw---- 1 mysql mysql 102M Sep 19 08:58 mysql-bin.000503
-rw-rw---- 1 mysql mysql 101M Sep 19 09:01 mysql-bin.000504
-rw-rw---- 1 mysql mysql 102M Sep 19 09:05 mysql-bin.000505
-rw-rw---- 1 mysql mysql 104M Sep 19 09:08 mysql-bin.000506
-rw-rw---- 1 mysql mysql 103M Sep 19 09:12 mysql-bin.000507
-rw-rw---- 1 mysql mysql 101M Sep 19 09:15 mysql-bin.000508
-rw-rw---- 1 mysql mysql 103M Sep 19 09:19 mysql-bin.000509
-rw-rw---- 1 mysql mysql 103M Sep 19 09:22 mysql-bin.000510
-rw-rw---- 1 mysql mysql 104M Sep 19 09:26 mysql-bin.000511
-rw-rw---- 1 mysql mysql 102M Sep 19 09:30 mysql-bin.000512
-rw-rw---- 1 mysql mysql 102M Sep 19 09:34 mysql-bin.000513
-rw-rw---- 1 mysql mysql 102M Sep 19 09:38 mysql-bin.000514
-rw-rw---- 1 mysql mysql 102M Sep 19 09:42 mysql-bin.000515
-rw-rw---- 1 mysql mysql  48M Sep 23 01:50 mysql-bin.000516
-rw-rw---- 1 mysql mysql 1.2M Sep 23 02:44 mysql-bin.000517
-rw-rw---- 1 mysql adm   3.2K Sep 23 02:23 mysql-bin.index

主人

root@prod-dbm:/vol/log/mysql# ll -h
total 394M
drwxr-s--- 2 mysql adm   134 2014-09-18 21:40 ./
drwxr-xr-x 3 root  root   18 2012-12-29 18:52 ../
-rw-rw---- 1 mysql adm  197K 2014-07-21 18:41 error.log
-rw-rw---- 1 mysql adm  101M 2014-09-14 01:50 mysql-bin.000415
-rw-rw---- 1 mysql adm  101M 2014-09-18 21:40 mysql-bin.000416
-rw-rw---- 1 mysql adm   99M 2014-09-23 02:46 mysql-bin.000417
-rw-rw---- 1 mysql adm    96 2014-09-18 21:40 mysql-bin.index
-rw-rw---- 1 mysql adm   31M 2014-09-23 01:53 slow_query.log

質問:

1、スレーブが作成された後、いくつかの分析プログラムを実行し、結果をsalveに挿入し直しました(ただし、別のDB)。したがって、スレーブ上のmysql-bin.000417からmysql-bin.000515までのすべてのbinlogは分析プログラムの操作。 log-slave-updatesを有効にしましたが、新しいbinlogには、レプリケーションと分析プログラムの操作の内容が混在していますか?

2、「スレーブステータス」では、Relay_Master_Log_Fileはmysql-bin.000417を指していますが、スレーブハードドライブでは、ファイルmysql-bin.000417〜mysql-bin.000515は2014-9-18以降更新されていません。 log-slave-updatesを有効にすると、ファイルmysql-bin.000516が更新され始めます。したがって、ディスクスペースを解放したい場合、mysql-bin.000516の前にファイルをパージしても安全ですか?

3、一般に、Seconds_Behind_Masterが0の場合、以前のすべてのbinlogを削除しても安全ですか? (レプリケーションが同期されており、分析プログラムが終了していると想定しているため)

ありがとう。

1
Carl

MySQLレプリケーションプロセスは次のように機能します。

  • トランザクションはマスターで実行されます
  • すべてのトランザクションは、マスターの「イベント」としてバイナリログファイル(mysql-bin.xxxxx)に書き込まれます
  • スレーブでは、2つのスレッドがレプリケーションプロセス専用です
    • I/Oスレッドマスターバイナリログイベントを読み取り、ローカル(mysqld-relay-bin.xxxxx)のリレーログに書き込みます。
    • SQLスレッドリレーログイベントを読み取り、スレーブで実行します

SHOW SLAVE STATUS\G出力では、重要な情報は次のとおりです。

現在のマスターポジションは何ですか?

  • Master_Log_File:マスターの現在のバイナリログ
  • Read_Master_Log_Pos:マスターの現在のバイナリログ位置

現在のスレーブ位置は何ですか?

  • Relay_Log_File:スレーブの現在のリレーログ
  • Relay_Log_Pos:スレーブの現在のリレーログ位置

マスターのバイナリログに関する現在のスレーブ位置は何ですか?

  • Relay_Master_Log_File:スレーブの実際の位置に対応する(マスター上の)バイナリログ
  • Exec_Master_Log_Pos:スレーブの実際の位置に対応する(マスター上の)バイナリログ位置

これで、バイナリログを使用しない場合スレーブ(ポイントインタイムリカバリまたはチェーンレプリケーションの場合)、無効にして削除できます。

log_bin = 0

バイナリログを削除するには、次を使用します。

PURGE BINARY LOGS;

log-slave-updatesに関する注意:デフォルトでは、スレーブでバイナリログを有効にすると、スレーブはスレーブで実行されたイベントのみを直接書き込み、マスターからのイベントはいずれも書き込みられません。スレーブのバイナリログ。連鎖レプリケーション(M-> S/M-> S)をセットアップする場合は、マスターイベントをバイナリログに記録して独自のスレーブにレプリケートするようにスレーブに指示する必要があります。このオプションはlog-slave-updatesです。

スレーブでバイナリログを有効にする必要がある場合、スレーブのバイナリログの現在の位置を確認するコマンドはSHOW MATSER STATUS;であり、ディレクトリ(スレーブ上)のファイルに対応する位置が表示されます。

バイナリログ管理に関する注意:ディスクを飽和させたくない場合は、バイナリログに「パージ戦略」を設定することを忘れないでください。最も簡単な方法は、expire_logs_days変数を使用して、この変数より古いバイナリログをパージするようにMySQLに指示することです。

私は明確だったと思います...

宜しくお願いします

0