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

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

数日前、MariaDB(またはMySQL)でレプリケーションを行う方法についてのチュートリアルを書きました。これは一方向のレプリケーションです。マスターからスレーブへ。これは、スレーブサーバーがマスターからトランザクションを受信することを意味します。ただし、どちらのサーバーがトランザクションを受信するかわからず、両方に同じデータが存在する必要があるため、クライアントには双方向レプリケーションが必要です。ここでは、これを実現するためにMariaDBを使用してマスターマスターレプリケーションを構成する方法を示します。

マイセットアップ

前の記事を見逃した場合に備えて、これらは私がこのレプリケーションを実行している仮想マシンの機能です。

  • OS:Debianテスト「Bookworm」
  • MariaDBバージョン:10.5.12
  • マスター1:192.168.122.13
  • マスター2:192.168.122.223

マスター構成

両方のマスターが同じ構成を取得します。edit /etc/mysql/mariadb.conf.d/50-server.cnf 次の値を置き換えます:

bind-address  = <master.X.ip.address>
server-id        = <X>
report_host    = masterX
log_bin          = /var/log/mysql/mysql-bin.log
relay_log       = /var/lib/mysql/relay-bin
relay_log_index = /var/lib/mysql/relay-bin.index

log-slave-updates
auto_increment_increment=2
auto_increment_offset=X

ここで、Xは最初のマスターの場合は1、2番目のマスターの場合は2です。
自動インクリメント値は、id-kindフィールドで、マスターの1つが常に偶数を取得し、もう1つが常に奇数を取得することを意味します。これは、まったく同じID番号が両方のマスターに同時に割り当てられるのを防ぐためです。

次に、mariadbサービスを再起動し、mysqlにログインして、レプリケーション権限を持つユーザー(esclavoはスペイン語でスレーブを意味します)を作成します。

CREATE USER 'esclavo1'@'ip.mysql.master.2' IDENTIFIED BY 'SlavePass' ;
GRANT REPLICATION SLAVE ON *.* TO 'esclavo1'@'ip.mysql.master.2';
FLUSH PRIVILEGES;

それに応じて情報を変更する両方のマスターで繰り返します(つまり、master2でユーザー [email protected]を作成します )。ただし、最初に、最初のマスターのSQLダンプを取得し、2番目のマスターにロードします。

master1: mysqldump -u root --all-databases -p --master-data > data.sql
master2: mysql -uroot < data.sql

次に、他のホストでスレーブモードを有効にするために必要なこのマスターに関する情報を取得します。

MariaDB [(none)]> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003|      358 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.000 sec)
STOP SLAVE;

スレーブ構成

次に、両方のmariadb/mysqlホストでスレーブモードを構成します。

CHANGE MASTER TO MASTER_HOST='ip.mysql.master.X', MASTER_USER='esclavoX',MASTER_PASSWORD='SlavePass MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS = 358';
START SLAVE;

master_host vauleは他のマスターのIPであり、master_user値は他のマスターで作成したユーザーであり、最後にshow master staからmaster_log_fileとmaster_log_postの値を取得します。 tusコマンド。

すべてをチェックする

MariaDBでマスターマスターレプリケーションを有効にできるかどうかを確認するために、いくつかの非常に簡単なテストを実行しました。

1つのマスターでデータベースを作成し、次に単純なテーブル(1つのフィールドのみ)を作成して、いくつかのレコードを挿入しました。次に、データが両方のホストに表示されることを選択して確認しました。最後に、1つのホストにid自動増分列を追加し、それがどのように表示されるかを確認するためにさらにデータを挿入しました。

これらのスクリーンショットにさらに混乱を加えるために、このテスト中にauto_increment構成(インクリメントとオフセット)をmy.cnfに追加しました。これは、テストを開始するまで知らなかったためです。

とにかく、これは私がMariaDBでマスターマスターレプリケーションを有効にした方法です。これはスレーブスレーブレプリケーションでもあります。またはマスタースレーブおよび スレーブマスターレプリケーション、あなたはそれに名前を付けます。

次の論理的なステップは、GaleraClusterを調査して使用することだと思います。


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

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

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

  1. Debian8でMariaDB10を使用してマスターデータベースを複製する

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

  3. hdparm で SSD ディスクのロックを解除するには?

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

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

  3. Ubuntu20.04にLEMPを使用してWordPressをインストールする方法