創(chuàng)新互聯(lián)的負(fù)載均衡(Server Load Balancing)是對多臺云服務(wù)器(計算集群)進(jìn)行流量分發(fā)的網(wǎng)絡(luò)服務(wù)設(shè)備。它可以通過流量分發(fā),快速提高應(yīng)用系統(tǒng)對外的服務(wù)能力;隱藏實際服務(wù)端口,增強(qiáng)內(nèi)部系統(tǒng)的安全性;通過消除服務(wù)單點故障,提升應(yīng)用系統(tǒng)的可靠性。今天創(chuàng)新互聯(lián)就給大家介紹下MySQL主從復(fù)制、讀寫分離+tomcat項目等
創(chuàng)新互聯(lián)長期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為廣河企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計,廣河網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
Nginx負(fù)載均衡+mysql主從復(fù)制、讀寫分離+tomcat項目
架構(gòu):(因為資源有限,只有兩臺虛機(jī))
1192.168.137.3Nginx、Mysql(主)、Tomcat1、Tomcat2
2192.168.137.5Mysql(從)
系統(tǒng)版本:centos 7
192.168.137.3
1、先安裝 Nginx ,方便以后用
2、安裝mysql
file /usr/share/mysql/charsets/swe7.xml from install of MySQL-server-5.6.13-1.linux_glibc2.5.x86_64 conflicts with file from package mariadb-libs-1:5.5.52-1.el7.x86_64
yum remove mariadb-libs
[root@localhost local]# rpm -ivh MySQL-server-5.6.13-1.linux_glibc2.5.x86_64.rpm
準(zhǔn)備中... ################################# [100%]
正在升級/安裝...
1:MySQL-server-5.6.13-1.linux_glibc################################# [100%]
Can't locate Data/Dumper.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/bin/mysql_install_db line 42.
BEGIN failed--compilation aborted at /usr/bin/mysql_install_db line 42.
[root@localhost local]# yum install 'perl(Data::Dumper)'
[root@localhost local]# rpm -e MySQL-server
[root@localhost local]# rpm -ivh MySQL-server-5.6.13-1.linux_glibc2.5.x86_64.rpm
準(zhǔn)備中... ################################# [100%]
正在升級/安裝...
1:MySQL-server-5.6.13-1.linux_glibc################################# [100%]
一定要記得初始化!!!!!真是醉了
[root@localhost ~]# mysql_install_db
[root@localhost ~]# cp /usr/share/mysql/my-default.cnf /etc/my.cnf
[root@localhost ~]# service mysql start
Starting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).
[root@localhost ~]# vi /etc/my.cnf 并在配置文件中添加log-error = /var/log/mysql.log ;log文件在初始化時生成
[root@localhost ~]# chown -R mysql:mysql /var/lib/mysql/
[root@localhost ~]# service mysql start
Starting MySQL. SUCCESS!
/usr/bin/mysqladmin -u root password '123123'
3、安裝tomcat
安裝jdk
解壓進(jìn)入目錄
JAVA_HOME=/usr/local/jdk1.7.0_09
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
[root@localhost jdk1.7.0_09]# vi /etc/profile
[root@localhost jdk1.7.0_09]# source /etc/profile
[root@localhost jdk1.7.0_09]# java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)
安裝tomcat
解壓進(jìn)入目錄
[root@localhost local]# mv apache-tomcat-6.0.44 tomcat
[root@localhost local]# vi /etc/profile
export TOMCAT_HOME=/usr/local/tomcat
安裝tomcat2
解壓進(jìn)入目錄
[root@localhost local]# mv apache-tomcat-6.0.44 tomcat2
[root@localhost local]# vi /etc/profile
export TOMCAT_HOME2=/usr/local/tomcat2
修改相應(yīng)的端口
比如8081
關(guān)閉firewalld 客戶端測試
192.168.137.5安裝mysql(同上面安裝一樣)
4、配置mysql讀寫分離,先要設(shè)置主從
主mysql:
#GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO 'cp'@'%' IDENTIFIED BY '123123' WITH GRANT OPTION;
注意:以上這行不能使用!!!!在配置讀寫分離的時候,操作數(shù)據(jù)庫權(quán)限不夠,用以下語句!!!!!!
grant all privileges on *.* to 'cp'@'%' identified by '123123' WITH GRANT OPTION;
從mysql:
編輯配置文件
server-id = 222
relay-log = /data/relaylogs/relay-bin
mysql> CHANGE MASTER TO MASTER_HOST='192.168.137.3',MASTER_PORT=3306,MASTER_USER='cp',MASTER_PASSWORD='123123',MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=2186726;
ERROR 29 (HY000): File '/data/relaylogs/relay-bin.index' not found (Errcode: 13 - Permission denied)
上述原因是:/data/relaylogs/relay-bin.index這個文件沒有找到,需要touch這個文件!!!!
上述命令成功后,start slave
然后用:show slave status\G 查看是否正確
問題1:在更改已經(jīng)存在的庫,從mysql報錯Slave_SQL_Running: No
解決辦法:
mysql> reset slave ;
mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave ;
問題2:在master上已經(jīng)存在的數(shù)據(jù)庫,無法同步到slave上
解決辦法:
重新配置主從!!!!!!!!!!!!!!!
重新配置主從---接著上面的操作
1、進(jìn)入主庫,進(jìn)行鎖表,防止數(shù)據(jù)寫入
mysql> flush tables with read lock;
2、在從庫上,直接備份遠(yuǎn)程數(shù)據(jù)庫到本地目錄下
mysqldump -h 192.168.137.3 -ucp -p123123 --databases erpBack >erpBack.bak.sql
3、在從庫上,停止slave
mysql> stop slave ;
4、新建erpBack庫,并導(dǎo)入數(shù)據(jù)
mysql> create database erpBack ;
mysql> use erpBack ;
mysql> source /root/erpBack.bak.sql
5、在主庫上,解鎖表;并查看二進(jìn)制日志信息;并記錄
mysql> unlock tables ;
mysql> show master status;
6、在從庫上,重新配置連接信息
CHANGE MASTER TO MASTER_HOST='192.168.137.3',MASTER_PORT=3306,MASTER_USER='cp',MASTER_PASSWORD='123123',MASTER_LOG_FILE='mysql-bin.000006',MASTER_LOG_POS=120;
7、啟動slave;查看主從狀態(tài)
mysql> start slave ;
mysql> show slave status\G
8、在主庫上,更新erpBack庫數(shù)據(jù);并在從庫上查看是否運行正常!!
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
問題3:第二天重啟系統(tǒng)后,show slave status\G 顯示錯誤:
Slave_IO_Running: No
Slave_SQL_Running: No
啟動start slave,顯示錯誤:
ERROR 29 (HY000): File '/data/relaylogs/relay-bin.index' not found (Errcode: 13 - Permission denied)
解決:show master status; 重新配置主從
mysql> reset slave ;重置slave,再重新配置slave
mysql> CHANGE MASTER TO MASTER_HOST='192.168.137.3',MASTER_PORT=3306,MASTER_USER='cp',MASTER_PASSWORD='123123',MASTER_LOG_FILE='mysql-bin.000009',MASTER_LOG_POS=467;
mysql> start slave ;
mysql> show slave status\G 查看是否正確
配置mysql讀寫分離,利用amoeba
https://sourceforge.net/projects/amoeba/files/
下載最新版;并解壓
unzip amoeba-mysql-3.0.4-BETA-distribution.zip
mv amoeba-mysql-3.0.4-BETA amoeba
cd amoeba
chmod +x bin/
vi conf/amoeba.xml
#設(shè)置客戶端連接的參數(shù):端口、用戶名、密碼等信息
<property name="user">root</property>
<property name="password">root</property>
#設(shè)置主從的寫與讀;原配置文件以下內(nèi)容是注釋掉的,這里需要開啟
<property name="writePool">server1</property>
<property name="readPool">server2</property>
vi conf/dbServers.xml
#這里設(shè)置連接主從數(shù)據(jù)庫的參數(shù):端口、數(shù)據(jù)庫、用戶名、密碼
<!-- mysql port -->
<property name="port">3306</property>
<!-- mysql schema -->
<property name="schema">erpBack</property>
<!-- mysql user -->
<property name="user">cp</property>
<property name="password">123123</property>
eg:這里需要注意,主從mysql都需要開啟遠(yuǎn)程訪問功能,并設(shè)置的用戶名與密碼相同!!
#設(shè)置主從的ip地址;注意:本機(jī)的話也IP地址代替
<dbServer name="server1" parent="abstractServer">
<factoryConfig>
<!-- mysql ip -->
<property name="ipAddress">192.168.137.3</property>
</factoryConfig>
</dbServer>
<dbServer name="server2" parent="abstractServer">
<factoryConfig>
<!-- mysql ip -->
<property name="ipAddress">192.168.137.5</property>
</factoryConfig>
</dbServer>
啟動amoeba
bin/launcher &
查看logs
tail -f logs/net.log
客戶端測試:
mysql -h 192.168.137.3 -P8066 -uroot -proot
配置Nginx代理
#servers
upstream test.com {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
#以上是每個請求按訪問ip的hash結(jié)果分配,這樣每個訪客固定訪問一個后端云服務(wù)器,可以解決session的問題。
proxy_pass http://test.com;
proxy_redirect default;
最后,在客戶端測試!
如果大家還有什么地方需要了解的可以在創(chuàng)新互聯(lián)官網(wǎng)找我們的專業(yè)技術(shù)工程師的,創(chuàng)新互聯(lián)技術(shù)工程師在行業(yè)內(nèi)擁有十幾年的經(jīng)驗了,所以會比小編回答的更加詳細(xì)專業(yè)。創(chuàng)新互聯(lián)官網(wǎng)鏈接vcdvsql.cn
文章題目:簡單介紹下mysql主從復(fù)制、讀寫分離+tomcat項目等
轉(zhuǎn)載源于:http://vcdvsql.cn/article4/pocdie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計公司、網(wǎng)站排名、小程序開發(fā)、網(wǎng)站維護(hù)、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)