2013年5月17日金曜日

RESET SLAVEでリセットされる範囲

RESET SLAVEだけの場合、master_log_name, master_log_pos, ssl_verify_server_cert, heartbeat_periodのクリア。
RESET SLAVE ALLの場合、↑に加えてhost[0] = 0; user[0] = 0; password[0] = 0; される。

gtid周りの情報はhiroi10さんの gtidを使用した環境でのmysqldump が詳しい。


【2013/05/20 12:07】
MASTER_SSL_*は?
⇒「メモリ上からは」クリアされない。

RESET SLAVEだけでもMySQL再起動したら消える気がするけど?
⇒RESET SLAVEは「メモリ上の」↑の情報と、master.infoファイルを消す。
再起動するとメモリ上の情報は全て吹っ飛ぶ && master.infoから読もうにもmaster.infoは消されてるから、全部消える。
⇒master_info_repository = 'table'でも、mysql.slave_master_infoの中身が吹っ飛ばされるので動作は一緒。



# ll master*
ls: cannot access master*: そのようなファイルやディレクトリはありません

mysql55> CHANGE MASTER TO master_host = 'localhost';
Query OK, 0 rows affected (0.02 sec)

# ll master*
-rw-rw---- 1 mysql mysql 47  5月 20 12:15 2013 master.info

mysql55> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State:
                  Master_Host: localhost
                  Master_User:
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File:
          Read_Master_Log_Pos: 4
               Relay_Log_File: relay.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File:
             Slave_IO_Running: No
            Slave_SQL_Running: No
              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: 0
              Relay_Log_Space: 107
              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: NULL
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: 0
1 row in set (0.00 sec)

mysql55> RESET SLAVE;
Query OK, 0 rows affected (0.02 sec)

# ll master*
ls: cannot access master*: そのようなファイルやディレクトリはありません

mysql55> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State:
                  Master_Host: localhost
                  Master_User:
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File:
          Read_Master_Log_Pos: 4
               Relay_Log_File: relay.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File:
             Slave_IO_Running: No
            Slave_SQL_Running: No
              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: 0
              Relay_Log_Space: 126
              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: NULL
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: 0
1 row in set (0.00 sec)


【2013/05/20 12:39】
おまけ。
master.infoはCHANGE MASTER TOまたはSTART SLAVEのタイミングで作られるので、
RESET SLAVE -> (再起動をはさまずに) START SLAVE(または中途半端なCHANGE MASTER TO)で残った情報が記録されてしまうので注意、という感じ?

0 件のコメント :

コメントを投稿