MySQLマスター/スレーブレプリケーション(8)-準同期レプリケーション構成
MySQLの非同期レプリケーションは、最高のパフォーマンスを提供できます。マスターデータベースは、binlogログをスレーブデータベースに送信します。このアクションは終了し、スレーブデータベースが受信したかどうかは確認されません。また、メインサーバーまたはスレーブサーバーに障害が発生した場合、マスターサーバーから送信されたbinlogログをスレーブサーバーが受信しない可能性があり、マスターサーバーとスレーブサーバーのデータに不整合が生じ、リカバリ中にもデータが発生する可能性があります。損失。
準同期レプリケーションモードは、MySQL 5.5以降に導入されました。このモードでは、スレーブサーバーがマスターサーバーから送信されたbinlogログファイルを受信して独自のリレーログに書き込み、マスターサーバーにフィードバックを送信して、受信が完了したことをマスターサーバーに通知し、メインサービススレッドに通知します。現在のセッションに戻り、操作が完了したことを通知します。
準同期レプリケーションの構成プロセスは次のとおりです。
1.動作環境
オペレーティングシステム:CentOS Linuxリリース7.8.2003(コア)
MySQLバージョン:MySQL5.7
プライマリサーバーIP:192.168.1.11
スレーブサーバーIP:192.168.1.12
次に、メインサーバーの構成
1.準同期プラグインをインストールします
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
Query OK, 0 rows affected (0.04 sec)
2.構成ファイルを変更します
log-bin = mysql-master-binlog
log-slave-updates = 1
binlog_format = row
server-id = 1
server_id_bits = 33
rpl_semi_sync_master_enabled = 1 # 表示在master上开启半同步复制模式
rpl_semi_sync_master_timeout = 1000 # 表示主库在某次事务中的等待时间为10000毫秒
3.準同期構成情報を表示する
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';
+----------------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+----------------------+---------------+
| rpl_semi_sync_master | ACTIVE |
+----------------------+---------------+
1 row in set (0.00 sec)
4.コピーアカウントを作成する
mysql> grant replication slave on *.* to 'repl'@'192.168.1.%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
第三に、スレーブサーバーの構成
1.準同期プラグインをインストールします
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
Query OK, 0 rows affected (0.03 sec)
2.構成ファイルを変更します
log-bin = mysql-master-binlog
log-slave-updates = 1
binlog_format = row
server-id = 2
server_id_bits = 32
rpl_semi_sync_slave_enabled = 1
3.準同期構成情報を表示する
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%semi%';
+---------------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+---------------------+---------------+
| rpl_semi_sync_slave | ACTIVE |
+---------------------+---------------+
1 row in set (0.03 sec)
4.コピーオプションを設定する
change master to
master_host='192.168.1.11',
master_user='repl',
master_password='123456',
MASTER_PORT=3306,
MASTER_AUTO_POSITION = 1;
5.スレーブを起動し、スレーブライブラリのステータスを確認します
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.11
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-master-binlog.000002
Read_Master_Log_Pos: 154
Relay_Log_File: mysql-relay-log.000003
Relay_Log_Pos: 387
Relay_Master_Log_File: mysql-master-binlog.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes