データベースについて
84 views
はい、MySQLではレプリケーション機能を使って、データベースの内容を他のサーバーに複製することが可能です。レプリケーションにより、データのバックアップや負荷分散、障害対策として活用できます。MySQLのレプリケーションには、主に以下のような種類と設定方法があります。
マスタースレーブレプリケーション
1つのマスターサーバーから、1つまたは複数のスレーブサーバーにデータを複製します。スレーブサーバーはマスターのデータのコピーを保持し、読み取り専用で使用するケースが一般的です。
マスターマスターレプリケーション
複数のサーバーが相互にデータを複製し合う方法です。データの書き込みが複数のサーバーで行われるため、複雑なコンフリクト管理が必要ですが、可用性や拡張性の向上に役立ちます。
多元レプリケーション(Group Replication)
MySQLのバージョン5.7以降でサポートされたもので、複数のノードが1つのグループを構成し、全てのノードが同じデータを保持します。高可用性と自動フェイルオーバー機能が特徴です。
以下では、マスタースレーブレプリケーションの基本的な手順を説明します。
/etc/my.cnf
または/etc/mysql/my.cnf
)でバイナリログを有効化し、サーバーIDを設定します。[mysqld]
log-bin=mysql-bin
server-id=1
CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';
FLUSH PRIVILEGES;
mysqldump -u username -p --all-databases --master-data > master_dump.sql
[mysqld]
server-id=2
mysql -u username -p < master_dump.sql
CHANGE MASTER TO
MASTER_HOST='マスターのIPアドレス',
MASTER_USER='replication_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001', -- マスターのバイナリログファイル名
MASTER_LOG_POS=4; -- バイナリログのポジション
START SLAVE;
SHOW SLAVE STATUS\G;
Slave_IO_Running
と Slave_SQL_Running
がYes
となっていれば正常に動作しています。MySQLのレプリケーションは、特にマスタースレーブ方式が一般的で、設定手順を踏むことで比較的簡単に導入できます。
Page 1 of 3.
すぺぺぺ
本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。
https://www.osumoi-stdio.com/novel/