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、データベースビューからログイン、マスター・スレーブレプリケーションの成功。