MySQL集群配置實現(xiàn)主從配置及讀寫分離

業(yè)務場景

由于性能要求窟社,現(xiàn)需要將后端數(shù)據(jù)庫服務器搭建集群痊末,實現(xiàn)的效果為主服務器僅進行寫操作(增、刪内狸、改)检眯;從服務器進行讀操作(查詢)。

實現(xiàn)原理

Mysql服務器之間的主從同步是基于二進制日志(binary log)機制昆淡,主服務器使用二進制日志來記錄數(shù)據(jù)庫的變動情況锰瘸,從服務器通過讀取和執(zhí)行該日志文件來保持和主服務器的數(shù)據(jù)一致。

主從復制具體配置

1 主服務器(Master)配置

1.1 修改Master的配置文件

Linux環(huán)境下昂灵,Mysql的配置文件是在 /etc/my.conf避凝,修改該配置文件:

[mysqld]
log-bin=mysql-bin
server-id=1 

其中,server-id用于表示唯一的數(shù)據(jù)庫眨补,如果省去則主服務器拒絕來自從服務器的任何連接恕曲。
可選配置:
binlog-ignore-db=information_schema,表示同步的時候ignore的數(shù)據(jù)庫;
binlog-do-db=xxx渤涌,表示制定需要同步的數(shù)據(jù)庫佩谣。

修改樣例
1.2 賦予從庫賬號權限
  • Mater服務器上進入Mysql:mysql -u root -p
  • 服務從服務器賬號權限
mysql>grant file on *.* to 'xxx'@'slave_ip' identified by 'xxx_password';
mysql>grant replication slave on *.* to 'xxx'@'slave_ip' identified by 'xxx_password';
mysql>flush privileges;

其中xxxslave_password為用戶自定義用戶名,用于從服務器連接主服務器实蓬。

  • 重啟mysql服務
$systemctl restart mysqld
  • 登錄mysql茸俭,查看狀態(tài)
mysql>show master status;

主服務器狀態(tài)

其中吊履,FilePosition在配置從服務器的時候需要用到调鬓,Binglog_Do_DB是需要同步的數(shù)據(jù)庫艇炎。

2 從服務器(Slave)配置

從服務器配置用戶名和密碼,連接到主服務器腾窝,請求讀取二進制文件缀踪,然后把讀取的二進制文件寫入到本地的Realy log(中繼日志)。

2.1 修改/etc/my.conf配置如

[mysqld]
log-bin=mysql-bin
server-id=2
relay_log=mysql-relay-bin
log_slave_updates=1
read_only=1
配置示例

2.2 從服務器連接主服務器

上述配置完成之后虹脯,重啟mysql服務驴娃,然后進入mysql控制臺

mysql>change master to master_host='master_ip',master_user='root',master_password='123456',master_log_file='mysql-bin.00002',mster_log_pos=123;

其中,master_log_file配置的是Master的FIle選項循集,master_log_pos配置的是Mater的Positon選項唇敞,這里需要與自己的Master進行對應。
可以通過mysql>show slave status;查看配置信息咒彤。
至此疆柔,mysql的主從復制配置已完成,可以通過Navicat等客戶端镶柱,連接主從服務器旷档,在主服務器中添加相關信息,查看是否同步到從服務器歇拆。

讀寫分離

讀寫分離有兩種實現(xiàn)方式彬犯,一種是業(yè)務代碼實現(xiàn),通過注解結合AOP實現(xiàn)查吊,另一種通過中間件實現(xiàn)谐区,常見的有mysql-proxycobar逻卖,mycat等宋列,本文選取的是mysql-proxy未檩。
接下來講解如何通過mysql-proxy實現(xiàn)讀寫分離冀宴。

1 mysql-proxy安裝

  • yum安裝
yum install mysql-proxy

2 配置環(huán)境變量

  1. 打開配置文件
vim ~/.bash_profile
  1. 添加mysql-proxy的環(huán)境變量
mysql-proxy環(huán)境變量
  1. 重啟使配置生效:
source ~/.bash_profile

3 修改mysql-proxy配置信息

  1. 修改 lua 腳本:
vim /mysql-proxy_path/share/doc/mysql-proxy/rw-splitting.lua

其中纫事,mysql-proxy_path 為 mysql-proxy 安裝路徑埋凯,
Lua腳本默認最小連接數(shù)為4個,最大連接數(shù)為8個以上的客戶端連接才會實現(xiàn)讀寫分離延旧,這里將最小連接數(shù)和最大連接數(shù)改為1和2灸撰。

修改連接數(shù)
  1. 增加 mysql-proxy 配置伞插,在 mysql-proxy 安裝路徑下罚缕,新建 conf 文件夾艇纺,增加mysql-proxy.conf,新增如下內(nèi)容:
[mysql-proxy]
user=root
proxy-address=0.0.0.0
proxy-backend-addresses=207.207.88.88:3306
proxy-read-only-backend-addresses=208.208.30.99:3306
proxy-lua-script=/opt/mysql-proxy/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit/share/doc/mysql-proxy/rw-splitting.lua
log-file=/var/log/mysqllog/mysql-proxy.log
log-level=debug
daemon=true
keepalive=true

其中:
user:運行mysql-proxy用戶;
proxy-address:mysql-proxy運行的ip和端口黔衡,如果ip配置為0.0.0.0表示不限制IP蚓聘,mysql-proxy默認端口為4040;
proxy-backend-addresses:master服務器地址盟劫,可設置多項夜牡,用逗號分隔,@后面的數(shù)字代表權重侣签,用來作負載均衡塘装,若省略則默認為1(待測試)。影所;
proxy-read-only-backend-addresses:slave服務器地址蹦肴,可設置多項,用逗號分隔型檀;
proxy-lua-script:lua 腳本位置。
注意: mysql-proxy.conf 文件權限必須設置為660听盖,不然會報錯胀溺。
chmod 660 /xx/mysql-proxy.conf

  1. 啟動mysql-proxy:
mysql-proxy --defaults-file=/xx/conf/mysql-proxy.conf

xx為 mysql-proxy 安裝路徑。

  1. 在Master上授權用戶:
mysql>grant all privileges on *.* to 'root'@'%' identified by 'password';

% 表示所有連接的ip皆看,這里可以換為mysql-proxy服務器IP仓坞。

  1. 使用 mysql-proxy 代理登錄:
mysql>mysql -h mysql-proxy-ip -u root -p 

參考

MySQL5.6 數(shù)據(jù)庫主從(Master/Slave)同步安裝與配置詳解
mysql讀寫分離原理及配置
搭建MySQL主從服務器并并通過mysql-proxy實現(xiàn)讀寫分離
Linux:使用mysql-proxy實現(xiàn)mysql的讀寫分離

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市腰吟,隨后出現(xiàn)的幾起案子无埃,更是在濱河造成了極大的恐慌,老刑警劉巖毛雇,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嫉称,死亡現(xiàn)場離奇詭異,居然都是意外死亡灵疮,警方通過查閱死者的電腦和手機织阅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來震捣,“玉大人荔棉,你說我怎么就攤上這事≥镉” “怎么了润樱?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長羡棵。 經(jīng)常有香客問我壹若,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任舌稀,我火速辦了婚禮啊犬,結果婚禮上,老公的妹妹穿的比我還像新娘壁查。我一直安慰自己觉至,他們只是感情好,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布睡腿。 她就那樣靜靜地躺著语御,像睡著了一般。 火紅的嫁衣襯著肌膚如雪席怪。 梳的紋絲不亂的頭發(fā)上应闯,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天,我揣著相機與錄音挂捻,去河邊找鬼碉纺。 笑死,一個胖子當著我的面吹牛刻撒,可吹牛的內(nèi)容都是我干的骨田。 我是一名探鬼主播,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼声怔,長吁一口氣:“原來是場噩夢啊……” “哼态贤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起醋火,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤悠汽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后芥驳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柿冲,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年兆旬,在試婚紗的時候發(fā)現(xiàn)自己被綠了姻采。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡爵憎,死狀恐怖慨亲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宝鼓,我是刑警寧澤刑棵,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站愚铡,受9級特大地震影響蛉签,放射性物質(zhì)發(fā)生泄漏胡陪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一碍舍、第九天 我趴在偏房一處隱蔽的房頂上張望柠座。 院中可真熱鬧,春花似錦片橡、人聲如沸妈经。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吹泡。三九已至,卻和暖如春经瓷,著一層夾襖步出監(jiān)牢的瞬間爆哑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工舆吮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留揭朝,地道東北人。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓色冀,卻偏偏與公主長得像潭袱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子呐伞,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 主:192.168.122.11從:192.168.122.22代理:192.168.122.33 主和從上分別是...
    不排版閱讀 477評論 0 3
  • 主從復制(Master-Slave)與讀寫分離(Mysql作為目前世界上使用最廣泛的免費數(shù)據(jù)庫敌卓,相信所有從事系統(tǒng)運...
    薛延祥閱讀 277評論 0 0
  • LAMP+Redis+Discuz緩解了MySQL部分壓力,但是如果訪問量非常大,Redis緩存中第一次沒有緩存數(shù)...
    childhood_1013閱讀 261評論 0 0
  • 其中Amoeba for MySQL也是實現(xiàn)讀寫分離 環(huán)境描述: 操作系統(tǒng):CentOS6.5 32位 主服務器M...
    F的平方閱讀 568評論 2 0
  • 一慎式、什么是Mysql主從復制 MySQL主從復制是其最重要的功能之一伶氢。主從復制是指一臺服務器充當主數(shù)據(jù)庫服務器,另...
    人在碼途閱讀 2,758評論 0 23