MySQL-マルチマスターの構成(バージョン8.0.18)

5863 ワード

1.現実背景
既存の4台のホストは、いずれも自動的にデータを収集し、MySQLデータベースに格納することができ、データの処理に特化した高構成ホストサーバが1台ある.この5台の機器は常に同一のネットワークセグメントの下にいないが,同一のネットワークセグメントの下にあると,データ収集用のホスト4台が自動的にプライマリサーバにデータを集約できるように環境を構成することが望ましい.
2.用語約定
  • slave、プライマリサーバ
  • master 1、データ収集用のホスト
  • master 2、データ収集用のホスト
  • master 3、データ収集用のホスト
  • master 4、データ収集用のホスト
  • 3.マスターの構成
    3.1. 起動パラメータの設定
    複数のmasterはserver-idが一致しないことを確認するだけで、その他は自分のニーズに応じて構成できます.
    [mysqld]
    #       ,               
    server-id = 1000
    
    # master       log_bin
    # mysql-bin       ,      mysql-bin.index、mysql-bin.000001    
    log_bin=mysql-bin
    
    #          (  : ),     0,    
    expire_logs_days = 0
    
    #     
    log-error=/var/lib/mysql/mysql-error.log
    
    #    log_bin      ,               ,  mysql-bin.000002
    max_binlog_size = 100M
    
    # mysql     
    basedir=/var/lib/mysql
    
    # mysql     
    datadir=/var/lib/mysql
    
    # master         
    binlog_do_db=replication
    
    # master       
    binlog_ignore_db=information_schema
    binlog_ignore_db=performance_schema
    binlog_ignore_db=sys
    binlog_ignore_db=mysql
    
    #          
    binlog_format=MIXED
    
    # blob         (  :  、B)
    # 1048576 B = 1MB
    max_allowed_packet=1048576
    
    
    #        ,    
    #         0
    # validate_password_length=8
    
    #             
    # validate_password_mixed_case_count=1
    
    #            
    # validate_password_number_count=1
    
    #              
    # validate_password_special_char_count=1
    
    innodb_flush_log_at_trx_commit=0
    
    
    [mysql]
    default-character-set=utf8mb4
    
    [client]
    default-character-set=utf8mb4
    

    3.2. サービスを再起動してパラメータを有効にする
    3.3. rootとしてログインし、ユーザーを作成し、パスワードを付与し、権限を付与し、権限をリフレッシュします.
    ユーザーreplicationを作成し、パスワードを付与します.
    create user 'replication'@'%' identified with mysql_native_password by 'JINGhuaSHUIyue123,.';

    ユーザーの作成に失敗した場合は、すでにユーザーが存在する可能性があります.重要でない場合は、ユーザーを削除できます.
    drop user 'replication'@'%';

    再構築ユーザーを削除しない場合は、パスワードのみを変更します.
    alter user 'replication'@'%' identified with mysql_native_password by 'JINGhuaSHUIyue123,.';

    ユーザーreplication slave権限を付与するには、次の手順に従います.
    grant replication slave on *.* to 'replication'@'%';

    Replication slave権限がすぐに有効になることを保証し、権限をリフレッシュします.
    flush privileges;

     
    4.slaveサーバの構成
    4.1. 起動パラメータの設定
    [mysqld]
    #       ,               
    server-id = 2000
    
    # mysql     
    basedir=D:\mysql
    
    # mysql     
    datadir=D:\mysql\data
    
    # slave       
    replicate_do_db=test
    
    # slave       
    replicate_ignore_db=information_schema
    replicate_ignore_db=performance_schema
    replicate_ignore_db=mysql
    replicate_ignore_db=sys
    
    # slave         (  : )
    slave_net_timeout=60
    
    [mysql]
    
    default-character-set=utf8
    
    [client]
    
    default-character-set=utf8

    4.2. サービスを再起動してパラメータを有効にする
    5.マルチマスターマスターの構成
    5.1. マスターステータスの表示
    rootとしてmaster 1にログインするには、file、positionに注意する必要があります.
    show master status;
    +------------------+----------+--------------+-------------------------------------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                                | Executed_Gtid_Set |
    +------------------+----------+--------------+-------------------------------------------------+-------------------+
    | mysql-bin.000006 |      155 | test         | information_schema,performance_schema,sys,mysql |                   |
    +------------------+----------+--------------+-------------------------------------------------+-------------------+

    rootとしてmaster 1にログインするには、file、positionに注意する必要があります.
    show master status;
    +------------------+----------+--------------+-------------------------------------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                                | Executed_Gtid_Set |
    +------------------+----------+--------------+-------------------------------------------------+-------------------+
    | mysql-bin.000005 |      155 | test         | information_schema,performance_schema,sys,mysql |                   |
    +------------------+----------+--------------+-------------------------------------------------+-------------------+
    

    説明:MySQLを起動すると、新しいlog-binが強制的に生成されるため、場所は155です.
    5.2. slaveとmasterの関連付けの構成
    残りの構成があるかどうかを確認します.
    show slave status\G;

    slaveを停止し、残りの構成をクリアします.
    stop slave;
    reset slave all;

    master 1のfileに従って、positionはreplicationチャネル「master 1」を構成する
    change master to
    master_host = '112.124.1.100',
    master_user = 'replication',
    master_port = 3306,
    master_password = 'replication',
    master_log_file = 'mysql-bin.000006',
    master_log_pos = 155,
    master_connect_retry = 15,
    master_retry_count = 0
    for channel 'master1';
    

    master 2のfile,positionに従ってreplicationチャネル「master 2」を構成する
    change master to
    master_host = '192.168.1.139',
    master_user = 'replication',
    master_port = 3306,
    master_password = 'JINGhuaSHUIyue123,.',
    master_log_file = 'mysql-bin.000005',
    master_log_pos = 155,
    master_connect_retry = 15,
    master_retry_count = 0
    for channel 'master2';
  • master_connect_retry:接続に失敗しました.再試行間隔(単位:秒)
  • master_retry_count:接続に失敗した再試行回数、0は無限次
  • 5.3. テーブルの準備
    起動前に、3台のマシンのデータベースでDDL文を使用してテーブル構造を定義し、テーブル構造が一致していることを確認し、プライマリ・スレーブのレプリケーション前の一貫性を確保します.そうしないと、エラーが発生します.
    5.4. slaveを起動し、slaveステータスを表示
    start slave for channel 'master1';
    start slave for channel 'master2';
    show slave status\G;

    注意Slave_IO_RunningとSlave_Slave_RunningはいずれもYesと表示してから成功を示す必要があります.そうしないと、エラーメッセージに注意してください.
    over