MySQLレプリケーションを使用すると、あるサーバーから別のサーバーにデータベースを簡単にコピーできます。 MySQLは、マスタースレーブ、マスターマスター、グループレプリケーションなどのさまざまな種類のレプリケーションをサポートしています。 MariaDBは、マルチマスターレプリケーションもサポートしています。この記事では、MySQLでのマスタースレーブレプリケーションを確認し、LinuxでMySQLデータベースをレプリケートする方法を学習します。これらの手順を使用して、Ubuntu、Debian、CentOS、Fedora、Red Hat、およびその他のタイプのLinuxでMySQLデータベースを複製できます。
MySQLデータベースを複製する方法
MySQLデータベースを複製する手順は次のとおりです。セットアップには、マスターデータベース(IP – 54.24.32.12)とスレーブデータベース(IP – 45.12.21.23)が必要です。 exampledbという名前のデータベースを複製します マスターからスレーブへ。これらのサーバーの両方にMySQLがインストールされており、両方のサーバーに対するroot権限があることを前提としています。それ以外の場合は、次のコマンドでMySQLをインストールできます
$ sudo apt-get install mysql-server mysql-client
ボーナスリード:MySQLWorkbenchの上位の代替案
1。マスター構成ファイルの編集
マスターデータベースのサーバーでターミナルを開き、次のコマンドを実行します
$ sudo vi /etc/mysql/my.cnf
デフォルトでは、MySQLではリモート接続が無効になっています。レプリケーションのためにスレーブからマスターへのリモート接続を許可する必要があります。したがって、以下に示すように、最初に#を追加して、リモート接続を許可するために次の2行のコメントを解除します
#skip-networking #bind-address=127.0.0.1
[mysqld]ブロックの次の行を追加またはコメント解除して、次のようにします。
[mysqld]
server-id=1
log-bin = /var/log/mysql/mysql-bin.log binlog-do-db=exampledb
上記の各行を見てみましょう。最初の行のserver-idは、マスターの一意のID番号を指定します。 1から2^32までの正の数である必要があります。
log-bin MySQLがレプリケーションの詳細を入力するログファイルの場所を指定します。
binlog-do-db 複製する必要のあるデータベースの名前を示します。
MySQLサーバーを再起動して変更を適用します
$ sudo service mysql restart
rootユーザーとしてMySQLにログインします
$ sudo mysql -u root -p
次のコマンドを実行します
mysql> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 107 | exampledb | | +------------------+----------+--------------+------------------+
上記の詳細に注意してください。ステップ#3の後半で必要になります。
ボーナスリード:MySQLでSSL/TLSを有効にする方法
2。レプリケーションユーザーの作成
マスターでMySQLサーバーにログインします。
$ sudo mysql -u root -p
ルートパスワードの入力を求められます。
MySQLにログインした後、次のコマンドを実行してリモートユーザーを作成します slave_user 、およびすべてのデータベースのレプリケーション権限を付与します。以下の45.12.21.23をスレーブサーバーのIPに置き換え、$passwordを要件に応じた適切なパスワードに置き換えてください。
mysql> CREATE USER slave_user@45.12.21.23; mysql> GRANT REPLICATION SLAVE ON *.* TO slave_user@45.12.21.23 IDENTIFIED BY '$password'; mysql> FLUSH PRIVILEGES;
ポート3306のインバウンドファイアウォールルールを追加し、45.12.21.23を許可してください。このリモートユーザーは、レプリケーションを実行するためにマスターデータベースに接続する必要があります。
ボーナスリード:MySQLのすべてのテーブルの照合を変更する方法
3。スレーブ構成ファイルの編集
スレーブデータベースのサーバーでターミナルを開き、次のコマンドを実行します
$ sudo vi /etc/mysql/my.cnf
[mysqld]の下に次の行を追加して次のようにします
[mysqld] server-id = 2 relay-log = /var/log/mysql/mysql-relay-bin.log log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = exampledb
最初の行では、サーバーID2をスレーブサーバーに割り当てます。次の数行は、リレーログファイルとレプリケーションログファイルの場所を指定します。最後の行は、複製するデータベースを指定します。
MySQLサーバーを再起動し、MySQLにログインします
$ sudo service mysql restart $ sudo mysql -u root -p
次のコマンドを実行して、スレーブに空のデータベースを作成します。
mysql> CREATE DATABASE exampledb; mysql> USE exampledb;
マスターデータベースからデータをロードして、スレーブデータベースにデータを入力します
mysql> LOAD DATA FROM MASTER;
MySQLを終了します。
ボーナスリード:フォローするトップデータベースブログ
4。レプリケーションの初期化
MySQLにログインしているときに、次のコマンドを実行してレプリケーションプロセスを開始します。 太字の部品を交換してください あなたの価値観で。
mysql> SLAVE STOP; mysql> CHANGE MASTER TO MASTER_HOST='54.24.32.12', MASTER_USER='slave_user', MASTER_PASSWORD='<password>', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
MASTER_HOST –マスターのIPアドレスまたはホスト名(54.24.32.12)。
MASTER_USER –ステップ2で作成したスレーブユーザー。
MASTER_PASSWORD –ステップ2で作成したスレーブユーザーのパスワード。
MASTER_LOG_FILE –実行時にステップ1でMySQLから返されたファイル
マスターステータスを表示
MASTER_LOG_POS –ステップ#1でSHOWMASTERSTATUSを実行したときにMySQLが返した位置
最後に、スレーブを起動してMySQLデータベースのレプリケーションを開始します。
mysql> START SLAVE;
この記事がMySQLデータベースの複製に役立つことを願っています。