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

MariaDBを使用したマスタースレーブレプリケーション

これが、MariaDBを使用してマスタースレーブレプリケーションを構成した方法です。 MariaDBはMySQLのフォークであるため、同じ手順に従う必要があります。

私の設定

すでに2台のMaria/MySQLサーバーが実行されていると想定しています。これらは私の特徴です:

  • OS:Debianテスト「Bookworm」
  • MariaDBバージョン:10.5.12

2つの仮想マシンを使用して、マスター仮想マシンを複製したスレーブを作成しています。

  • マスター:192.168.122.13
  • スレーブ:192.168.122.223

mariaまたはmysqlデータベースがない場合は、ここunixcopに、ここ、ここ、またはここにいくつかのチュートリアルがあります。

マスター

前に言ったように、あなたはすでにマリアまたはmysqlを実行していると仮定しています。マスターで構成を行い、次にスレーブホストで構成を行う必要があります。

/etc/mysql/mariadb.conf.d/50-server.cnfを編集します (またはセットアップ内の適切なファイル)、次の行を変更します:

bind-address = <your.master.host.ip>
server-id=1

MariaDBを再起動し、レプリケーション権限を持つユーザーを作成します:

MariaDB [(none)]> CREATE USER 'esclavo'@'192.168.122.223' IDENTIFIED BY 'SlavePass' ;
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'esclavo'@'192.168.122.223';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;

必要なユーザー名とパスワードを選択してください。esclavo スレーブを意味します スペイン語で。スレーブMariaDBのIPアドレスを設定します。次に、SHOWMASTERSTATUSでステータスを確認できます。

(ほとんど、後で戻ってきます)マスターの最後のステップは、マスターサーバー内のすべてのデータをスレーブにコピーすることです。次のコマンドでダンプを作成しましょう:

root@my1:~# mysqldump -u root --all-databases -p  --master-data > data.sql

スレーブ

スレーブサーバーで、最初に構成ファイル/etc/mysql/mariadb.conf.d/50-server.cnfを変更します マスターと同じ行に:

bind-address = <your.slave.host.ip> 
server-id=1

MariaDBを再起動し、マスターからダンプをロードします:

root@my2:/home/gonz# mysql -uroot < data.sql

次に、スレーブを停止し、マスターホストを設定して、次のコマンドでスレーブを開始します。

root@my2:/home/gonz# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 41
Server version: 10.5.12-MariaDB-1-log Debian 11

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> stop slave;
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.122.13', MASTER_USER='esclavo',MASTER_PASSWORD='SlavePass';
MariaDB [(none)]> START SLAVE;

これらのコマンドをコピーして貼り付けるだけの場合は、ホストのIP、ユーザー、パスワードを自分の値に変更することを忘れないでください;)

テストと修正

それはそれをする必要があります。すべてが期待どおりに機能する場合は、MariaDBを使用してマスタースレーブレプリケーションを実行する必要があります。

これで、マスター上にデータベースを作成でき、そのデータベースはスレーブに自動的に表示されます。しかし、私にはうまくいきませんでした。マスター上に次のデータベースを作成しました:

MariaDB [(none)]> CREATE DATABASE somedatabase;

そして、それはスレーブ上で複製されませんでした。理由を確認するために、私はスレーブサーバーで実行しました:

MariaDB [(none)]> show slave status\G ;

私がそのエラーをグーグルで検索したとき、彼らはユーザーをドロップすることを提案しました esclavo 特権をフラッシュします。これはスレーブサーバー上で、ユーザーを削除する前にスレーブを停止し、特権をフラッシュした後にスレーブを開始します:

MariaDB [(none)]> stop slave;
MariaDB [(none)]> drop user 'esclavo'@'192.168.122.223';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> start slave;

スクリーンショットでわかるように、これは私に修正されました。スレーブサーバーにデータベースデータベースがあります。そして、それは空です。次に、マスターに戻ってテーブルを作成し、データを入力しました。

最後のステップは、テーブルが作成され、内部にデータがあるかどうかをスレーブで確認することです。

念のため、スレーブのステータスをもう一度確認できます(または、何か問題があると思われる場合は、将来いつでも確認できます)。

そして最後に、MariaDBを使用してマスタースレーブレプリケーションをセットアップしました。


Linux
  1. Debian 8でMySQLを使用してマスターマスターレプリケーションを設定する(Jessie)

  2. CentOS6でMySQLをMariaDBに置き換える方法

  3. Ubuntu18.04でMariaDBマスタースレーブレプリケーションをセットアップする方法

  1. MySQLマスタースレーブレプリケーションを設定する方法

  2. Ubuntu18.04でMySQLマスタースレーブレプリケーションを構成する方法

  3. CentOS7でMySQLマスタースレーブレプリケーションを構成する方法

  1. Debian 10でMySQL(MariaDB)マスタースレーブレプリケーションを構成する方法

  2. CentOS7でPostgreSQL9.6を使用してマスタースレーブレプリケーションをインストールおよび構成する方法

  3. AlmaLinux8にNginxでWordPressをインストールする方法