Animation
目次:
MySQLレプリケーションは、1つのデータベースサーバー(マスター)から1つ以上のサーバー(スレーブ)にデータをコピーするプロセスです。
MySQLは複数のレプリケーショントポロジをサポートします。マスター/スレーブトポロジは、1つのデータベースサーバーがマスターとして機能し、1つ以上のサーバーがスレーブとして機能する最も有名なトポロジの1つです。 デフォルトでは、レプリケーションは非同期であり、マスターはデータベースの変更を記述するイベントをバイナリログに送信し、スレーブは準備ができたらイベントを要求します。
このガイドでは、Debian 10で1つのマスターサーバーと1つのスレーブサーバーを使用してMariaDBマスター/スレーブレプリケーションを設定する方法を示します。MariaDBはDebianでのMySQLのデフォルトの実装です。 Oracle MySQLにも同じ手順が適用されます。
このタイプのレプリケーショントポロジは、リードスケーリングのためのリードレプリカの展開、災害復旧のためのライブデータベースバックアップ、および分析ジョブに最適です。
前提条件
Debian 10を実行している2つのサーバーがプライベートネットワークを介して互いに通信していると想定しています。 ホスティングプロバイダーがプライベートIPアドレスをサポートしていない場合、パブリックIPアドレスを使用して、信頼できるソースからのポート3306でのみトラフィックを許可するようにファイアウォールを構成できます。
この例で使用されるサーバーには、次のIPアドレスがあります。
Master IP: 10.10.8.12 Slave IP: 10.10.8.164
MariaDBのインストール
デフォルトのDebian 10リポジトリには、MariaDBバージョン10.3が含まれています。 潜在的な問題を回避するために、両方のサーバーに同じMariaDBバージョンをインストールすることをお勧めします。
次のコマンドを発行して、マスターとスレーブの両方にMariaDBをインストールします。
sudo apt-get update
sudo apt-get install mariadb-server
マスターサーバーの構成
最初のステップは、マスターサーバーをセットアップすることです。 次の変更を行います。
- MariaDBサーバーをプライベートIPでリッスンするように設定します。一意のサーバーIDを設定します。バイナリログを有効にします。
MariaDB構成ファイルを開き、次の行のコメントを解除するか設定します。
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
master:/etc/mysql/mariadb.conf.d/50-server.cnf
bind-address = 10.10.8.12 server-id = 1 log_bin = /var/log/mysql/mysql-bin.log
完了したら、ファイルを保存し、MySQLサービスを再起動して変更を有効にします。
sudo systemctl restart mariadb
次の手順は、新しいレプリケーションユーザーを作成することです。 rootユーザーとしてMariaDBサーバーにログインします。
sudo mysql
次のSQLクエリを実行して、
replica
という名前のユーザーを作成し、
REPLICATION SLAVE
特権をユーザーに付与します。
CREATE USER 'replica'@'10.10.8.164' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'10.10.8.164';
必ずスレーブIPアドレスでIPを変更してください。 好きなようにユーザーに名前を付けることができます。
MySQLプロンプト内で、バイナリファイル名と位置を出力する次のコマンドを実行します。
SHOW MASTER STATUS\G
*************************** 1. row *************************** File: mysql-bin.000001 Position: 328 Binlog_Do_DB: Binlog_Ignore_DB: 1 row in set (0.001 sec)
ファイル名、 「mysql-bin.000001」および位置「328」に注意してください。 これらの値は、スレーブサーバーを構成するときに必要であり、サーバーによって異なる可能性があります。
スレーブサーバーの構成
スレーブサーバーでも、マスターと同じ変更を行います。
- MySQLサーバーをプライベートIPでリッスンするように設定します。一意のサーバーIDを設定します。バイナリロギングを有効にします。
MariaDB構成ファイルを開き、次の行を編集します。
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
slave:/etc/mysql/mariadb.conf.d/50-server.cnf
bind-address = 10.10.8.164 server-id = 2 log_bin = /var/log/mysql/mysql-bin.log
MariaDBサービスを再起動します。
sudo systemctl restart mariadb
次のステップは、スレーブサーバーがマスターサーバーへの接続に使用するパラメーターを構成することです。 MariaDBシェルにログインします。
sudo mysql
スレーブスレッドを停止することから始めます。
STOP SLAVE;
次のクエリを実行して、マスター/スレーブレプリケーションを構成します。
CHANGE MASTER TO
MASTER_HOST='10.10.8.12',
MASTER_USER='replica',
MASTER_PASSWORD='replica_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=328;
正しいIPアドレス、ユーザー名、およびパスワードを使用していることを確認してください。 ログファイルの名前と位置は、マスターサーバーから取得した値と同じである必要があります。
完了したら、スレーブスレッドを開始します。
構成をテストする
この時点で、有効なマスター/スレーブ複製セットアップが必要です。
すべてが正しくセットアップされていることを確認するには、マスターサーバーに新しいデータベースを作成します。
sudo mysql
CREATE DATABASE replicatest;
スレーブMySQLシェルにログインします。
sudo mysql
次のコマンドを実行して、すべてのデータベースをリストします。
SHOW DATABASES;
マスターサーバーで作成したデータベースがスレーブで複製されていることがわかります。
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | replicatest | | sys | +--------------------+ 5 rows in set (0.00 sec)
結論
このチュートリアルでは、Debian 10でMariaDBマスター/スレーブレプリケーションを作成することを示しました。
ご質問がある場合は、コメントをお気軽にお寄せください。
debian mysql mariadbMySQL CofounderはOracleがデータベースを売却すべきだと述べる
Oracleは、オープンソースデータベースMySQLを適切な第三者、その共同設立者で創造者のMichael "Monty" WideniusオープンソースのデータベースMySQLを適切な第三者に売却することにより、Sun Microsystemsの買収に対する独占禁止法の懸念を解決しなければならないと、同社の創設者であるMichael Monty氏は月曜日のブログ記事で述べている。
MySQL Creatorがデータベースを保存するキャンペーンを開始
MySQLの作成者であるMonty Wideniusは、 > MySQLの作成者は、現在の所有者であるSun Microsystemsを購入しようとしているOracleの "クラッチ"からオープンソースデータベースを "保存"するためのWebベースのキャンペーンを開始した。
Amazonのクラウド上で動作する3つのデータベース(MySQL、Oracle、およびSQL Server)を使用して通知を使用できます。 RDSはまだベータテスト中です。
電子メールはすべての地域でサポートされていますが、SMSの通知は現在、米国東部地域でのみ利用可能です。通知は、RDS API、CLI、またはAWS Management Consoleを使用して管理されます。後者のナビゲーションペインには、DBイベントサブスクリプションの新しい項目が含まれています。