Mysqlマスタースレーブレプリケーション(MySQLレプリケーション)は一目で実用的です!

序文

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でスレーブサーバーを表示します。対応する新しいテーブルとデータがスレーブサーバーに表示される場合、マスタースレーブレプリケーションは成功しています。

おすすめ

転載: blog.csdn.net/qq_36551991/article/details/111462625