MaridDBマスターコピー、デュアルマスターモデル、ハーフ同期の構成
一、主従複製
MariaDBは、クライアントからアップロードされたデータをプライマリノードからスレーブノードにコピーすることで、読み取り性能を向上させることができますが、この方法では書き込み性能を向上させることはできません.各データはノードから1部書きます.
欠点:読み書き性能を高めるために、データベースはすべてデータを先にメモリに保存して、それからデータファイルの中で同期して、つまりディスクの上で、両者の同期は非同期同期同期同期で、つまり、ノードの上のデータは主ノードの上で遅れています
コピープロセス:
クライアント書き込みデータ---->プライマリ・サーバのトランザクション・ログ・メモリ---->トランザクション・ログ・ファイル---->データ・ファイルへの同期------>バイナリ・ファイルによるサーバのIOスレッドから---->中継ログ--->SQLスレッドによる中継ログの再生
実装:
プライマリ・データベース・サーバ
サーバから
プライマリノードでデータベースを作成するか、データを挿入して同期するかをテストします.
二、ダブルマスターモデル
デュアルプライマリモデルは、データの不一致を引き起こしやすく、一般的には推奨されません.
ホストA
ホストB
三、半同期レプリケーション
半同期レプリケーションは、ホストがディスクを同期して書き込み、クライアントがデータを書き込むと、プライマリ・データベース・サーバはすぐに指定したサーバからデータを書き込み、すぐに同期し、対応するクライアントで、プライマリ・サービスの障害を防ぐために完全なデータがあることを証明します.
半同期レプリケーションを実現するには、データベースにプライマリ・サーバを追加してsemisync_を追加する必要があります.master.so,サーバからsemisync_を追加するslave.so
プライマリサーバ
サーバから
MariaDBは、クライアントからアップロードされたデータをプライマリノードからスレーブノードにコピーすることで、読み取り性能を向上させることができますが、この方法では書き込み性能を向上させることはできません.各データはノードから1部書きます.
欠点:読み書き性能を高めるために、データベースはすべてデータを先にメモリに保存して、それからデータファイルの中で同期して、つまりディスクの上で、両者の同期は非同期同期同期同期で、つまり、ノードの上のデータは主ノードの上で遅れています
コピープロセス:
クライアント書き込みデータ---->プライマリ・サーバのトランザクション・ログ・メモリ---->トランザクション・ログ・ファイル---->データ・ファイルへの同期------>バイナリ・ファイルによるサーバのIOスレッドから---->中継ログ--->SQLスレッドによる中継ログの再生
実装:
プライマリ・データベース・サーバ
[root@centos7 ~]# vim /etc/my.cnf
[mysqld]
server_id=1
log_bin=log-bin
MariaDB [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO test@"192.168.1.%" IDENTIFIED BY 'centos'; #
MariaDB [(none)]> FLUSH PRIVILEGES; #
MariaDB [(none)]> SHOW MASTER STATUS; # , POS ,
+----------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------+----------+--------------+------------------+
| log-bin.000001 | 489 | | |
+----------------+----------+--------------+------------------+
サーバから
[root@centos7 ~]# vim /etc/my.cnf
server_id=2
relay_log=relay-log
read_only=ON
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.1.151',MASTER_USER='test',MASTER_PASSWORD='centos',MASTER_LOG_FILE='log-bin.000001',MASTER_LOG_POS=489;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G;
Slave_IO_Running: Yes # yes, IO SQL
Slave_SQL_Running: Yes
プライマリノードでデータベースを作成するか、データを挿入して同期するかをテストします.
二、ダブルマスターモデル
デュアルプライマリモデルは、データの不一致を引き起こしやすく、一般的には推奨されません.
ホストA
[root@centos7 ~]# vim /etc/my.cnf
[mysqld]
server_id=1
log_bin=log-bin
relay_log=relay-log
MariaDB [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO test@"192.168.1.%" IDENTIFIED BY 'centos';
CHANGE MASTER TO MASTER_HOST='192.168.1.152',MASTER_USER='test',MASTER_PASSWORD='centos',MASTER_LOG_FILE='log-bin.000001',MASTER_LOG_POS=489;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G;
ホストB
[root@centos7 ~]# vim /etc/my.cnf
[mysqld]
server_id=2
log_bin=log-bin
relay_log=relay-log
MariaDB [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO test@"192.168.1.%" IDENTIFIED BY 'centos';
CHANGE MASTER TO MASTER_HOST='192.168.1.151',MASTER_USER='test',MASTER_PASSWORD='centos',MASTER_LOG_FILE='log-bin.000001',MASTER_LOG_POS=489;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G;
三、半同期レプリケーション
半同期レプリケーションは、ホストがディスクを同期して書き込み、クライアントがデータを書き込むと、プライマリ・データベース・サーバはすぐに指定したサーバからデータを書き込み、すぐに同期し、対応するクライアントで、プライマリ・サービスの障害を防ぐために完全なデータがあることを証明します.
半同期レプリケーションを実現するには、データベースにプライマリ・サーバを追加してsemisync_を追加する必要があります.master.so,サーバからsemisync_を追加するslave.so
プライマリサーバ
MariaDB [none]> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
MariaDB [none]> SHOW GLOBAL VARIABLES LIKE 'rpl_semi%';
MariaDB [none]> SET GLOBAL rpl_semi_sync_master_enabled=ON; #
MariaDB [none]> SHOW GLOBAL VARIABLES LIKE 'rpl_semi%';
+------------------------------------+-------+
| Variable_name | Value |
+------------------------------------+-------+
| rpl_semi_sync_master_enabled | ON |
| rpl_semi_sync_master_timeout | 10000 |
| rpl_semi_sync_master_trace_level | 32 |
| rpl_semi_sync_master_wait_no_slave | ON |
+------------------------------------+-------+
サーバから
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
MariaDB [none]> SHOW GLOBAL VARIABLES LIKE 'rpl_semi%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled | OFF |
| rpl_semi_sync_slave_trace_level | 32 |
+---------------------------------+-------+
MariaDB [none]> STOP SLAVE IO_THREAD;
MariaDB [none]> SHOW GLOBAL VARIABLES LIKE 'rpl_semi%';
MariaDB [none]> START SLAVE IO_THREAD;
MariaDB [none]> SHOW GLOBAL VARIABLES LIKE 'rpl_semi%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| rpl_semi_sync_slave_enabled | OFF |
| rpl_semi_sync_slave_trace_level | 32 |
+---------------------------------+-------+