ホームページ >データベース >mysql チュートリアル >Mysql5.7 でマスター/スレーブ レプリケーションを設定する方法について簡単に説明します。

Mysql5.7 でマスター/スレーブ レプリケーションを設定する方法について簡単に説明します。

青灯夜游
青灯夜游転載
2021-09-06 18:58:382316ブラウズ

Mysql5.7 でマスター/スレーブ レプリケーションを設定するにはどうすればよいですか?次の記事では、Mysql5.7 でマスター/スレーブ レプリケーションを構築する手順について説明します。

Mysql5.7 でマスター/スレーブ レプリケーションを設定する方法について簡単に説明します。

#1. 概要

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

サービスの利用不能を回避し、データのセキュリティと信頼性を確保するには、データベース データを保存するために少なくとも 2 台以上のサーバーを展開する必要があります。つまり、データをコピーして展開する必要があります。異なるサーバー上では、1 つのサーバーに障害が発生した場合でも、他のサーバーは引き続きサービスを提供できます。

MySQL は、サービスの可用性、データのセキュリティと信頼性を向上させるためにマスター/スレーブ レプリケーション機能を提供します。

マスター/スレーブ レプリケーションとは、サーバーがマスター サーバーとスレーブ サーバーに分かれていることを意味します。マスター サーバーは読み取りと書き込みを担当し、スレーブ サーバーは読み取りのみを担当します。マスター/スレーブ レプリケーションは、master/ とも呼ばれます。スレーブ。マスターはマスター、スレーブはスレーブですが、必須ではありません。つまり、スレーブは書き込みもでき、マスターは読み取りもできますが、通常はこれを行いません。 [関連する推奨事項:

mysql ビデオ チュートリアル ]

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

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

    マスター サーバー上のデータが変更されると、その変更はバイナリ イベント ログ ファイルに書き込まれます。
  1. スレーブ サーバーは、マスター サーバー上のバイナリ ログを 1 つのファイル内で検出します。一定時間間隔で、変更されたかどうかを検出します。マスターサーバーのバイナリイベントログが変更されたことが検出された場合、I/Oスレッドを開始してマスターバイナリイベントログを要求します。
  2. 同時に、マスターサーバーのバイナリイベントログを要求します。 、マスターサーバーが提供する スレッドがダンプを開始する スレッドがバイナリイベントログを送信する
  3. slave スレーブサーバーは、受信したバイナリイベントログを独自のローカルリレーログファイルに保存する
  4. salve スレーブサーバー保存 SQL スレッドを開始してリレー ログからバイナリ ログを読み取り、ローカルで再生してデータをメイン サーバーと一致させます。
  5. 最後に、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

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

#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 umactl
Mysql5.7 でマスター/スレーブ レプリケーションを設定する方法について簡単に説明します。4. 各データベースの構成ファイル my.cnf を作成します

注:

1. 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. 各インスタンスが正常に正しく起動することを確認してから、マスター/スレーブ構成を実行します

2. インスタンスを閉じて、次の構成を追加します各インスタンスの 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

更多编程相关知识,请访问:编程入门!!

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

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