MySQLマスター/スレーブレプリケーション(3)-マスター変更パラメーターの詳細説明

MySQLマスター/スレーブレプリケーション(3)-マスター変更パラメーターの詳細説明

MySQLマスター/スレーブレプリケーション構成を実行する場合、変更マスターを使用して、スレーブサーバーがマスターサーバーに接続するために使用するパラメーターを構成および変更します。これにより、スレーブサーバーはマスターサーバーのバイナリログとスレーブサーバーのリレーログを読み取ることができます。同時にmaster.infoとrelay-log.info情報を更新します。ステートメントを実行する前に、IOスレッドとSQLスレッドがサーバーから開始されている場合は、それらを停止する必要があります(stopスレーブコマンドを実行します)。

1.マスター変更コマンドの概要

change masterコマンドの形式は次のとおりです。

CHANGE MASTER TO option [, option] ...  
option:  
   MASTER_BIND = 'interface_name'  
   MASTER_HOST = 'host_name'  
   MASTER_USER = 'user_name'  
   MASTER_PASSWORD = 'password'  
   MASTER_PORT = port_num  
   MASTER_CONNECT_RETRY = interval  
   MASTER_RETRY_COUNT = count  
   MASTER_DELAY = interval  
   MASTER_HEARTBEAT_PERIOD = interval  
   MASTER_LOG_FILE = 'master_log_name'  
   MASTER_LOG_POS = master_log_pos  
   MASTER_AUTO_POSITION = {
   
   01}  
   RELAY_LOG_FILE = 'relay_log_name'  
   RELAY_LOG_POS = relay_log_pos  
   MASTER_SSL = {
   
   01}  
   MASTER_SSL_CA = 'ca_file_name'  
   MASTER_SSL_CAPATH = 'ca_directory_name'  
   MASTER_SSL_CERT = 'cert_file_name'  
   MASTER_SSL_CRL = 'crl_file_name'  
   MASTER_SSL_CRLPATH = 'crl_directory_name'  
   MASTER_SSL_KEY = 'key_file_name'  
   MASTER_SSL_CIPHER = 'cipher_list'  
   MASTER_SSL_VERIFY_SERVER_CERT = {
   
   01}  
   IGNORE_SERVER_IDS = (server_id_list)  
 server_id_list:  
    [server_id [, server_id] ... ]

change masterコマンドの実行後の情報は、master.infoとrelay-log.infoの2つのファイルに保存されます。

[root@localhost ~]# ll /var/lib/mysql/*info
-rw-r-----. 1 mysql mysql 126 7月   5 11:52 /var/lib/mysql/master.info
-rw-r-----. 1 mysql mysql  61 7月   5 11:28 /var/lib/mysql/relay-log.info

master.infoファイルの内容を表示します。

[root@localhost ~]# cat /var/lib/mysql/master.info
25
mysql-bin.000014
1818
192.168.1.11
repl
123456
3306
60
0





0
30.000

0
95cfc8eb-2d58-11ea-840b-000c296166d5
86400


0


[root@localhost ~]# 

relay-log.infoファイルの内容を表示します。

[root@localhost ~]# cat /var/lib/mysql/relay-log.info
7
./mysql-relay-log.000002
1539
mysql-bin.000014
1818
0
0
1

[root@localhost ~]# 

change masterコマンドには多くのパラメーターが含まれますが、change masterコマンドを実行するときにパラメーターを指定しないと、パラメーターは元の値またはデフォルト値を保持します。したがって、一部のパラメーターを変更する必要がない場合は、コマンドへのマスターの変更を省略できます。

たとえば、レプリケーションに使用されるユーザーパスワードが変更された場合、マスターをMASTER_PASSWORDオプションのみを変更するように変更すると、コードは次のようになります。

mysql> stop slave;
Query OK, 0 rows affected (0.05 sec)

mysql> change master to master_password='123456';
Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> start slave;
Query OK, 0 rows affected (0.01 sec)

2.変更マスターの共通パラメーターの詳細な説明

1、MASTER_HOSTとMASTER_PORT

MASTER_HOSTはマスターサーバーのホスト名(またはIPアドレス)の設定に使用され、MASTER_PORTはマスターサーバーのMySQLインスタンスのポート番号の設定に使用されます。
MASTER_HOSTおよびMASTER_PORTパラメーターを指定すると、スレーブはそれが以前に指定されたものと同じではないと(MASTER_HOSTおよびMASTER_PORTパラメーターが以前と同じであっても)、以前に指定されたマスターのbinlogファイルの名前と場所は適用されなくなります。

例えば:

change master to
....
master_host='192.168.1.11',
master_port=3306,
....;

2、MASTER_USERとMASTER_PASSWORD

マスターホストのレプリケーションアカウントに対応するユーザー名とパスワードに接続します。MASTER_HOST、MASTER_PORT、MASTER_USER、およびMASTER_PASSWORDの4つのオプションは、スレーブサーバーをマスターホストに接続するための情報を提供します。

例えば:

change master to
....
master_host='192.168.1.11',
master_port=3306,
master_user='repl',
master_password='123456',
....;

3、MASTER_LOG_FILEとMASTER_LOG_POS

2つのオプションMASTER_LOG_FILEおよびMASTER_LOG_POSは、マスターが次回実行を開始するときにマスターから読み取るスレーブのIOスレッドの位置座標を決定します。
2つのオプションRELAY_LOG_FILEおよびRELAY_LOG_POSは、スレーブが次回実行を開始したときにリレーログから読み取られるスレーブのSQLスレッドの位置座標を決定します。
MASTER_LOG_FILEまたはMASTER_LOG_POSのいずれかが指定されている場合、RELAY_LOG_FILEまたはRELAY_LOG_POSは指定できず、MASTER_AUTO_POSITION = 1も指定できません。

例えば:

change master to
....
master_host='192.168.1.11',
master_port=3306,
master_user='repl',
master_password='123456',
master_log_file='mysql-bin.000012',
master_log_pos=559,
....;

4、MASTER_AUTO_POSITION

このパラメーターはmysqlのバージョン5.6.5で導入されました。マスターの変更を実行するときにMASTER_AUTO_POSITION = 1を使用すると、スレーブサーバーはマスターサーバーに接続するときにGTIDベースのレプリケーションプロトコルを使用します。
GTIDベースのレプリケーションを使用する場合(MASTER_AUTO_POSITION = 1)、最初にgtid_modeを有効にします(my.cnfでgtid-mode = ONに設定します)。
GTIDの使用後にファイルベースのレプリケーションプロトコルに復元する場合は、マスターの変更を実行するときにMASTER_AUTO_POSITION = 0とMASTER_LOG_FILEおよびMASTER_LOG_POSITIONを指定する必要があります。

5、MASTER_CONNECT_RETRY

マスターに再接続するときのタイムアウト待ち時間を設定します。デフォルトは60秒です。

change master to
....
master_host='192.168.1.11',
master_port=3306,
master_user='repl',
master_password='123456',
master_log_file='mysql-bin.000012',
master_log_pos=559,
master_connect_retry=120,
....;

6、MASTER_RETRY_COUNT

再接続の数を制限し、show slave status出力のMaster_Retry_Count列を更新します。デフォルト値は24 * 3600 = 86400です。MASTER_RETRY_COUNT = 0は、再接続時間が無制限であることを意味します。

例えば:

change master to
....
master_host='192.168.1.11',
master_port=3306,
master_user='repl',
master_password='123456',
master_log_file='mysql-bin.000012',
master_log_pos=559,
master_connect_retry=120,
master_retry_count=0,
....;

7、MASTER_DELAY

MASTER_DELAYのデフォルト値は0であり、値の範囲は0〜2 ^ 31–1です。これは、スレーブが少なくともマスターの複製時間より遅れていることを示します。マスターからのイベントは直接実行されませんが、少なくともMASTER_DELAYで指定された時間間隔の後にマスターがイベントを実行するまでは実行されます。

例えば:

change master to
....
master_host='192.168.1.11',
master_port=3306,
master_user='repl',
master_password='123456',
master_log_file='mysql-bin.000012',
master_log_pos=559,
master_connect_retry=120,
master_retry_count=0,
master_delay=86400,  --slave 延迟 24 小时
....;

8、MASTER_BIND

スレーブレプリケーションでは、スレーブサーバーに複数のIPがあり、マスターへの接続に使用するIPを決定するときに使用されます。

change master to
....
master_host='192.168.1.11',
master_bin='192.168.12',
master_port=3306,
master_user='repl',
master_password='123456',
master_log_file='mysql-bin.000012',
master_log_pos=559,
master_connect_retry=120,
master_retry_count=0,
master_delay=86400,  --slave 延迟 24 小时
....;

9、IGNORE_SERVER_IDS =(server_id_list)

server_id_list:[server_id [、server_id]…]の後にコンマで区切られた0個以上のserver-idが続き、主にマルチマスターレプリケーションまたはリングレプリケーションに使用されます。レプリケーションチェーンの途中のサーバーは異常です。スキップできます。問題のMySQLインスタンス。

mysql> CHANGE MASTER TO MASTER_HOST=xxx IGNORE_SERVER_IDS= [server_id [, server_id] ... ]

無視されたホストのリストをクリアするには、次のコマンドを使用します。

mysql> CHANGE MASTER TO IGNORE_SERVER_IDS = ();

おすすめ

転載: blog.csdn.net/weixin_44377973/article/details/107137550
おすすめ