婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 詳解MySQL主從復制及讀寫分離

詳解MySQL主從復制及讀寫分離

熱門標簽:武漢電銷機器人電話 大豐地圖標注app 北京金倫外呼系統 html地圖標注并導航 400電話辦理服務價格最實惠 400電話變更申請 南太平洋地圖標注 呂梁外呼系統 催天下外呼系統

前言

在企業實際應用中,成熟的業務通常數據量都比較大,而單臺MySQL服務器在安全性、高可用性和高并發方面都無法滿足實際的需求,我們可以在多臺MySQL服務器(Master-Slave)部署 主從復制來實現同步數據,再通過 讀寫分離來提升數據庫的并發負載能力。有點類似于rsync,但是不同的是rsync是對磁盤文件做備份,而mysql主從復制是對數據庫中的數據、語句做備份。

一、相關概述

主從復制:主數據庫(Master)發送更新事件到從數據庫(Slave),從數據庫讀取更新記錄,并執行更新記錄,使得從數據庫的內容與主數據庫保持一致。

(一)MySQL 支持的復制類型

  • 基于語句的復制(STATEMENT)。在主庫上執行的 SQL 語句,在從庫上執行同樣的語句。MySQL 默認采用基于語句的復制,效率比較高。
  • 基于行的復制(ROW)。把改變的內容復制過去,而不是把命令在從庫上執行一遍。
  • 混合類型的復制(MIXED)。默認采用基于語句的復制,一旦發現基于語句無法精確復制時,就會采用基于行的復制。

(二)MySQL主從復制的工作過程

1.Master 服務器保存記錄到二進制日志

  • MySQL主庫上進行的增、刪、改的數據更新,都會按順序寫入到自己的二進制日志(Binary log)當中

2.Slave 服務器復制Master 服務器的日志

  • 然后MySQL從庫開始一個I/O線程連接主庫,讀取主庫的二進制日志,備份到從服務器的==中繼日志(Relay log)==當中。如果已經跟上主庫,它會睡眠并等待Master 產生新的事件,I/O線程將這些事件寫入中繼日志

3.Slave 服務器重放復制過來的日志

  • 然后從庫打開SQL線程,SQL線程讀取I/O線程寫入的中繼日志,并且根據中繼日志的內容更新從庫的數據,使其與主庫中的數據一致

重點:復制過程有一個很重要的限制,即復制在 Slave 上是串行化的,也就是說Master 上的并行更新操作不能在 Slave 上并行操作

二、讀寫分離

(1)讀寫分離的概念

讀寫分離:讀寫分離就是只在主服務器上寫,只在從服務器上讀。基本的原理是讓主數據庫處理事務性增、改、刪操作(INSERT、UPDATE、DELETE),而從數據庫處理SELECT查詢操作。數據庫復制被用來把事務性操作導致的變更同步到集群中的從數據庫。

(2)讀寫分離的作用

  •  因為數據庫的"寫"(寫10000條數據可能要3分鐘)操作是比較耗時的。但是數據庫的"讀"(讀10000條數據可能只要5秒鐘)。
  • 所以讀寫分離,解決的是,數據庫的寫入,影響了查詢的效率。注意:數據庫不一定要讀寫分離,如果程序使用數據庫較多時,而更新少,查詢多的情況下會考慮使用。利用數據庫主從同步,再通過讀寫分離可以分擔數據庫壓力,提高性能

(3)MySQL 讀寫分離原理

  • 讀寫分離就是只在主服務器上寫,只在從服務器上讀
  • 基本的原理是讓主數據庫處理事務性查詢,而從數據庫處理 select 查詢
  • 數據庫復制被用來把主數據庫上事務性查詢導致的變更同步到集群中的從數據庫

(4)常見的 MySQL 讀寫分離

1)基于程序代碼內部實現

1.在代碼中根據 select、insert 進行路由分類,這類方法也是目前生產環境應用最廣泛的。

2.優缺點:

  • 優點是性能較好,因為在程序代碼中實現,不需要增加額外的設備為硬件開支;
  • 缺點是需要開發人員來實現,運維人員無從下手。

3.并不是所有的應用都適合在程序代碼中實現讀寫分離,像一些大型復雜的Java應用,如果在程序代碼中實現讀寫分離對代碼改動就較大。

2)基于中間代理層實現

1.代理一般位于客戶端和服務器之間,代理服務器接到客戶端請求后通過判斷后轉發到后端數據庫,有以下代表性程序:

  • MySQL-Proxy:MySQL-Proxy 為 MySQL 開源項目,通過其自帶的 lua 腳本進行SQL 判斷。
  • Atlas:是由奇虎360的Web平臺部基礎架構團隊開發維護的一個基于MySQL協議的數據中間層項目。它是在mysql-proxy 0.8.2版本的基礎上,對其進行了優化,增加了一些新的功能特性。360內部使用Atlas運行的mysql業務,每天承載的讀寫請求數達幾十億條。支持事物以及存儲過程。
  • Amoeba:由陳思儒開發,作者曾就職于阿里巴巴。該程序由Java語言進行開發,阿里巴巴將其用于生產環境。但是它不支持事務和存儲過程。

2.由于使用MySQL Proxy需要寫大量的Lua腳本,這些Lua腳本不是現成的,而需要自己編寫,這對于并不熟悉MySQL Proxy內置變量和MySQL Protocol的人來說是非常困難的。

3.Amoeba是一個非常容易使用,可移植性非常強的軟件,因此它在生產環境中被廣泛用于數據庫的代理層。

三、MySQL主從復制實驗部署

需要的相關軟降包
amoeba-mysql-binary-2.2.0.tar.gz
jdk-6u14-linux-x64.bin
mysql壓縮包

(1)主從復制實驗步驟及準備

實驗步驟
第一步:客戶端client訪問代理服務器amoeba
第二步:代理服務器讀寫判斷
寫操作:寫入到主服務器
第三步:主服務器將增刪改寫入自己二進制日志
第四步:從服務器將主服務器的二進制日志同步至自己中繼日志
第五步:從服務器重放中繼日志到數據庫中
讀操作:直接訪問從服務器
最終結果:降低負載,起到負載均衡作用
主機 操作系統 IP地址 所需工具/軟件/安裝包

Amoeba CentOS7  192.168.71.10 jdk-6u14-linux-x64.bin、amoeba-mysql-binary-2.2.0.tar.gz
Master CentOS7 192.168.71.12 ntp 、 mysql-boost-5.7.20.tar.gz
Slave1 CentOS7 192.168.71.13 ntp 、ntpdate 、 mysql-boost-5.7.20.tar.gz
Slave2 CentOS7 192.168.71.14 ntp 、ntpdate 、mysql-boost-5.7.20.tar.gz
客戶端 CentOS7 192.168.71.15

1.關閉防火墻及安全機制

四臺服務器都要關閉

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

2.安裝時間同步服務ntp

(1)主服務器

yum -y install ntp

vim /etc/ntp.conf
##---------末尾添加---------
server 127.127.71.0           #設置本地是時鐘源,注意修改網段
fudge 127.127.71.0 stratum 8  #設置時間層級為8(限制在15內)

service ntpd start

(2)兩個從服務器

yum -y install ntp ntpdate

service ntpd start

/usr/sbin/ntpdate 192.168.71.12  #進行時間同步,指向Master服務器IP

crontab -e     #設置計劃任務每個半個小時同步一次時間
*/30 * * * * /usr/sbin/ntpdate 192.168.71.12


3.主服務器的mysql配置

vim /etc/my.cnf
server-id = 1
log-bin=master-bin       #添加,主服務器開啟二進制日志
log-slave-updates=true   #添加,允許從服務器更新二進制日志

systemctl restart mysqld

mysql -u root -p
grant replication slave on *.* to 'myslave'@'192.168.71.%' identified by '123'; #對從服務器提權
#grant 授權
#replication 復制
#允許網段為192.168.71的使用密碼123對所有表庫都可以復制

flush privileges;

show master status;
#File 列顯示日志名,Fosition 列顯示偏移量

4.從服務器的mysql配置

Slave1服務器:192.168.163.13
Slave2服務器:192.168.163.14

1)修改配置文件

vim /etc/my.cnf
#修改,注意id與Master的不同,兩個Slave的id也要不同
server-id = 2

#添加,開啟中繼日志,從主服務器上同步日志文件記錄到本地
relay-log=relay-log-bin

#添加,定義中繼日志文件的位置和名稱
relay-log-index=slave-relay-bin.index

systemctl restart mysqld

slave1


slave2

2)從服務器 對數據庫進行操作

mysql -u root - p123
change master to master_host='192.168.71.12',master_user='myslave',master_password='123',master_log_file='master-bin.000002',master_log_pos=306; #show master status;所輸出的二進制文件和位置點一樣
     #配置同步,注意master_log_file 和master_log_pos的值要與Master查詢的一致
	 
start slave;                     #啟動同步,如有報錯執行reset slave;
show slave status\G;             #查看Slave 狀態
//確保 IO 和 SQL 線程都是Yes,代表同步正常。
Slave_IO_Running:Yes            #負責與主機的io通信
Slave_SQL_Running:Yes           #負責自己的slave mysql進程




5.驗證結果

主服務器上創建一個庫驗,在從服務器上查看

四、MySQL讀寫分離實驗

Amoeba服務器(192.168.153.30)
安裝Java 環境
因為Amoeba 基于是jdk1.5 開發的,所以官方推薦使用jdk1.5或1.6版本,高版本不建議使用。

1)創建jdk java環境

cd /opt/
#將jdk-6u14-linux-x64.bin 和 amoeba-mysql-binary-2.2.0.tar.gz上傳到/opt目錄下

cp jdk-6u14-linux-x64.bin /usr/local/
cd /usr/local/
chmod +x jdk-6u14-linux-x64.bin
./jdk-6u14-linux-x64.bin
//按yes,按enter

mv jdk1.6.0_14/ /usr/1ocal/jdk1.6

vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=SCLASSPATH:$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
java -version



2)安裝 Amoeba軟件

mkdir /usr/local/amoeba
tar zxvf /opt/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 說明安裝成功

3)在主從服務器的mysql上授權

Master服務器:192.168.71.12
Slave1服務器:192.168.71.13
Slave2服務器:192.168.71.14

先在Master、Slave1、Slave2 的mysql上開放權限給 Amoeba 訪問

grant all on *.* to 'test'@'192.168.163.%' identified by 'abc123';

4)配置amoeba服務在阿米巴上配置

cd /usr/local/amoeba/conf/

cp amoeba.xml amoeba.xml.bak     #對配置文件備份
vim amoeba.xml                   #修改amoeba配置文件

property name="user">amoeba/property>          #30行修改

property name="password">abc123/property>      #32行修改 客戶端連接amoeba服務器的密碼

property.name="defaultPool">master/property>   #115行修改 設置默認池

property name="writePool">master/property>     #117行去掉注釋 設置master為寫池
property name="readPool">slaves/property>		 #slaves 為讀池

cp dbServers.xml dbServers.xml.bak
vim dbServers.xml                     #修改數據庫配置文件

!-- property name="schema"> test/property> -->      #23行,注釋掉   作用: 默認進入test庫以防mysql 中沒有test庫時,會報錯

property name="user">test/property>                  #26行,修改主從服務器上提權的用戶和密碼

property.name-"password">123/property>           #28-30行,去掉注釋

dbServer name= "master" parent="abstractServer">      #45行,修改,設置主服務器的名Master

property name= "ipAddress">192.168.71.12/property>  #48行,修改,設置主服務器的地址

dbServer name="slave1"  parent="abstractServer">      #52行,修改,設置從服務器的名slave1

property.name="ipAddress">192.168.71.13/property>   #55行,修改,設置從服務器1的地址

dbServer name="slave2 " parent="abstractserver">      #59行,復制上面6行粘貼,設置從服務器2的名slave2和地址
property, name="ipAddress">192.168.71.14/property>

dbServer name="slaves" virtual="true">                #65行,修改

property name="poolNames">slave1,slave2/property>    #71行,修改

/usr/local/amoeba/bin/amoeba start      #啟動Amoeba軟件,按ctrl+c 返回
netstat -anpt | grep java               #查看8066端口是否開啟,默認端口為TCP 8066


5)測試讀寫分離

在客戶端服務器上測試

yum install -y mysql mysql-server #快速安裝mysql,也可以選擇編譯安裝

mysql -u amoeba -pabc123 -h 192.168.71.20 -P8066


主從服務 v器上都可以看到該表

通過amoeba服務器代理訪問mysql ,在通過客戶端連接mysql后寫入的數據只有主服務會記錄,然后同步給從服務器

stop slave;                                    #關閉同步寫入數據
use school;
//在slave1上:
insert into test1 values('1','slave1');

//在slave2上:
insert into test1 values('2','slave2');

在主服務器上插入數據

insert into test1 values('3','master');

在客戶端中向表插入數據

//在客戶端服務器上:
use school;
select * from test1;    //客戶端會分別向slave1和s1ave2讀取數據,顯示的只有在兩個從服務器上添加的數據,沒有在主服務器上添加的數據

insert into test1 values('4','climet');   //只有主服務器上有此數據


在主服務器上查看數據


同時開啟兩個從服務器,查看表格記錄

到此這篇關于詳解MySQL主從復制及讀寫分離的文章就介紹到這了,更多相關MySQL主從復制及讀寫分離內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • MySQL5.7并行復制原理及實現
  • MySQL主從復制斷開的常用修復方法
  • MySQL復制問題的三個參數分析
  • MySql主從復制機制全面解析
  • MySQL系列之十三 MySQL的復制

標簽:龍巖 迪慶 徐州 南充 西寧 麗水 自貢 無錫

巨人網絡通訊聲明:本文標題《詳解MySQL主從復制及讀寫分離》,本文關鍵詞  詳解,MySQL,主從,復制,及,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解MySQL主從復制及讀寫分離》相關的同類信息!
  • 本頁收集關于詳解MySQL主從復制及讀寫分離的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲欧洲av一区二区三区久久| wwwwxxxxx欧美| 精品少妇一区二区三区视频免付费| 日韩欧美国产一二三区| 亚洲尤物视频在线| 在线播放91灌醉迷j高跟美女| 日欧美一区二区| 日韩一区二区三区观看| 亚洲午夜影视影院在线观看| 日韩精品一区二区三区中文不卡| 91视频免费播放| 国产一区91精品张津瑜| 亚洲第一狼人社区| 中文字幕亚洲电影| 欧美精品一区男女天堂| 欧美在线free| 在线观看日韩国产| 91精品福利视频| 91网站最新网址| 91欧美激情一区二区三区成人| 成人免费av在线| 国产一区免费电影| 韩日欧美一区二区三区| 五月综合激情网| 亚洲国产综合色| 亚洲五月六月丁香激情| 五月激情综合网| 毛片av一区二区| 国产一区二区三区高清播放| 亚洲一区影音先锋| 亚洲一区二区影院| 日日骚欧美日韩| 蜜臀av一区二区| 国产高清在线观看免费不卡| 成人性生交大片免费看中文| 色偷偷久久一区二区三区| 欧美日韩一区二区欧美激情| 日韩美女视频在线| 中文字幕二三区不卡| 亚洲精品亚洲人成人网| 三级久久三级久久久| 久久机这里只有精品| 丁香桃色午夜亚洲一区二区三区| 91亚洲精品乱码久久久久久蜜桃| 欧美老肥妇做.爰bbww| ww亚洲ww在线观看国产| 亚洲女性喷水在线观看一区| 日韩精品每日更新| 国产成人免费xxxxxxxx| 欧美色国产精品| 久久丝袜美腿综合| 一区二区三区四区在线| 久久疯狂做爰流白浆xx| 北条麻妃国产九九精品视频| 欧美日韩一区精品| 久久精品在这里| 亚洲欧美偷拍卡通变态| 麻豆传媒一区二区三区| 成人99免费视频| 91精品福利在线一区二区三区| 亚洲国产精品成人综合| 日韩高清在线一区| 99久久免费国产| 日韩一级二级三级精品视频| 亚洲理论在线观看| 国产激情视频一区二区在线观看 | 亚洲综合视频网| 国产一区欧美日韩| 欧美一区二区视频在线观看2022| 中文字幕在线观看不卡| 久久国产免费看| 在线观看不卡视频| 国产精品蜜臀在线观看| 久久国产精品99精品国产| 欧洲av在线精品| 中文字幕人成不卡一区| 国产黄色精品网站| 精品少妇一区二区三区| 日韩制服丝袜av| 欧美日韩在线综合| 亚洲综合激情网| 91麻豆精品秘密| 中文一区在线播放| 国产二区国产一区在线观看| 精品久久一区二区| 全国精品久久少妇| 欧美一区中文字幕| 日韩精品欧美精品| 欧美一区二区三区在线观看| 亚洲一区二区三区不卡国产欧美| 99久久99久久久精品齐齐| 国产欧美日韩麻豆91| 狠狠色狠狠色综合日日91app| 日韩一区二区在线免费观看| 日韩av在线播放中文字幕| 欧美日韩情趣电影| 午夜国产精品影院在线观看| 国产三级三级三级精品8ⅰ区| 亚洲网友自拍偷拍| 7777精品伊人久久久大香线蕉的 | 国产午夜精品久久久久久免费视| 一区二区三区四区在线免费观看| 成人av网站免费| 亚洲人成小说网站色在线| 91网站最新网址| 亚洲欧洲精品一区二区精品久久久| 久久电影网电视剧免费观看| 欧美不卡123| 狠狠色狠狠色合久久伊人| 日本一区二区三级电影在线观看 | 韩国欧美国产一区| 精品国产欧美一区二区| 激情国产一区二区 | 久久午夜羞羞影院免费观看| 久久国产麻豆精品| 国产日韩欧美综合一区| 91小宝寻花一区二区三区| 亚洲一区二区三区不卡国产欧美| 欧美日韩激情一区二区三区| 日韩av电影天堂| 久久久久久久久久看片| 国产白丝网站精品污在线入口| 中文字幕成人在线观看| 色婷婷国产精品久久包臀| 日韩vs国产vs欧美| 国产欧美精品一区二区三区四区 | 欧美日韩在线电影| 日日噜噜夜夜狠狠视频欧美人| 欧美一区二区视频网站| 国产在线播放一区三区四| 亚洲色图一区二区三区| 3d成人h动漫网站入口| 国产精品888| 亚洲综合精品自拍| 久久美女高清视频 | 欧美不卡在线视频| 99久久99久久精品国产片果冻| 亚洲一区二区三区激情| 久久一夜天堂av一区二区三区| av亚洲精华国产精华| 免费精品视频最新在线| 久久久五月婷婷| 欧美无砖专区一中文字| 国产精品伊人色| 亚洲www啪成人一区二区麻豆| 久久九九久精品国产免费直播| 欧洲精品一区二区| 国产福利一区二区| 日日欢夜夜爽一区| 一区二区三区欧美在线观看| 国产亚洲自拍一区| 欧美精品在线观看播放| 91性感美女视频| 国产精品18久久久久| 亚洲国产精华液网站w| 欧美偷拍一区二区| 国产做a爰片久久毛片| 亚洲黄色av一区| 久久精品水蜜桃av综合天堂| 色综合网站在线| 国产成人综合亚洲91猫咪| 国产日产欧美一区| 欧美日韩一区二区在线观看视频 | 欧美日本国产一区| 99精品视频一区| 国产aⅴ精品一区二区三区色成熟| 亚洲国产精品影院| 亚洲欧洲综合另类| 亚洲欧洲精品一区二区精品久久久| 日韩精品最新网址| 欧美一级理论性理论a| 欧美日韩视频在线观看一区二区三区 | 韩国欧美一区二区| 一二三区精品视频| 国产精品国产自产拍高清av| 亚洲精品在线观看视频| 538prom精品视频线放| 色综合一区二区三区| 国产一区在线精品| 麻豆一区二区三| 日本女人一区二区三区| 丝袜国产日韩另类美女| 亚洲成人www| 人妖欧美一区二区| 美女国产一区二区三区| 麻豆视频一区二区| 精品一区二区三区免费| 久久99精品一区二区三区 | 成人av第一页| 日韩电影在线观看网站| 亚洲国产sm捆绑调教视频| 亚洲欧美日韩一区| 亚洲特级片在线| 国产女主播视频一区二区| 国产欧美一二三区| 国产精品久久久久久一区二区三区 | 精品一区二区三区在线视频| 久色婷婷小香蕉久久| 国产高清不卡一区二区| 92精品国产成人观看免费|