序文
MySQLマスタースレーブレプリケーションは、1つのMySQLデータベースサーバー(マスターサーバー)から1つ以上のMySQLデータベースサーバー(スレーブサーバー)にデータをレプリケートできます。
MySQLレプリケーションの利点は次のとおりです。
- スケールアウトソリューション-パフォーマンスを向上させるために、負荷を複数のコピーに分散します。この環境では、すべての書き込みと更新はレプリケーションソースサーバー(プライマリサーバー)で実行する必要があります。ただし、読み取りは1つ以上のレプリカ(スレーブサーバー)で発生する場合があります。このモデルは、書き込みパフォーマンスを向上させることができますが(ソースは更新専用であるため)、レプリカの読み取り速度を大幅に向上させることができます。
- データセキュリティ-データがコピーにコピーされており、コピーによってコピープロセスが一時停止される可能性があるため、対応するソースデータを破棄することなく、コピーに対してバックアップサービスを実行できます。
- 分析-リアルタイムデータをソース上で作成でき、情報分析はソースのパフォーマンスに影響を与えることなくコピーに対して実行できます。
- リモートデータ配布-レプリケーションを使用して、ソースに永続的にアクセスしなくても、リモートサイトで使用するデータのローカルコピーを作成できます。
実際の戦闘
以下では、2つの仮想マシンを使用してMySQLマスタースレーブレプリケーションを実装します
主虚拟机:192.168.91.128
从虚拟机:192.168.91.130
前提条件:両方の仮想マシンにMySQLがインストールされており、MySQLのバージョンが5.7.24であり、2つの仮想マシンのネットワークにpingを実行できる
メインサーバーの構成
1.プライマリサーバー上のMySQL構成ファイルを変更し、バイナリログファイルを開いて、server-idを構成します
MySQL構成ファイルを編集します。LinuxのMySQLデフォルト構成ファイルのデフォルトはmy.cnfで、通常は/ etc /の下にあります。
vi /etc/my.cnf
次のようにコンテンツを追加します。
#在配置文件的[mysqld]部分添加以下两个配置
[mysqld]
#设置server-id,这个server-id主从服务器必须不一样
server-id=1
#开启二进制日志,mysql-bin为日志名称,你可以自定义名称
log-bin=mysql-bin
注:my.cnfファイルがどこにあるかわからない場合は、find / -namemy.cnfコマンドを使用して検索できます。
上記の2つの必要な構成に加えて、実際の状況に応じて、sync_binlog、innodb_flush_log_trx_commit、およびその他の構成を設定することもできます。
構成を変更した後、サーバーを再起動する必要があります
2.メインサーバーで同期用のアカウントを追加します
コマンドは次のとおりです。
mysql> grant replication slave on *.* to 'slave'@'%' identified by 'slave';
コマンドの説明
replication slave:表示分配的权限,replication slave为复制的权限
*.*:表示可以操作哪些数据库,*.*表示所有数据库的所有表
slave@'%':slave表示这个账号的名称,'%'为在哪些网络可以使用,'%'为可以在所有网络上使用,除了使用'%',我们还可以指定某个ip,比如192.168.91.128
identified by后填的是密码
3.マスターサーバーの最新のバイナリログファイルと位置ポイントを確認して記録し、スレーブサーバーで使用します。
コマンド
mysql> show master status;
例:
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000008 | 438 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.03 sec)
マスタースレーブレプリケーションは、マスタースレーブ構成後にのみ変更をレプリケートするため、以前にマスターデータベースにデータがある場合は、そのデータをスレーブデータベースにコピーする必要もあります。最も簡単な方法は、mysqldumpを使用してダンプを作成することです。複製されるすべてのデータベースの。
mysqldumpの使用については、
https://blog.csdn.net/qq_36551991/article/details/111409411を参照してください。
サーバーから構成する
1.スレーブサーバーでMySQL構成ファイルを変更し、server-idを構成します。バイナリログは、スレーブサーバーで開くことも開かないこともできます。
コマンド:
vi /etc/my.cnf
コンテンツ:
[mysqld]
#配置server-id,server-id必须与主服务器和其他从服务器的不一样,即需要唯一
server-id=2
構成する必要のあるserver-idに加えて、他の構成は実際の状況によって異なります
2.マスター/スレーブレプリケーションを構成します
コマンドは次のとおりです
mysql> CHANGE MASTER TO
-> MASTER_HOST='192.168.91.128',
-> MASTER_USER='slave',
-> MASTER_PASSWORD='slave',
-> MASTER_LOG_FILE='mysql-bin.000008',
-> MASTER_LOG_POS=438;
コマンドの説明:
MASTER_HOST : 设置要连接的主服务器的ip地址
MASTER_USER : 设置要连接的主服务器的用户名
MASTER_PASSWORD : 设置要连接的主服务器的密码
MASTER_LOG_FILE : 设置要连接的主服务器的bin日志的日志名称,即我们在主服务器show master status命令得到的file参数
MASTER_LOG_POS : 设置要连接的主服务器的bin日志的记录位置,即我们在主服务器show master status命令得到的Position 参数
3.構成が完了したら、マスター/スレーブレプリケーションを開始します。
コマンド:
start slave;
例:
mysql> start slave;
4.構成が成功したかどうかを確認します
命令:show slave status\G
例:
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.91.128
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000008
Read_Master_Log_Pos: 438
Relay_Log_File: local-relay-bin.000002
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000008
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
これは主に、返された情報のSlave_IO_RunningステータスとSlave_SQL_Runningステータスが両方ともYesであるかどうかに依存し、両方がYesの場合は正常です(Slave_IO_RunningとSlave_SQL_RunningはMySQLの2つのレプリケーションスレッドを表します)
マスタースレーブレプリケーションをテストします
マスターサーバーのMySQLに新しいテーブルを作成し、データを挿入してスレーブサーバーが複製されるかどうかを確認します
#在主数据库创建个新表,并插入一条数据
mysql> CREATE TABLE test_table( id INT NOT NULL AUTO_INCREMENT, name varchar(50), PRIMARY KEY(id));
Query OK, 0 rows affected (0.23 sec)
mysql> insert into test_table(name) values('h');
Query OK, 1 row affected (0.15 sec)
Navicatでスレーブサーバーを表示します。対応する新しいテーブルとデータがスレーブサーバーに表示される場合、マスタースレーブレプリケーションは成功しています。