sql >> データベース >  >> RDS >> MariaDB

CentOS / RHEL7およびDebian8/9でMariaDB(マスタースレーブ)レプリケーションをセットアップする方法

    一部のIT担当者が「データベースレプリケーション」というフレーズを聞いた場合でも 「彼らはしばしば、ハードウェア障害やデータ破損の場合のデータ損失を回避するために、同じ情報の複数のコピーを持つ必要性と関連付けます。これはある程度当てはまりますが、データベースレプリケーションには、データベースとデータの可用性をバックアップするという一般的な概念よりもはるかに多くのことがあります。

    マスタースレーブセットアップでのデータベースレプリケーションの他の利点の中で、私たちは言及することができます:

    1. バックアップは、マスターの書き込み操作に影響を与えることなく(および影響を受けることなく)スレーブサーバーで実行できます。
    2. リソースを大量に消費する操作(データ分析など)は、マスターのパフォーマンスに影響を与えることなく、スレーブで実行できます。

    この記事では、 MariaDB 10.1でマスター/スレーブレプリケーションを設定する方法について説明します。 。従来のレプリケーションとは対照的に、MariaDBはグローバルトランザクションIDの概念を導入しました ( GTID v10.0 、これにより、スレーブを変更して、別のマスターに接続したり、別のマスターから簡単に複製したりできます。さらに、スレーブの状態はクラッシュセーフな方法で記録されます(状態の更新は、データの更新と同じトランザクションで実行されます)。

    MySQLをお探しの場合 CentOS / RHEL 6でのレプリケーション 、このガイドに従ってくださいCentOS / RHEL 6でのMySQL(マスタースレーブ)レプリケーションのセットアップ

    CentOS /RHEL7およびDebian8/9へのMariaDB10.1のインストール

    私たちのテスト環境は、次のマシンで構成されています(どちらも CentOS 7 ):

    マスター:192.168.0.18スレーブ:192.168.0.19 

    最新バージョンのMariaDBをインストールするには、サーバーにリポジトリを追加する必要があります。古いバージョンのMariaDB、たとえば5.5を使用している場合は、以下の記事を使用して最新の10.1バージョンにアップグレードすることを検討してください。

    1. MariaDB5.5をMariaDB10.1にアップグレードする

    CentOS/RHELの場合

    MariaDB.repoという名前のファイルを作成します /etc/yum.repos.d内 両方のマスターに次の内容が含まれています およびスレーブ システム:

    #MariaDB10.1CentOSリポジトリリスト-作成済み2016-01-2314:16UTC#http://mariadb.org/mariadb/repositories/ [mariadb] name =MariaDBbaseurl =http://yum.mariadb.org/ 10.1 / centos7-amd64gpgkey =https://yum.mariadb.org/RPM-GPG-KEY-MariaDBgpgcheck=1 

    ファイルを保存し、yumを使用して両方のサーバーにMariaDBをインストールします:

    #yum update &&yum install MariaDB-server MariaDB-client 

    Debian/Ubuntuの場合

    パッケージとMariaDBリポジトリを認証するためのキーを追加します:

    #apt-get install software-properties-common#apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db#add-apt-repository'deb [arch =amd64、i386] http:/ /mirror.edatel.net.co/mariadb/repo/10.1/  debian jessie  メイン'

    注 :ディストリビューションの名前を置き換えます およびコードネーム 上記の強調表示された行で。

    apt-getを使用してインストールします コマンド:

    #apt-get update#apt-get install mariadb-server 

    MariaDBをインストールしたら、mysql_secure_installationを実行します マスターとスレーブの両方で手順を実行し、マスターマシンにサンプルテストデータベースを設定しましょう。

    マスターでのサンプルMySQLデータベースのセットアップ

    ここで、マスターサーバーにEmployeesを設定します。 https://github.com/datacharmer/test_dbのデータベース ( 4のデータセットを提供します 2つの簡単なステップで100万件のレコードが6つのテーブルに分散します:

    リポジトリのクローンを作成し、それを使用してサンプルデータベースをMariaDBインストールにインポートします。

    #git clone https://github.com/datacharmer/test_db# cd test_db#mysql  

    マスターでのMySQLサーバーの構成

    マスターを構成するには、次の手順に従います。

    ステップ1: /etc/my.cnfを編集します ファイル。 [mysqld]の下 セクションに、次の4行を追加します。

     log-binserver_id =1replicate-do-db =employeesbind-address =192.168.0.18 

    MariaDBを再起動します:

    #systemctl restart mariadb 

    ステップ2: rootとしてMariaDBサーバーにログオンし、ユーザースレーブを作成して、必要な権限を割り当てます。

      MariaDB [(なし)]>  CREATE USER'slave' @'localhost' IDENTIFIED BY'SlavePassword';  MariaDB [(none)]>  GRANT REPLICATION SLAVEON*。*GRANTOPTIONを使用して'SlavePassword'で識別されるスレーブに; MariaDB [(none)]>  FLUSH PRIVILEGES;  MariaDB [(なし)]>  読み取りロック付きのフラッシュテーブル; MariaDB [(none)]>  マスターステータスを表示;

    最後 コマンド(マスターステータスを表示 )は、バイナリログの現在の位置を返します(スレーブが複製を開始するポイントを正確に示す正確な座標:

    ステップ3: MariaDBプロンプトを終了します(exit;を使用) )そして、次のコマンドを使用して、employeesデータベースのスナップショットを作成します。 Enterを押したとき 、mysql_secure_installationを使用して以前に設定したrootのパスワードを入力するように求められます :

    #mysqldump -u root -p employees> employees-dump.sql 

    ダンプが完了したら、データベースサーバーに再度接続してテーブルのロックを解除し、終了します。

      MariaDB [(なし)]>  テーブルのロックを解除; MariaDB [(none)]>  終了;

    ステップ4: ダンプをスレーブにコピーします:

    #scp employees-dump.sql [email protected]:/ root / 

    ステップ5: mysql_upgradeを実行します システムテーブルをアップグレードする手順(MariaDBルートパスワードの入力を求められます):

    #mysql_upgrade -u root -p 

    ステップ6: ファイアウォールを通過するデータベースサービスを許可します:

    #firewall-cmd --add-service =mysql#firewall-cmd --add-service =mysql --permanent#firewall-cmd --reload 

    それでは、スレーブを構成しましょう。

    スレーブでのMySQLサーバーの構成

    スレーブを構成するには、次の手順に従います。

    ステップ1: レプリケーションタスクを実行するためのアカウントを作成します。次のコマンドでローカルMariaDBサーバーに接続します:

    #mysql -u root –p 

    以前に設定したパスワードを入力します。

    ステップ2: データベースサーバーに接続したら、ユーザーと空のデータベースを作成し、権限を付与します。

      MariaDB [(なし)]>  CREATEDATABASE従業員; MariaDB [(なし)]>  従業員にすべての特権を付与します。*付与オプションを使用して'slave'@'localhost'に; MariaDB [(none)]>  フラッシュ特権;

    ステップ3: MariaDBプロンプトを終了し、マスターサーバーで作成されたダンプをロードします。

    #mysql -u root -p employees  

    ステップ4: /etc/my.cnfを編集します サーバーを割り当てるファイルID [mysqld]の下のスレーブに セクション。 1とは異なる整数である必要があることに注意してください 、 1を使用したため マスターで:

     server_id =2replicate-do-db =employees 

    データベースサーバーを再起動します:

    #systemctl restart mariadb 

    ステップ5: mysql_upgradeを実行します システムテーブルをアップグレードする手順(MariaDBルートパスワードの入力を求められます):

    #mysql_upgrade -u root -p 

    ステップ6: ダンプがスレーブにインポートされたら、複製を開始するためのほんの数ステップです。データベースにログオンし、MariaDBプロンプトで次のコマンドを実行します。 MASTER_LOG_FILEに特に注意してください およびMASTER_LOG_POS 変数。SHOWMASTERSTATUSによって返される値と一致する必要があります 上記の「マスターの構成」のステップ2で。

      MariaDB [(なし)]>  MASTERをMASTER_HOST='192.168.0.18'、MASTER_USER ='slave'、MASTER_PASSWORD ='SlavePassword'、MASTER_PORT =3306、MASTER_LOG_FILE ='master-bin.000001'、MASTER_LOG_POS =314、MASTER_CONNECT_RETRY =10、MASTER_USE_GTID =current_pos;<に変更します。 / pre> 

    ステップ7: スレーブを起動し、MariaDBプロンプトを終了せずにそのステータスを確認します:

      MariaDB [(なし)]>  START SLAVE;  MariaDB [(none)]>  スレーブステータスを表示\G;

    今これが必要なわけではありませんが、次の方法でスレーブを停止できることに注意してください:

      MariaDB [(なし)]>  奴隷制をやめなさい;

    SHOW SLAVE STATUS\G;の場合 コマンドはエラーを返します。これらのエラーを使用してトラブルシューティングを行い、START SLAVE;を実行します。 もう一度テストします。

    MySQL/MariaDBデータベースレプリケーションのテスト

    従業員にレコードを追加しましょう マスターサーバーのテーブル:

      MariaDB [(なし)]>  INSERT INTO employees(emp_no、birth_date、first_name、last_name、gender、hire_date)VALUES(500000、 '1983-07-12'、'Dave'、'Null'、'M'、 '2014-12-12'); 

    次に、この変更がスレーブで複製されたことを確認します。

      MariaDB [(なし)]>  USE従業員; MariaDB [(なし)]>  SELECT*FROM従業員WHEREemp_no=500000; 

    ご覧のとおり、レプリケーションはマスターからスレーブへと正しく機能しています。

    概要

    この記事では、最新バージョンのMariaDBを CentOS / RHEL 7にインストールする方法について説明しました。 およびDebian8/9で、GTIDを使用してマスター/スレーブレプリケーションを設定する方法について説明しました。詳細については、MariaDBレプリケーションガイドを参照してください。質問やコメントがある場合は、以下のフォームを使用して遠慮なくお問い合わせください。


    1. WinHttp.WinHttpRequest.5.1 forTLS1.2を使用してSQLServerストアドプロシージャでオプション9を設定します

    2. MySQLをSQliteに変換する

    3. PostgreSQLのOracle高可用性の概念

    4. PostgreSQLでピボットテーブルを作成する