MySQLデータベースの高度な記事 - マスター・スレーブ同期分離読み取りと書き込み
マスター・スレーブ同期
実験の準備
4台の仮想マシン、アプリケーション側、アメーバ、マスタサーバ、スレーブサーバの合計
アプリケーション側: centos7-2(MySQLの前に設置した実験)
アメーバ: centos7-1(なしのMySQL)
マスター: centos7-3(MySQLの前に設置した実験)
サーバから: centos7-4(実験は、MySQL前にインストール)
プライマリサーバの設定
インストール時刻同期化サービス
[root@master ~]# yum install ntp -y
#修改ntp配置文件
[root@master ~]# vim /etc/ntp.conf
server 127.127.195.0 //本地是时钟源,195段落//
fudge 127.127.195.0 stratum 8 //设置时间层级为8//
###开启服务
[root@master ~]# systemctl start ntpd
変更MySQLのメインの設定ファイル
[root@master ~]# vim /etc/my.cnf
server-id 10
log-bin=zhu-bin
log-slave-updates=ture ##开启主从同步
[root@master ~]# systemctl restart mysqld
[root@master ~]# systemctl stop firewalld
データベースの変更に
[root@master ~]# mysql -u root -p
grant replication slave on *.* to 'myslave'@'192.168.142.%' identified by 'asd123';
#允许从服务器使用myslave账户在主服务器上进行复制操作
show master status; #查看主服务器信息
mysql> mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000005 | 868 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
サーバーの設定から
同期クライアントサービスのntpdをインストールします。
[root@slave ~]# yum install ntp ntpdate -y
#开启服务关防火墙
[root@slave ~]# systemctl start ntpd
[root@slave ~]# systemctl stop firewalld
##进行时间同步
[root@slave ~]# /usr/sbin/ntpdate 主服务器地址
変更MySQLのメインの設定ファイル
[root@slave ~]# vim /etc/ntp.conf
server-id = 20
relay-log = relay-bin ###同步日志文件到本地
relay-log-index = slave-bin.index ##定义日志文件类型及名称
[root@slave ~]# systemctl restart mysqld
データベースの変更に
[root@slave ~]# mysql -u root -p123123
change master to master_host='192.168.142.135',master_user='myslave',master_password='asd123',master_log_file='mysql-bin.000005',master_log_pos=865;
##授予权限
start slave;
###查询同步是否成功
show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Reconnecting after a failed master event read
Master_Host: 192.168.142.132
Master_User: myslave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000004
Read_Master_Log_Pos: 1633
Relay_Log_File: master1-relay-bin.000011
Relay_Log_Pos: 1126
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes ##IO连接
Slave_SQL_Running: Yes ##SQL连接
......
PS:
時々 、ショットが同期から会う予定Slave_SQL_Running: NO
問題、以下の回避策は次のとおりです。
####Slave_SQL_Running: No问题解决方案
MariaDB [(none)]> stop slave;
MariaDB [(none)]> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G
この時点で、MySQLのマスタ - スレーブ同期が完了し、次は、静的および動的分離を開始します
MySQLの別々の読み取りと書き込み
実験の準備
以下の実験は、すべてのベースからプライマリ同期に基づいていました
4台の仮想マシンの#A合計、アプリケーション側、アメーバ、マスタサーバ、スレーブ・サーバ
アプリケーションの終了: centos7-2(そこのMySQL)
アメーバ: centos7-1(なしのMySQL)
マスター: centos7-3(そこのMySQL)
サーバーから: centos7-4(そこのMySQL)
アメーバサーバーを設定します
JDKのインストール環境(JAVAによる開発アメーバ)
[root@amoeba ~]# systemctl stop firewalld.service #关闭防火墙
[root@amoeba ~]# setenforce 0
[root@amoeba mnt]# cp -p jdk-6u14-linux-x64.bin /usr/local/ #移动事先准备好的jdk包
[root@amoeba mnt]# cd /usr/local/
[root@amoeba local]# ./jdk-6u14-linux-x64.bin #安装jdk环境
[root@amoeba local]# mv jdk1.6.0_14/ jdk1.6
##配置jdk环境变量
[root@amoeba local]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin
export AMOEBA_HOME=/usr/local/amoeba
export PATH=$PATH:$AMOEBA_HOME/bin
[root@amoeba local]# source /etc/profile
開梱、アメーバKitをインストール
[root@amoeba local]# mkdir amoeba
[root@amoeba local]# tar zxf /mnt/amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba #解压事先准备好的工具包
[root@amoeba local]# chmod -R 755 amoeba/ #赋予权限
##检查是否安装成功
[root@amoeba local]# /usr/local/amoeba/bin/amoeba
amoeba start|stop ##出现以下命令行即为成功
マスター設定ファイルamoeba.xmlを変更
[root@amoeba local]# vim amoeba/conf/amoeba.xml
##按照下图进行修改
#(增加客户机访问amoeba的账户、密码)
<property name="user">amoeba</property>
<property name="password">123123</property>
---------------------------------------------------------
#(开启默认池、读取池、写入池)
<property name="defaultPool">master</property>
<property name="writePool">master</property>
<property name="readPool">slaves</property>
アメーバ関連のデータベースコンフィギュレーションファイルのdbserver.xmlを変更します。
[root@amoeba local]# vim amoeba/conf/dbServers.xml
## 按照下图进行修改
#(修改amoeba访问节点服务器的账户、密码)
<!-- mysql user -->
<property name="user">test</property>
<!-- mysql password -->
<property name="password">asd123</property>
-------------------------------------------------------------
#(指定主、从服务器节点地址)
<dbServer name="master" parent="abstractServer">
<property name="ipAddress">192.168.142.132</property>
<dbServer name="slave" parent="abstractServer">
<property name="ipAddress">192.168.142.136</property>
--------------------------------------------------------------
#(将从服务器划入读取地址池中)
<dbServer name="slaves" virtual="true">
<property name="poolNames">slave</property>
データベースサーバから、メインに戻ります
##在主、从服务器上开放访问权限
[root@slave ~]# mysql -u root -p123123 #进入主服务器数据库(从服务器与主服务器操作相同)
grant all on *.* to test@'192.168.142.%'identified by 'asd123'; #开放test用户访问权限
オープンアメーバサーバ
[root@amoeba conf]# /usr/local/amoeba/bin/amoeba start & #调入后台持续运行
アプリケーションクライアント
MySQLをインストール前提の下で、入力mysql -u amoeba -p123123 -h 192.168.142.142 -P8066
に成功アメーバサーバーにアクセスします。
このとき、マスタ書き込みが読み取りおよび書き込みプライマリサーバは、スレーブを使用してサーバから読み取ります。