使用amoeba配置mysql主從同步讀寫分離
實驗環境:
需要三臺手工編譯安裝的mysql,一臺主,兩臺從
主: 192.168.88.100
從1: 192.168.88.103
從2: 192.168.88.104
前段服務器: 192.168.88.101
-----在主服務器192.168.88.100上做---------------配置NTP服務器---------- //在主服務器上搭ntp服務,提供時間同步
yum install -y ntp
vi /etc/ntp.conf
restrict 192.168.88.0 mask 255.255.255.0 nomodify notrap
fudge 127.127.1.0 stratum 8 //設置時間服務器的層級為8級,頂級是0
service ntpd start
service firewalld stop
setenforce 0
配置master主服務器的MYSQL:
vi /etc/my.cnf //在 [mysqld]下面配置
server_id = 11
log_bin=master_bin //這是記錄對master操作的二進制日誌文件
log_slave_updates=true //允許從服務器同步
service mysqld restart
mysql -u root -p
GRANT REPLICATION SLAVE ON . TO ‘myslave‘@‘192.168.88.%‘ IDENTIFIED BY ‘123456‘; //為所有從服務器授權所有數據庫
FLUSH PRIVILEGES;
show master status; //要記下 Position 列的值 (我的是603)和File的值
![]
--------以下配置從服務器192.168.88.103和192.168.88.104的ntp服務和從mysql------------------
service firewalld stop
setenforce 0
yum install -y ntpdate
![]
當出現offset時,說明同步成功。offset時偏移值
echo ‘/30 * /usr/sbin/ntpdate 192.168.88.100‘ >> /var/spool/cron/root //計劃任務,每隔30分鐘與主服務器同步一次
crontab -l
接著配置從服務器上的mysql:
vi /etc/my.cnf //[mysqld]下面
server_id = 22 //這裏註意id值不能和master的id相同,兩臺從mysql的id也不能相同
relay_log=relay-log-bin
relay_log_index=slave-relay-bin.index
service mysqld restart
-------註意master_logpos= 的值,要在主上使用show master status;查看一下,註意 -和 ----
mysql -u root
change master to master_host=‘192.168.88.100‘,master_user=‘myslave‘,master_password=‘123456‘,master_log_file=‘master_bin.000001‘,master_log_pos=900; //跟蹤主mysql服務器的二進制文件
start slave;
show slave status \G //以下兩個選項需要是Yes
……
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
……
接著驗證主從同步:
------在主服務器上新建庫並驗證同步------------
mysql -u root -p
create database hello;
show databases; //主服務器創建好數據庫,在從服務器上查看,從服務器上也會時時同步
----------------------------------配置mysql讀寫分離---------
-----在前端服務器上(192.168.88.101)配置------------
service firewalld stop
setenforce 0
yum install -y ntpdate
ntpdate 192.168.88.100
echo ‘/30 * /usr/sbin/ntpdate 192.168.88.100‘ >> /var/spool/cron/root
crontab -l
-----------安裝JDK------- //amoeba是基於java開發的,所以安裝需要java環境
tar xf jdk-8u144-linux-x64.tar.gz
cp -rv jdk1.8.0_144/ /usr/local/java
vi /etc/profile //設置環境變量
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export PATH=$PATH:/usr/local/java/bin
export CLASSPATH=./:/usr/local/java/lib:/usr/local/java/jre/lib
source /etc/profile
#java -version
java version "1.8.0_144" //以上出現,java環境搭建成功
……
……
--------------安裝amoeba------https://sourceforge.net/projects/amoeba/files/--
unzip amoeba-mysql-3.0.5-RC-distribution.zip -d /usr/local/
mv /usr/local/amoeba-mysql-3.0.5-RC/ /usr/local/amoeba
chmod -R 755 /usr/local/amoeba/
vi /usr/local/amoeba/jvm.properties
JVM_OPTIONS="-server -Xms256m -Xmx1024m -Xss196k -XX:PermSize=16m -XX:MaxPermSize=96m" //修改32行,為以下參數
JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k"
------制作amoeba管理腳本-------
vi /etc/init.d/amoeba
#!/bin/bash
#chkconfig: 35 62 62
#
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
NAME=Amoeba
AMOEBA_BIN=/usr/local/amoeba/bin/launcher
SHUTDOWN_BIN=/usr/local/amoeba/bin/shutdown
PIDFILE=/usr/local/amoeba/Amoeba-MySQL.pid
SCRIPTNAME=/etc/init.d/amoeba
case "$1" in
start)
echo -n "Starting $NAME... "
$AMOEBA_BIN
echo " done"
;;
stop)
echo -n "Stoping $NAME... "
$SHUTDOWN_BIN
echo " done"
;;
restart)
$SHUTDOWN_BIN
sleep 1
$AMOEBA_BIN
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart}"
exit 1
;;
esac
chmod +x /etc/init.d/amoeba
chkconfig --add amoeba
service amoeba start
netstat -anpt | grep 8066 //默認監聽在8066端口
----------------分別在三臺mysql數據庫中為amoeba授權-------
GRANT ALL ON . TO test@‘192.168.88.%‘ IDENTIFIED BY ‘123.com‘;
FLUSH PRIVILEGES;
--------在前端服務器上----
cd /usr/local/amoeba
vi conf/amoeba.xml
---28行-----設置客戶端連接amoeba前端服務器時使用的用戶名和密碼----
<property name="user">amoeba</property>
----30行---------
<property name="password">123456</property>
------------------------------------以上配置用於客戶端連接用戶名密碼-------------
---83-去掉註釋-同時把默認的server1改成master,把默認的servers改成 slaves
<property name="defaultPool">master</property>
<property name="writePool">master</property>
<property name="readPool">slaves</property>
vi conf/dbServers.xml
--26-29--去掉註釋--
<property name="user">test</property>
<property name="password">123.com</property>
------主服務器地址---
43 <dbServer name="master" parent="abstractServer">
46 <property name="ipAddress">192.168.80.181</property>
--50-從服務器主機名-
<dbServer name="slave1" parent="abstractServer">
--53-從服務器地址-
<property name="ipAddress">192.168.80.182</property>
----復制相關代碼---
<dbServer name="slave1" parent="abstractServer">
<factoryConfig>
使用amoeba配置mysql主從同步讀寫分離