ホームページ  >  記事  >  データベース  >  Mysql5.7 でマスター/スレーブ レプリケーションを設定する方法を段階的に説明します。

Mysql5.7 でマスター/スレーブ レプリケーションを設定する方法を段階的に説明します。

青灯夜游
青灯夜游転載
2021-08-25 19:28:052751ブラウズ

Mysql5.7 でマスター/スレーブ レプリケーションを設定するにはどうすればよいですか?次の記事では、Mysql5.7 マスター/スレーブ レプリケーションを構築する手順を紹介しています。必要な友人はそれについて学ぶことができます~

Mysql5.7 でマスター/スレーブ レプリケーションを設定する方法を段階的に説明します。

1. 概要

マスター/スレーブ レプリケーションにより、データベースのバックアップと読み取り/書き込みの分離を実現できます。

サービスの利用不能を回避し、データのセキュリティと信頼性を確保するには、少なくとも 2 つのレプリケーションを導入する必要があります。または複数 データベース データを保存するために複数のサーバーが使用されます。つまり、データをコピーして複数の異なるサーバーにデプロイする必要があります。1 つのサーバーに障害が発生した場合でも、他のサーバーは引き続きサービスを提供できます。
MySQL が提供するサービスサービスの可用性とデータのセキュリティと信頼性を向上させるマスター/スレーブ レプリケーション機能。
マスター/スレーブ レプリケーションとは、サーバーをマスター サーバーとスレーブ サーバーに分割することを意味します。マスター サーバーは読み取りと書き込みを担当し、スレーブ サーバーは読み取りと書き込みを担当します。サーバーは読み取りのみを担当します。マスターとスレーブのレプリケーションはマスターとも呼ばれます。/slave、マスターはマスター、スレーブはスレーブですが、強制はありません。つまり、スレーブは書き込みもでき、マスターは読み取りもできます。 , しかし、一般的にはこのようなことはしません。

2. マスター/スレーブ レプリケーション アーキテクチャ

1 つのマスターと複数のスレーブのアーキテクチャ:
Mysql5.7 でマスター/スレーブ レプリケーションを設定する方法を段階的に説明します。
複数のマスターと複数のスレーブ複数のスレーブ アーキテクチャ :
Mysql5.7 でマスター/スレーブ レプリケーションを設定する方法を段階的に説明します。
マスター/スレーブ レプリケーションの原則 :

  1. マスター サーバー上のデータが変更されると、その変更が書き込まれますバイナリ イベント ログ ファイルでは、
  2. salve スレーブ サーバーは、一定の時間間隔内でマスター サーバー上のバイナリ ログを検出し、変更されたかどうかを検出します。変更されました 変更された場合、I/O スレッドが開始され、マスター バイナリ イベント ログを要求します。
  3. 同時に、マスター サーバーは、バイナリ イベント ログを送信するために、各 I/O スレッドのダンプ スレッドを開始します。 it
  4. スレーブ スレーブ サーバーは、受信したバイナリ イベント ログを独自のローカル リレー ログ ファイルに保存します。
  5. salve スレーブ サーバーは SQL スレッドを開始して、リレー ログからバイナリ ログを読み取り、再生します。ローカルでデータをメイン サーバーと整合性のあるものにします。
  6. 最後に、I/O スレッドと SQL スレッドはスリープ状態に入り、次回起動されるまで待機します

3 1 つのマスターと複数のスレーブのセットアップ

ビルド環境:
1. Linux バージョン CentOS リリース 6.9 (最終版)
2. mysql -5.7.26-linux-glibc2.12- x86_64.tar.gzダウンロード アドレス

1. mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz を解凍します。 #

#/usr/local下解压
tar xzvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
#重命名文件
mv mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz mysql

2. マルチインスタンス データ ディレクトリの作成##

cd /usr/local/mysql
mkdir data
cd data
#主
mkdir 3306
#从
mkdir 3307

#3. データベースの初期化Mysql5.7 でマスター/スレーブ レプリケーションを設定する方法を段階的に説明します。

#mysql 安装bin目录下执行
#initialize-insecure 表示不生成MySQL数据库root用户的随机密码,即root密码为空

#初始化3306
./mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/3306 --user=mysql
#初始化3307
./mysqld --initialize-insecure --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/3307 --user=mysql
エラーが発生した場合

yum install libaio-devel.x86_64


yum -y install numactl
4。各データベースの構成ファイル my.cnf を作成しますMysql5.7 でマスター/スレーブ レプリケーションを設定する方法を段階的に説明します。
注:

1. Windows と Windows 間のコーディングの不一致を防ぐために、Linux でファイルを作成することをお勧めします。 linux
2. さまざまなインスタンスの構成要件 ポート番号を変更します
#3. 変更した my.cnf をそれぞれ 3306 フォルダーと 3307 フォルダーに配置します

[client]
port        = 3306
socket      = /usr/local/mysql/data/3306/mysql.sock
default-character-set=utf8

[mysqld]
port    = 3306
socket  = /usr/local/mysql/data/3306/mysql.sock
datadir = /usr/local/mysql/data/3306
log-error = /usr/local/mysql/data/3306/error.log
pid-file = /usr/local/mysql/data/3306/mysql.pid

character-set-server=utf8
lower_case_table_names=1
autocommit = 1

log-bin=mysql-bin
server-id=3306

5. 複数のインスタンスを開始します

/usr/local/mysql-5.7.24/bin ディレクトリに切り替え、msyqld_safe コマンドを使用して構成ファイルを指定して開始しますMySQL サービス:

#其中 --defaults-file 是指定配置文件,& 符合表示后台启动
./mysqld_safe --defaults-file=/usr/local/mysql/data/3306/my.cnf &
./mysqld_safe --defaults-file=/usr/local/mysql/data/3307/my.cnf &

6. データベース初期化設定

各インスタンスでそれぞれ設定します (例: 3306:

)
#客户端连接
./mysql -uroot -p -P3306 -h127.0.0.1
#修改Mysql密码
alter user 'root'@'localhost' identified by 'root';
#授权远程访问(这样远程客户端才能访问)
grant all privileges on *.* to root@'%' identified by 'root';
#刷新配置
flush privileges;

クライアント接続テスト

7. データベース固有 ID の設定
Mysql5.7 でマスター/スレーブ レプリケーションを設定する方法を段階的に説明します。
1. 各インスタンスが起動することを確認します。インスタンスを閉じると、次の設定が各インスタンスの my.cnf ファイルにそれぞれ追加されます

#/usr/local/mysql/bin 关闭实例
./mysqladmin -uroot -p -P3307 -h127.0.0.1 shutdown
./mysqladmin -uroot -p -P3306 -h127.0.0.1 shutdown

#新加的配置
log-bin=mysql-bin   	#表示启用二进制日志
server-id=3307 		#表示server编号,编号要唯一 建议和端口保持一致

各インスタンスを起動します追加後
#

./mysqld_safe --defaults-file=/usr/local/mysql/data/3306/my.cnf &

./mysqld_safe --defaults-file=/usr/local/mysql/data/3307/my.cnf &
7. ホスト設定

1. メインサーバーにデータをコピーするためのアカウントを作成し、承認します

#在/usr/local/mysql/bin目录下执行 
 ./mysql -uroot -p -P3306 -h127.0.0.1
 grant replication slave on *.* to 'copy'@'%' identified by 'root';

2. メイン サーバーのステータスを確認します

# mysql主服务器默认初始值:
#			File:mysql-bin.000001
#			Position:154

show master status;
3. メイン サービスの状態が初期状態でない場合は、状態をリセットする必要があります

reset master;
7. スレーブ マシンの設定

1.必須 3306|3307|3308

#在/usr/local/mysql/bin目录下执行  多台从机‘|’分隔
./mysql -uroot -p -P3308|3309|3310 -h127.0.0.1
のスレーブ クライアントにログインします。 2. スレーブの状態を確認します

#初始状态:Empty set 
show slave status;
3. 初期状態でない場合はリセットしてください

stop slave; 	#停止复制,相当于终止从服务器上的IO和SQL线程
reset slave;
4. スレーブマシンの設定とホスト構成の設定

change master to 
master_host='主机ip',master_user='copy',
master_port=主机端口,master_password='连接主机密码',
master_log_file='mysql-bin.000001',master_log_pos=154;
5. コピー開始コマンドの実行

start slave;
6. スレーブステータスの確認

show slave status \G;

Mysql5.7 でマスター/スレーブ レプリケーションを設定する方法を段階的に説明します。
7.测试主从复制

在主数据库中进行创建表,从库同步就算搭建成功了!
Mysql5.7 でマスター/スレーブ レプリケーションを設定する方法を段階的に説明します。
若你在从库进行写操作,则从服务器不再同步主库数据,在从库中执行此命令即可解决!

stop slave;
set global sql_slave_skip_counter =1;
start slave;
show slave status\G;

若主从复制速度较慢的话,执行此命令

 slave-parallel-type=LOGICAL_CLOCK
 slave-parallel-workers=16
 master_info_repository=TABLE
 relay_log_info_repository=TABLE
 relay_log_recovery=ON

相关学习推荐:mysql教程(视频)

以上がMysql5.7 でマスター/スレーブ レプリケーションを設定する方法を段階的に説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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