MySQLの:マスター・スレーブ同期レプリケーション

A:シナリオ

:一つだけのバックエンドデータベースMySQLは、以下の質問がありますとき、企業のWebサイトでは、
<1>:ダウン一度単一障害点は、MySQLデータベースを、サービスが利用できない
<2>:同時データリクエストを多数取り扱うことができません
。<3> :データの損失たら大事故になる
ここに画像を挿入説明
ような事件の発生を防止し、かつ----セットマスタースレーブの同期を変換するために、より安全で効果的な方法を持っているためです。

主な役割から:

<1>:増加MySQLデータベースサーバ、データ、マスタとスレーブのバックアップ。プライマリおよびMySQLデータベースサーバのデータが同じで、プライマリサーバがダウンしていることを確認し、作業を続行するには、バックアップサーバー、データが保証されています。
<2>:さらに別読み出しと書き込みによって負荷能力データベースの同時実行を強化するために、主要な実施形態によって複製からのデータを同期させること

ここに画像を挿入説明

2:MySQLのマスター・スレーブ原則バックアップ

バイナリログバイナリログマスター提供する
I / Oスレッドによって選択およびスレーブリレーログにコピーBINLOGマスタからスレーブ
スレーブバイナリログスレーブSQLスレッドによってリレーログから読み出され、そして、スレーブに解析

注:マスターとスレーブデータベースのバージョンが同じでなければなりません。主なライブラリやデータベースのバージョンは、そのライブラリからよりも高く、または最高のバージョンと一致し、より多くの問題が発生する原因となる必要があります。

MySQLのマスタースレーブレプリケーション・デプロイメント環境:

マスター:マスター192.168.17.141
サーバーから:スレーブ1 192.168.17.135
サーバーから:スレーブ2 192.168.17.128

III:マスタ - スレーブ同期ステップ

1:マスタサーバのmysql-マスター構成:

<1>:マスタープライマリサーバがダウンしたFirewalld

[root@localhost ~]# hostnamectl set-hostname master   主机更名为master
[root@localhost ~]# su
[root@master ~]# systemctl stop firewalld
[root@master ~]# setenforce 0

<2>:NTPの時刻同期サーバのインストールを設定し、時刻同期環境を構築し、サービスを開始します。
yumを使ってインストールNTPサービス
のntp.conf変更は、時刻同期マスターソースを設定します

[root@master ~]# yum install ntp -y
[root@master ~]# vim /etc/ntp.conf
/server 查找 插入:
server 127.127.17.0     主服务器是时钟源
fudge 127.127.17.0 stratum 8   设置时间层级为8
[root@master ~]# systemctl start ntpd

<3> MySQLのマニュアル翻訳(ここmysql5.7コンパイルされたバージョン)

[root@localhost LNMP-C7]# tar zxvf mysql-boost-5.7.20.tar.gz -C /opt    //解压mysql到/opt
[root@localhost LNMP-C7]# cd /opt/mysql-5.7.20/
[root@localhost mysql-5.7.20]# yum install ncurses ncurses-devel bison cmake expat-devel -y   //下载mysql的环境包
[root@localhost mysql-5.7.20]# useradd -s /sbin/nologin mysql     //创建mysql的程序用户

cmake配置nginx的编译选项
[root@localhost mysql-5.7.20]#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DWYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost -DWITH_SYSTEMD=1
[root@localhost mysql-5.7.20]# make && make install    //编译和安装
[root@localhost mysql-5.7.20]# vim /etc/my.cnf         //更改配置文件
把之前全删掉,重新写入:

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

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

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
   
[root@localhost mysql-5.7.20]# chown -R mysql:mysql /usr/local/mysql     //数据库目录进行权限调整,更改属主和属组
[root@localhost mysql-5.7.20]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile      //更改环境变量
[root@localhost mysql-5.7.20]# echo 'export PATH' >> /etc/profile     //设置全局变量
[root@localhost mysql-5.7.20]# source /etc/profile      使/etc/profile的更改生效
[root@localhost mysql-5.7.20]# cd /usr/local/mysql  
[root@localhost mysql]#         //初始化数据库
 bin/mysqld \         
 --initialize-insecure \
 --user=mysql \
 --basedir=/usr/local/mysql \
 --datadir=/usr/local/mysql/data 
[root@localhost mysql]# cp usr/lib/systemd/system/mysqld.service  /usr/lib/systemd/system 
[root@localhost mysql]# systemctl start mysqld   //开启mysql服务
[root@localhost mysql]# netstat -ntap | grep mysqld   //查看mysql服务是否开启
[root@localhost mysql]# systemctl enable mysqld      //设置开机自启动
[root@localhost mysql]# mysqladmin -uroot -p password   //设置mysql的初始密码
[root@master ~]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
[root@master ~]# echo 'export PATH' >> /etc/profile
[root@master ~]# source /etc/profile

<4>:Masterメインサーバー設定、およびサービスを開始します。
設定ファイルを変更し、サーバIDを追加するには、configureバイナリログオプションな/etc/my.cnf

[root@master ~]# vim /etc/my.cnf
更改插入:
server-id = 11
log-bin=master-bin
log-slave-updates=true
[root@master ~]# systemctl restart mysqld

<5>:サインMySQLサービス、サーバからバイナリログをコピーするすべての許可権限。そして、バイナリログの位置を表示

[root@master ~]# mysql -uroot -p  //登录数据库
mysql> grant replication slave on *.* to 'myslave'@'192.168.17.%' identified by '111';
mysql> show master status;

   master-bin.000001     451

2:サーバー設定からのmysql-スレーブ1:

<1>:スレーブ1サーバがFirewalld閉じ

[root@slave1 ~]# systemctl stop firewalld
[root@slave1 ~]# setenforce 0

<2>:サーバからの時刻同期とサービス開き、
yumをインストールおよび使用の時刻同期のntpdateを

[root@slave1 ~]# yum install ntp ntpdate -y
[root@slave1 ~]# systemctl start ntpd
[root@slave1 ~]# /usr/sbin/ntpdate 192.168.17.141

<3>インストールマニュアル翻訳mysql5.7(マスタとマスタMySQLデータベースのコンパイルステップ、上記のように見ることができ、ここでは省略する)

<4>:サーバから構成しSLAVE1、およびサービスを開始します。
設定ファイルを変更し、サーバIDを追加するには、configureバイナリログオプションな/etc/my.cnf

[root@slave1 ~]# vim /etc/my.cnf
插入更改:
server-id = 22
relay-log=relay-log-bin              从服务器同步日志文件记录到本地中继日志 
relay-log-index=slave-relay-bin.index    定义relay-log的位置和名称
[root@slave1 ~]# systemctl restart mysqld   

<5>:マスター・スレーブの同期を設定するには、MySQLをログに記録

[root@slave1 ~]# mysql -uroot -p
mysql> change master to master_host='192.168.17.141',master_user='myslave',master_password='111',master_log_file='master-bin.000001',master_log_pos=451;
mysql> start salve;     启动主从同步
mysql> show slave status\G;   查看slave状态
   Slave_l0_Running: Yes
   Slave_SQL_Running: Yes

ここに画像を挿入説明

3:サーバー構成からのmysql-スレーブ2:

<1>:スレーブ2サーバーがFirewalld閉じ

[root@slave2 ~]# systemctl stop firewalld
[root@slave2 ~]# setenforce 0

<2>:サーバからの時刻同期とサービス開き、
yumをインストールおよび使用の時刻同期のntpdateを

[root@slave2 ~]# yum install ntp ntpdate -y
[root@slave2 ~]# systemctl start ntpd
[root@slave2 ~]# /usr/sbin/ntpdate 192.168.17.141

<3>インストールマニュアル翻訳mysql5.7(マスタとマスタMySQLデータベースのコンパイルステップ、上記のように見ることができ、ここでは省略する)

<4>:サーバーから設定をスレーブ1
な/etc/my.cnfプロファイルを変更するには、増加のサーバIDは、configureバイナリログオプション

[root@slave2 ~]# vim /etc/my.cnf
插入更改:
server-id = 23
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
[root@slave1 ~]# systemctl restart mysqld

<5>:マスター・スレーブの同期を設定するには、MySQLをログに記録

[root@slave1 ~]# mysql -uroot -p
mysql> change master to master_host='192.168.17.141',master_user='myslave',master_password='111',master_log_file='master-bin.000001',master_log_pos=451;
mysql> start salve;
mysql> show slave status\G;

ここに画像を挿入説明

4:同期設定、マスタ - スレーブ同期検証複製効果

主服务器master--创建数据库:
   mysql> create database abc;
   mysql> show databases;
从服务器slave1--查看数据库: mysql> show databases;
从服务器slave2--查看数据库: mysql> show databases;

ここに画像を挿入説明
ここに画像を挿入説明
ここに画像を挿入説明
ログのMySQLマスターサーバーでは、新しいデータベースABC
同じmasterデータベースを示し、それぞれのサーバーのMySQL、データベースビューからログイン、マスター・スレーブレプリケーションの成功。

公開された40元の記事 ウォンの賞賛6 ビュー672

おすすめ

転載: blog.csdn.net/weixin_45691464/article/details/103964962