ホームページ  >  記事  >  データベース  >  MySQL でマスター/スレーブ レプリケーションを構成する方法

MySQL でマスター/スレーブ レプリケーションを構成する方法

WBOY
WBOY転載
2023-06-03 10:47:101504ブラウズ

1. 通信の検出

マスターとスレーブのIPアドレスを確認し、通信が可能かどうかを確認します

MySQL でマスター/スレーブ レプリケーションを構成する方法

マスターとスレーブ間のネットワークを保証しますスレーブは相互接続されています。ping コマンドを使用して

MySQL でマスター/スレーブ レプリケーションを構成する方法

を検出します。この時点で、マスターの IP は 192.168.131.129 で、スレーブの IP は 192.168.0.6 であることがわかります。お互いに通信します。ポート 3306 が開いていることを確認します

MySQL でマスター/スレーブ レプリケーションを構成する方法

MySQL でマスター/スレーブ レプリケーションを構成する方法

#ファイアウォールのステータスを確認します

systemctl status firewalld.service

一時的に手動でファイアウォールを開始します

systemctl start firewalld.serviceファイアウォールを一時的に手動で停止します
systemctl stop firewalld.service

ファイアウォールを永続的にオンにします (ファイアウォールを再起動します)サービスを有効にする)

systemctl enable firewalld.serviceファイアウォールを完全に閉じる (サービスを再起動して有効にする)
systemctl disable firewalld.service

現在開いているポート リスト

firewall-cmd --list-ports

2. マスター構成

1. バイナリ ログを有効にする

log_bin とグローバルに一意の構成を設定します。サーバー ID。スレーブとは異なるため、同じに設定することはできません (設定を my.cnf に新しく追加した場合は、MySQL サービスを再起動する必要があります)

vim /etc/my.cnf my.cnf ファイルを開きます

MySQL でマスター/スレーブ レプリケーションを構成する方法

2. マスター/スレーブ ライブラリ通信用のアカウントを作成します

つまり、マスターでアカウントを作成します。スレーブがマスターにログインして binlog を読み取るための

#Linux 上で表示される IP アドレスは 192.168.131.129 ですが、アカウントを作成してログインするときは、この IP アドレスを書き込みません。ただし、192.168.131.1 と書きます。ここでの仮想マシンは NAT モードを使用しているため (ブリッジ モードであれば直接使用できます)、仮想マシン (マスター) が物理マシン (スレーブ) と通信するとき、仮想マシンはまずゲートウェイ 192.168 にデータを送信します。 131.1 (デフォルトは VMnet8 と通信)、192.168.131.1 が物理マシンに転送されるため、物理マシンは 192.168.131.1 のデータを受信するため、マスター上でスレーブのアカウントを作成するときは、192.168.131.1 と書き込む必要があります。

MySQL でマスター/スレーブ レプリケーションを構成する方法スレーブがゲートウェイ 192.168.131.1 アドレスで構成されていない場合、

vim /var/log/mysqld.log

エラー ログを開くと

MySQL でマスター/スレーブ レプリケーションを構成する方法これは、192.168.131.1 からの mslave 権限が十分ではないことを意味します。これは、他の場所からのログインを許可するようにマスターを設定したためです。 192.168.131.1 アドレスからのログインが許可されなかったため、権限が不十分になりました。

マスターが 192.168.131.1 からリクエストを受信したため、エラー ログには 192.168.131.1

ユーザーを作成するコマンド:

//如果嫌麻烦可以用%代替192.168.131.1,,它就可以匹配任何ip
mysql> CREATE USER 'mslave'@'192.168.131.1' IDENTIFIED BY '1qaz@WSX';
//启动主从,在主库上给当前的mslave用户开启REPLICATION SLAVE主从复制的权限,从库就可以通过1qaz@WSX账户密码
//从192.168.131.1 IP地址来请求访问这台主库上的任意库里面的任意表*.*,同步这个主库的任意库里的任意表
mysql> GRANT REPLICATION SLAVE ON *.* to 'mslave'@'192.168.131.1' IDENTIFIED BY '1qaz@WSX';
mysql> FLUSH PRIVILEGES;
3 が表示されます。 . binlog のログ ファイル名と位置を取得します。

show master status

MySQL でマスター/スレーブ レプリケーションを構成する方法#3. スレーブ構成

1 . グローバルに一意のサーバー ID を構成する

MySQL でマスター/スレーブ レプリケーションを構成する方法#グローバルに一意のサーバー ID を構成する

MySQL でマスター/スレーブ レプリケーションを構成する方法#構成ファイルの変更を伴う場合は、MySQL サービスを再起動する必要があります

2. マスターによって作成されたアカウントを使用して、バイナリログ同期データを読み取りますMySQL でマスター/スレーブ レプリケーションを構成する方法

この設定手順は、主に IO スレッドがバイナリログを読み取るために使用されます:

mysql> CHANGE MASTER TO MASTER_HOST='192.168.131.129',
MASTER_PORT=3306,
MASTER_USER='mslave',
MASTER_PASSWORD='1qaz@WSX',
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=1262;

##MASTER_HOST:
    マスターの IP
  • を指定します。

    MASTER_LOG_FILE:
  • binlog ファイル名
  • MASTER_LOG_POS:
  • binlog の位置
  • 3. スレーブ サービスを開始します。

  • show smile status
コマンドを使用してマスターとスレーブのレプリケーション ステータスを表示し、

show processlist

実行ステータスを表示します。マスターとスレーブ関連のスレッドの

4. 設定で考えられる問題

1. ネットワーク接続の問題MySQL でマスター/スレーブ レプリケーションを構成する方法

マスターとスレーブを確認してくださいshow smile status コマンドを使用したレプリケーション ステータス

接続エラーが正しくありません。まず、ネットワークが相互接続されているかどうかを検討し、ping を実行します:

MySQL でマスター/スレーブ レプリケーションを構成する方法

然后再检查从库里面的配置信息是否正确

MySQL でマスター/スレーブ レプリケーションを構成する方法

如果都正确,检查主库所在机器的3306端口是否正常

telnet xxx.xxx.xxx.xxx 3306

如果发现3306端口不能连通,就需要怀疑主库对端口有限制吗,也就是防火墙限制,就需要在防火墙把3306端口开放出来。

如果这个错误还没解决,就查看一个主库的错误日志/var/log/mysql/mysqld.log,查看错误日志中提示的ip是否和自己允许slave登录的ip一致

MySQL でマスター/スレーブ レプリケーションを構成する方法

这说的就是从192.168.131.1的mslave权限不够,自己玩的时候,如果虚拟机是NAT模式,则需要写成VMnet8网关ip。如果都是物理机通信,那直接写正确的ip即可

可以在MySQL数据库下的mysql库的user表中更改允许登录的ip

MySQL でマスター/スレーブ レプリケーションを構成する方法

然后重新赋予权限:

mysql> GRANT REPLICATION SLAVE ON *.* to 'mslave'@'xxx.xxx.xxx.xxx' IDENTIFIED BY '1qaz@WSX';

2. binlog的position问题

MySQL でマスター/スレーブ レプリケーションを構成する方法

在master中查看show master status一下binlog日志文件名以及position,然后用命令重新配置slave,比如:

mysql> CHANGE MASTER TO MASTER_HOST='192.168.131.129',MASTER_PORT=3306,MASTER_USER='mslave',MASTER_PASSWORD='1qaz@WSX',
MASTER_LOG_FILE='mysql-bin.000006',MASTER_LOG_POS=1262;

配置slave前需要stop slave,配置完成再start slave

3. SQL线程出错

MySQL でマスター/スレーブ レプリケーションを構成する方法

错误原因:首先配置主从复制的时候,slave的mytest库中没有user表,而master的mytest库已经有user表了配置好主从复制后直接drop table mytest.user,这就会写到binlog里面,然后在通过dump线程和IO线程将这个操作发送到从库的relay log,然后从库的SQL线程从relay log里把drop table mytest.user捞出来在从库执行这个SQL,可从库的mytest根本就没有user表,这就是删除一个不存在的表,于是出现错误了。

一般我们是不会做这样的操作的,我们一般都是主库配置以后,slave从数据开始增量进行同步,不会同步以后一开始就删主库里的东西,如果真的出现这样的问题了,随时可以通过show slave status来查看主从库的状态来解决错误,如果是上图这个错误,
(1)可以在从库stop slave,然后把位置重新设置一下,然后再start slave,相当于重新开始主从同步的位置。
(2)可以在从库stop slave,然后set global sql_slave_skip_counter=1;(跳过一个错误),然后再start slave重启从库的线程,相当于把错误跳过了,异常操作。

可以通过show slave status查看以下标识,IO线程出错一般是网络问题,SQL线程出错一般是SQL在slave库执行出现了问题

MySQL でマスター/スレーブ レプリケーションを構成する方法

以上がMySQL でマスター/スレーブ レプリケーションを構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。