1. 程式人生 > >MYSQL主從複製+讀寫分離

MYSQL主從複製+讀寫分離

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

案例

在這裡插入圖片描述

搭建MYSQL主從複製

這裡mysql伺服器都裝好了的

yum -y install ntp #裝ntp時間同步

在這裡插入圖片描述

vim /etc/ntp.conf #配置檔案
server 127.127.1.0
fudge 127.127.1.0 stratum 8 #新增這兩行
service ntpd restart

在這裡插入圖片描述
在這裡插入圖片描述

/usr/sbin/ntpdate 192.168.1.101 #節點上進行時間同步,兩臺都要

在這裡插入圖片描述

配置MASTER主伺服器

vim /etc/my.cnf 
server-id = 11
log-bin=master-bin
log-slave-updates=true #修改或增加這三行
service mysqld restart

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

mysql -u root -p #登陸 給從伺服器授權

在這裡插入圖片描述

grant replication slave on *.* to 'myslave'@'192.168.1.%' identified by '123456';

在這裡插入圖片描述

flush privileges;
show master status;

在這裡插入圖片描述

配置從伺服器

#以下兩臺從伺服器同樣配置 不過ID不同就行
vim /etc/my.cnf 
server-id = 22
relay-log=relay-log-bin
relay-log-index=slave-relay-bin-index
#新增修改這些內容
service mysqld restart

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

mysql -u root -p

在這裡插入圖片描述

change master to master_host='192.168.1.101',master_user='myslave',master_password='123456',master_log_file='master-bin.000003',master_log_pos=106;

#後面兩個引數 需要填master的

在這裡插入圖片描述
在這裡插入圖片描述

start slave;

在這裡插入圖片描述

show slave status\G;

在這裡插入圖片描述

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
#必須yes狀態。克隆可能出問題,去改UUID

在這裡插入圖片描述
第二臺從伺服器不重複了。

驗證主從複製效果

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

搭建mysql讀寫分離

在主機Amoeba 安裝java環境 因為Amoeba是基於jdk1.5開發的,官方推薦使用jdk1.5或1.6版本。高版本不建議。

cp amoeba-mysql-binary-2.2.0.tar.gz jdk-6u14-linux-x64.bin /usr/src/

在這裡插入圖片描述

chmod +x /usr/src/jdk-6u14-linux-x64.bin 
./jdk-6u14-linux-x64.bin 

在這裡插入圖片描述

mv jdk1.6.0_14/ /usr/local/jdk1.6

在這裡插入圖片描述

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
. /etc/profile

在這裡插入圖片描述
在這裡插入圖片描述

java -version
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) 64-Bit Server VM (build 14.0-b16, mixed mode)
#輸出以上資訊為成功

在這裡插入圖片描述

mkdir /usr/local/amoeba
cd /usr/src/
tar zxf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
chmod -R 755 /usr/local/amoeba/

在這裡插入圖片描述
在這裡插入圖片描述

主和兩臺從配置許可權使用者
grant all on *.* to [email protected]'192.168.1.%' identified by '123.com';
#兩臺從也這樣

在這裡插入圖片描述

vim /usr/local/amoeba/conf/amoeba.xml 

在這裡插入圖片描述

<property name="user">amoeba</property>

<property name="password">123456</property>

#三十行左右

在這裡插入圖片描述

#115行左右
<property name="LRUMapSize">1500</property>
<property name="defaultPool">master</property>

<property name="writePool">master</property>
<property name="readPool">slaves</property>

在這裡插入圖片描述

vim /usr/local/amoeba/conf/dbServers.xml 

在這裡插入圖片描述

#26行左右 
<property name="user">test</property>

<property name="password">123.com</property>

在這裡插入圖片描述

#45行左右
<property name="ipAddress">192.168.1.101</property>
</factoryConfig>
</dbServer>
<dbServer name="slave1" parent="abstractServer">
<factoryConfig>
<!-- mysql ip -->
<property name="ipAddress">192.168.1.102</property>
</factoryConfig>
</dbServer>
<dbServer name="slave2" parent="abstractServer">
<factoryConfig>
<!-- mysql ip -->
<property name="ipAddress">192.168.1.103</property>
</factoryConfig>
</dbServer>
<dbServer name="slaves" virtual="true">
<poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
<!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
<property name="loadbalance">1</property>
<!-- Separated by commas,such as: server1,server2,server1 -->
<property name="poolNames">slave1,slave2</property>
</poolConfig>
</dbServer>

在這裡插入圖片描述
在這裡插入圖片描述

/usr/local/amoeba/bin/amoeba start &

在這裡插入圖片描述
在這裡插入圖片描述

驗證

mysql -u amoeba -p123456 -h 192.168.1.110 -P8066
#客戶端登陸

在這裡插入圖片描述
在maseter建立一個表 然後停掉從伺服器的slave功能。
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
讀從 ,寫主。 主從複製