GNU/Linux >> Linux の 問題 >  >> Linux

MySQLソース-レプリカレプリケーションを設定する

ソースレプリカデータレプリケーションを使用すると、レプリケートされたデータを複数のコンピューターにコピーして、複数の関係者によるバックアップと分析を行うことができます。グループメンバーによって識別された必要な変更を、ノードの指定されたプライマリに送信する必要があります。これは、グループの許可された寄稿者がデータを更新できるsource-sourcereplicationとは異なります。

この記事では、2つのクラウドサーバー間でMySQL®ソース-レプリカデータベースレプリケーションを設定する手順について説明します。この記事の例で使用されているオペレーティングシステムは、RackspaceCloudServersベースイメージから構築されたCentOS®6です。

始める前に

この記事の手順では、2つのクラウドサーバーdb01を使用します およびdb02 .Cloudサーバーには2つのIPアドレスがあります(1つはパブリック、もう1つはプライベート)。例では、帯域幅の料金が発生しないように、プライベートIPインターフェイスを介してレプリケーションを構成する方法を示しています。記事の期間中、db01 ソースと見なされます MySQLサーバー(読み取り/書き込みモードを実行)、およびdb02 レプリカと見なされます サーバー(読み取り専用モードを実行)。

すでにソースノードでMySQLデータベースを実行している場合は、それらの間のレプリケーションを構成する前に、レプリカノードへのダンプと復元が必要です。 mysqldumpを使用します データベースをファイルにダンプし、それを転送してレプリカに復元するコマンド。必要な構成が実行された後、レプリケーションは無効になります。詳細については、「レプリケーションの構成」セクションを参照してください。

クラウドサーバーを作成する

Centos 6ベースイメージを使用して、2つのLinux®クラウドサーバーを作成します。次の手順を使用して、各サーバーを個別に作成します。

  1. クラウドコントロールパネルにログインします。
  2. 上部のナビゲーションバーで、[製品の選択]をクリックします 次にRackspaceCloud
  3. サーバーを選択します 次にクラウドサーバー
  4. [サーバーの作成]をクリックします 。
  5. セットアップ中にサーバーを簡単に識別できるように、サーバーに名前を付けます。
  6. Centos6ベースイメージを選択します。
  7. データベースの要件に適したRAM構成(フレーバー)を選択します。
  8. [サーバーの作成]をクリックします 。

次のセクションで概説するコマンドは、特権のあるrootまたはsudoグループのユーザーが実行する必要があります。括弧内に指定された文字列または値は、セットアップに固有のデータに置き換える必要があります。

MySQLをインストール

mysql-serverをインストールする必要があります 両方のCentOSクラウドサーバー上のパッケージ。

  1. MySQLをインストールする前に、次のコマンドを実行して、パッケージデータベースが最新であることを確認してください。

    #yum update
    
  2. MySQLをインストールし、起動時に自動的に実行できるようにします:

     #yum install mysql-server
    #chkconfig mysqld on
    
  3. mysqldを開始します サービス:

    #service mysqld start
    
  4. mysqldの後 サービスが開始されたら、次のコマンドを使用してMySQLサーバールートパスワードを設定します。

    /usr/bin/mysqladmin -u root password 'new-password'
    /usr/bin/mysqladmin -u root -h web01 password 'new-password'
    

    :または、MySQLインストールにパッケージ化されたセキュアインストールスクリプトを実行することもできます:

    # /usr/bin/mysql_secure_installation
    Enter current password for root (enter for none):
    ...
    Set root password? [Y/n] Y
    ...
    Remove anonymous users? [Y/n] Y
    ...
    Disallow root login remotely? [Y/n] Y
    ...
    Remove test database and access to it? [Y/n] Y
    ...
    Reload privilege tables now? [Y/n] Y
    
  5. ポート3306(mysqld)での接続を許可するには デフォルトのポート)、RH-Firewall-1-INPUTの最後の行番号に挿入を含むTCPポート3306ルールを追加します チェーン(この場合は10行目):

    # iptables -I RH-Firewall-1-INPUT 10 -p tcp --dport 3306 -j ACCEPT
    
  6. ファイアウォール構成を保存します:

    # service iptables save
    

次のセクションを完了して、関連する構成を変更し、レプリケーションを有効にします。

レプリケーションを構成する

ソースサーバーにはMySQLユーザーが必要です(db01 )複製に使用されます。

  1. 次のコマンドを実行してMySQLユーザーを設定し、括弧内のエントリを、設定で使用する予定の文字列または値で更新します。

    注: 次のコードでユーザーを作成する必要がない場合があります。

    # mysql -u root -p
    mysql> create user [replication_username]@'[private IP of db02]' identified by '[some password]';
    mysql> grant replication slave on *.* TO [replication_username]@'[private IP of db02]';
    mysql> flush privileges;
    mysql> quit
    
  2. /etc/my.cnfを編集します ファイルを作成し、次のエントリを追加します。

    bind-address = 0.0.0.0
    server-id = 1
    log-bin = mysql-bin
    binlog-ignore-db = "mysql"
    
  3. /etc/my.cnfの更新が完了したら ファイル、mysqldを再起動します サービス。

    #service mysqld restart
    

    レプリケーションを開始する前に、ソースサーバーとレプリカサーバーのデータが同じである必要があります。この複製を実行するには、ソース(db01)からデータをダンプします。 )サーバーを作成し、レプリカに追加します(db02 )サーバー。

  4. 次のコマンドを使用して、データベースのダンプ中にソースデータベースに何も書き込めないことを確認します。また、db02のレプリケーション構成を完了するにはこれらの値が必要なので、バイナリログのファイル名と位置にも注意してください。

    # mysql -u root -p
    mysql> FLUSH TABLES WITH READ LOCK;
    mysql> SHOW MASTER STATUS;
    
    +------------------+--------------------------+------------------+
    | File             | Position  | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+--------------------------+------------------+
    | mysql-bin.000010 |        10 |              | mysql            |
    +------------------+--------------------------+------------------+
    1 row in set (0.00 sec)
    

    注1: db02でレプリケーション構成を完了するにはこれらの値が必要なため、バイナリログのファイル名と位置を記録します 。

    注2: このセッションを開いたままにして、閉じるとロックが解除されます!

  5. mysqldumpを使用してデータベースダンプを実行します 次のように:

    # mysqldump -u root -p --databases [database-1] [database-2] ...  > /root/db_dump.sql
    
  6. データベースのダンプが完了したら、ソースから読み取りロックを解除します(db01 )次のように入力するか、開いているセッションを終了します。

    mysql> UNLOCK TABLES;
    
  7. データベースダンプファイルをレプリカサーバーにコピーして、次のコマンドを使用して復元できるようにします。

    scp /root/db_dump.sql [private-IP-of-db02]:/root/
    
  8. db02について 、 /etc/my.cnfを編集します ファイルを作成し、次のエントリを追加します:

    bind-address = 0.0.0.0
    server-id = 2
    master-host =  [private-IP-of-db01]
    master-user = [replication-username]
    master-password = [replication-password]
    master-connect-retry = 60
    
  9. db_dump.sqlをインポートします 以前にコピーしたファイルをコピーして、MySQLサービスを再起動します。

    # mysql -u root -p < /root/db_dump.sql
    # service mysqld restart
    
  10. レプリカの複製手順を完了します:

    # mysql -u root -p
    mysql> SLAVE STOP;
    mysql> CHANGE MASTER TO MASTER_HOST='[private-IP-of-db01]',
    MASTER_USER='[replication-username]',
    MASTER_PASSWORD='[replication-password]',
    MASTER_LOG_FILE='[file-listed-on-master-status]',
    MASTER_LOG_POS=[log-position-listed-on-master-status];
    mysql> START SLAVE;
    mysql> SHOW SLAVE STATUS\G
    

    注: Slave_IO_State フィールドに「マスター送信イベントを待機中」と表示されているはずです。 「マスターに接続中」と表示されている場合は、MySQLログファイルを確認してください。デフォルトでは、 /var/log/mysqld.logです。 、ただし、システム上で異なる構成になっている可能性があります。いつも、 /etc/my.cnf ログファイルの場所を定義します。

レプリケーションのテスト

レプリケーションの設定をテストするには、db01に新しいデータベースと関連テーブルを作成します データを挿入して、変更がdb02にミラーリングされていることを確認します 。次の例では、新しいデータベースの名前はテストです。 、新しいテーブルの名前は users

# mysql -u root -p
mysql> create database testing;
mysql> use testing
mysql> create table users(id int not null auto_increment, primary key(id), username varchar(30) not null);
mysql> insert into users (username) values ('foo');
mysql> insert into users (username) values ('bar');
mysql> exit

db02に変更が表示されます。 すぐに。


Linux
  1. OracleLinuxでMySQLマルチマスターレプリケーションを構成する方法

  2. Ubuntu /DebianLAMPサーバーをセットアップする方法

  3. MySQL レプリケーションにおける「システム ユーザー」の目的は何ですか

  1. MySQLマスターをセットアップする方法-マスターレプリケーション

  2. CentOSでMySQLレプリケーションを設定する方法

  3. UbuntuでMySQLクラスターを設定する方法

  1. MySQLソース-レプリカレプリケーションを構成する

  2. MySQLソース-ソースレプリケーションを構成する

  3. SET GLOBAL max_allowed_pa​​cket が機能しない