在實(shí)際生產(chǎn)環(huán)境中,如果對(duì)數(shù)據(jù)庫(kù)的讀和寫(xiě)都在同一個(gè)數(shù)據(jù)庫(kù)服務(wù)器中操作,無(wú)論是在安全性、高可用性,還是高并發(fā)等各個(gè)方面都是完全不能滿足實(shí)際需求的,因此,一般來(lái)說(shuō)都是通過(guò)主從復(fù)制(Master-Slave)的方式來(lái)同步數(shù)據(jù),再通過(guò)讀寫(xiě)分離來(lái)提升數(shù)據(jù)庫(kù)的并發(fā)負(fù)載能力這樣的方案來(lái)進(jìn)行部署和實(shí)施。
在周村等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),成都全網(wǎng)營(yíng)銷(xiāo),成都外貿(mào)網(wǎng)站建設(shè)公司,周村網(wǎng)站建設(shè)費(fèi)用合理。
MySQL的主從復(fù)制和MySQL的讀寫(xiě)分離兩者有著緊密聯(lián)系,首先要部署主從復(fù)制,只有主從復(fù)制完成了,才能在此基礎(chǔ)上進(jìn)行數(shù)據(jù)的讀寫(xiě)分離。
簡(jiǎn)單來(lái)說(shuō),讀寫(xiě)分離就是只在主服務(wù)器上寫(xiě),只在從服務(wù)器上讀。基本原理是讓主數(shù)據(jù)庫(kù)處理事務(wù)性查詢,而從數(shù)據(jù)庫(kù)處理select查詢。數(shù)據(jù)庫(kù)復(fù)制被用來(lái)把事務(wù)性查詢導(dǎo)致的變更同步到群集中的從數(shù)據(jù)庫(kù)。
基于中間代理層實(shí)現(xiàn):代理一般位于客戶端和服務(wù)器之間,代理服務(wù)器接到客戶端請(qǐng)求通過(guò)判斷后轉(zhuǎn)發(fā)到后端數(shù)據(jù)庫(kù),有兩個(gè)代表性程序。
主機(jī) | 操作系統(tǒng) | IP地址 | 主要軟件 |
---|---|---|---|
Master | CentOS 7.3 | 192.168.100.137 | mysql-5.5.24.tar.gz |
Slave1 | CentOS 7.3 | 192.168.100.132 | mysql-5.5.24.tar.gz |
Slave2 | CentOS 7.3 | 192.168.100.149 | mysql-5.5.24.tar.gz |
Amoeba | CentOS 7.3 | 192.168.100.150 | amoeba-mysql-binary-2.2.0.tar.gz jdk-6u14-linux-x64.bin |
客戶端 | CentOS 7.3 | 192.168.100.148 | mysql-5.5.24.tar.gz |
1) 安裝NTP
#yum –y install ntp
2) 配置NTP
#vim /etc/ntp.conf
server 127.127.100.0 //本地是時(shí)鐘源
fudge 127.127.100.0 stratum 8 //設(shè)置時(shí)間層級(jí)為8(限制在15內(nèi))
3)重啟服務(wù)并關(guān)閉防火墻和增強(qiáng)安全設(shè)置
#service ntpd restart
#systemctl stop firewalld.service
#setenforce 0
#yum install ntpd start
#systemctl stop firewalld.service
#setenforce 0
#/usr/sbin/ntpdate 192.168.100.137 //進(jìn)行時(shí)間同步
1)在/etc/my.cnf中修改或者增加以下內(nèi)容并重啟服務(wù)
#vim /etc/my.cnf
server-id = 11
log-bin=master-bin //主服務(wù)器日志文件
log-slave-updates=true //從服務(wù)器更新二進(jìn)制日志
#systemctl restart mysqld.service
2)登錄MySQL,給從服務(wù)器授權(quán)
#mysql -u root –p
mysql>GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.100.%' IDENTIFIED BY '123456';
mysql>FLUSH PRIVILEGES;
mysql>show master status;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-bin.000001 | 339 | | |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
1)在/etc/my.cnf中修改或者增加以下內(nèi)容
#vim /etc/my.cnf
server-id =22 //這里注意server-id不能與主服務(wù)器相同
relay-log=relay-log-bin //從主服務(wù)器上同步日志文件記錄到本地
relay-log-index=slave-relay-bin.index //定義relay-log的位置和名稱
2)重啟MySQL服務(wù)
#systemctl restart mysqld.service
3)登錄MySQL,配置同步。按主服務(wù)器結(jié)果更改下面命令中master_log_file和master_log_pos的參數(shù)
#mysql –u root –p
mysql>change master to
master_host='192.168.100.137',master_user='myslave',master_password='123456',master_log_file='master-bin.000001',master_log_pos=339;
4)啟動(dòng)同步,查看Slave狀態(tài),確保以下兩個(gè)值為YES。
mysql>start slave;
1)在主服務(wù)器上新建數(shù)據(jù)庫(kù)db_test。
mysql>create database db_test;
2)在主、從服務(wù)器上分別查看數(shù)據(jù)庫(kù),顯示數(shù)據(jù)庫(kù)相同,則主從復(fù)制成功
#systemctl stop firewalld.service
#setenforce 0
#cp jdk-6u14-linux-x64.bin /usr/local/
#cd /usr/local
#./jdk-6u14-linux-x64.bin //yes之后enter
#mv jdk1.6.0_14/ /usr/local/jdk1.6
#vi /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
#source /etc/profile
#mkdir /usr/local/amoeba
#tar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
#chmod -R 755 /usr/local/amoeba/
#/usr/local/amoeba/bin/amoeba //若顯示amoeba start|stop說(shuō)明安裝成功
mysql>grant all on *.* to test@'192.168.100.%' identified by '123.com';
#cd /usr/local/amoeba
#vim conf/amoeba.xml
---30行--
<property name="user">amoeba</property> //訪問(wèn)amoeba的用戶名
----32行---------
<property name="password">123456</property> //密碼
---117-去掉注釋-
<property name="defaultPool">master</property> //默認(rèn)為主服務(wù)器
<property name="writePool">master</property> //寫(xiě)入為主服務(wù)器
<property name="readPool">slaves</property> //讀取為slaves池,現(xiàn)有slave1、slave2服務(wù)器
--26-29--去掉注釋--
<property name="user">test</property>
<property name="password">123.com</property>
-----42-主服務(wù)器地址---
<dbServer name="master" parent="abstractServer">
<property name="ipAddress">192.168.100.137</property>
--52-從服務(wù)器主機(jī)名-
<dbServer name="slave1" parent="abstractServer">
--55-從服務(wù)器地址-
<property name="ipAddress">192.168.100.132</property>
--57-從服務(wù)器主機(jī)名-
<dbServer name="slave2" parent="abstractServer">
--60-從服務(wù)器地址-
<property name="ipAddress">192.168.100.149</property>
<dbServer name="slaves" virtual="true">
<poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
--末尾--
<property name="poolNames">slave1,slave2</property>
</poolConfig>
#/usr/local/amoeba/bin/amoeba start&
# netstat -anpt | grep java
#yum install -y mysql
#mysql -u amoeba -p123456 -h 192.168.100.100 -P8066
#systemctl stop firewalld.service
#setenforce 0
1)在Master上創(chuàng)建一個(gè)表,同步到各從服務(wù)器上,然后關(guān)閉各從服務(wù)器的Slave功能,再插入?yún)^(qū)別語(yǔ)句
#mysql –u root –p
mysql>use db_test;
mysql>create table zang (id int(10),name varchar(10),address varchar(20)); //主服務(wù)器
mysql>stop slave; //從服務(wù)器
mysql>insert into zang values('1','zhang','this_is_master'); //主服務(wù)器上,內(nèi)容不會(huì)同步
2) 從服務(wù)器上同步了表,手動(dòng)插入其他內(nèi)容
mysql>use db_test; //從服務(wù)器1
mysql>insert into zang values('2','zhang','this_is_slave1');
mysql>use db_test; //從服務(wù)器2
mysql>insert into zang values('3','zhang','this_is_slave2');
3)測(cè)試讀操作
4)測(cè)試寫(xiě)操作
在Client主機(jī)上插入一條語(yǔ)句:
mysql>insert into zang values('5','zhang','write_test');
但在Client查詢不到,最終只有在Master上才能查看到這條語(yǔ)句內(nèi)容,說(shuō)明寫(xiě)操作在Master服務(wù)器上。
分享標(biāo)題:利用Amoeba實(shí)現(xiàn)MySQL主從復(fù)制和讀寫(xiě)分離
分享URL:http://m.rwnh.cn/article2/jdipoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、手機(jī)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站、用戶體驗(yàn)、網(wǎng)站導(dǎo)航、軟件開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)