2

ホスト上で実行されている 2 つのスレーブ mysql インスタンスがあり、別のホスト上のマスターからデータをレプリケートします。すべてのインスタンスは mysql 5.6 です。マスターからの変更がないにもかかわらず、スレーブ インスタンスのリレー ビン ログが変更され続けます。以下は、show slave status\Gslave1の場合です。

           Slave_IO_State: Waiting for master to send event
          Master_Log_File: mysql-bin.000008
      Read_Master_Log_Pos: 210424
           Relay_Log_File: mysqld1-relay-bin.000878
            Relay_Log_Pos: 354
    Relay_Master_Log_File: mysql-bin.000008
         Slave_IO_Running: Yes
        Slave_SQL_Running: Yes
                     ... : ...

しばらくして、slave1 の Relay_Log_File が変更され、

           Slave_IO_State: Waiting for master to send event
          Master_Log_File: mysql-bin.000008
      Read_Master_Log_Pos: 210424
           Relay_Log_File: mysqld1-relay-bin.001374
            Relay_Log_Pos: 354
    Relay_Master_Log_File: mysql-bin.000008
         Slave_IO_Running: Yes
        Slave_SQL_Running: Yes
                     ... : ...

ただし、マスター、スレーブ 1、またはスレーブ 2 は変更されていません。スレーブ2でも同じことが起こっています。2 つのスレーブが何らかの形で構成/セットアップを共有していると思われますが、これは想定されていませんが、何が問題なのかを特定できませんでした。my.cnf ファイルには

# The MySQL server mysqld1
[mysqld1]
user            = mysql
port            = 3301
pid-file        = /usr/local/mysql1/data/mysqld1.pid
socket          = /tmp/mysql1.sock
datadir         = /usr/local/mysql1/data
log-bin=mysql-bin
binlog_format=mixed
gtid-mode=on
disable-gtid-unsafe-statements=true
log-slave-updates=true # needed to enable gtid
sync-master-info = 1
master-info-repository=TABLE
relay-log-info-repository=TABLE
server-id       = 2
innodb_data_home_dir = /usr/local/mysql1/data
innodb_log_group_home_dir = /usr/local/mysql1/data
innodb_flush_log_at_trx_commit = 1
sync_binlog=1

[mysqld2]
user            = mysql
port            = 3302
pid-file        = /usr/local/mysql2/data/mysqld2.pid
socket          = /tmp/mysql2.sock
datadir         = /usr/local/mysql2/data
log-bin=mysql-bin
binlog_format=mixed
gtid-mode=on
disable-gtid-unsafe-statements=true
log-slave-updates=true # needed to enable gtid
sync-master-info = 1
master-info-repository=TABLE
relay-log-info-repository=TABLE
server-id       = 3
innodb_data_home_dir = /usr/local/mysql2/data
innodb_log_group_home_dir = /usr/local/mysql2/data
innodb_flush_log_at_trx_commit = 1
sync_binlog=1

誰もこのようなことに遭遇しましたか?この方法で複数のインスタンスを実行すると、リレー ログのカスタム命名が必要になりますか? ありがとう。

4

1 に答える 1

2

2 つのスレーブで異なるログ ビン名が必要であることが判明しました。私はそれらをから変更しました

[mysqld1]
log-bin=mysql-bin
[mysqld2]
log-bin=mysql-bin

[mysqld1]
log-bin=slave1-bin
[mysqld2]
log-bin-slave2-bin

MySQL Utilities で簡単に作成されたレプリケーションと自動フェイルオーバーのサンプル構成は、これに関するヒントを与えてくれました。

于 2012-11-20T17:59:18.453 に答える