これが、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を使用してマスタースレーブレプリケーションをセットアップしました。