• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于MyCat的數(shù)據(jù)庫讀寫分離技術(shù)的研究與應(yīng)用

      2021-11-03 13:08張清濤
      現(xiàn)代信息科技 2021年8期
      關(guān)鍵詞:中間件

      DOI:10.19850/j.cnki.2096-4706.2021.08.035

      摘? 要:為了解決大型應(yīng)用系統(tǒng)中后臺數(shù)據(jù)庫讀寫性能瓶頸的問題,在MariaDB數(shù)據(jù)庫構(gòu)建的主從復(fù)制集群中引入MyCat中間件服務(wù)器,安裝必要的軟件包、修改MyCat配置文件,搭建可讀寫分離的數(shù)據(jù)庫服務(wù)器集群,從而解決了對一個數(shù)據(jù)庫同時進(jìn)行寫、讀操作時性能會嚴(yán)重下降的問題,并提高了在高并發(fā)環(huán)境下數(shù)據(jù)庫集群的整體處理性能。

      關(guān)鍵詞:MyCat;讀寫分離;中間件;MariaDB

      中圖分類號:TP311.1? ? ? 文獻(xiàn)標(biāo)識碼:A ? ?文章編號:2096-4706(2021)08-0125-03

      Research and Application of Database Read-Write Separation Technology?Based on MyCat

      ZHANG Qingtao

      (Hebei Petroleum University of Technology,Chengde? 067000,China)

      Abstract:In order to solve the problem of the bottleneck of read and write performance of background database in large application system,MyCat middleware server is introduced into the master-slave replication cluster which is built in MariaDB database. The necessary software package is installed,the configuration file of MyCat is modified,and the database server cluster with read-write separation is built. Thus,the problem that the performance will be seriously degraded when carrying out writing and reading operation to a database at the same time is solved,and the overall processing performance of database cluster in high concurrent environment is improved.

      Keywords:MyCat;read-write separation;middleware;MariaDB

      0? 引? 言

      每學(xué)期末,筆者單位都會出現(xiàn)大量學(xué)生集中在教務(wù)系統(tǒng)進(jìn)行成績查詢、課程查詢、選課等操作,致使后臺數(shù)據(jù)庫服務(wù)器不堪重負(fù)、出現(xiàn)性能下降甚至崩潰的情況。這一方面是因?yàn)榇罅康臄?shù)據(jù)庫并發(fā)操作超出了單臺數(shù)據(jù)庫服務(wù)器的最大處理能力;另一方面是因?yàn)樵趯?shù)據(jù)庫進(jìn)行寫操作時,讀性能會嚴(yán)重下降。

      單位系統(tǒng)前臺和應(yīng)用系統(tǒng)業(yè)務(wù)邏輯本身采用反向代理技術(shù)實(shí)現(xiàn)Web服務(wù)器負(fù)載均衡,可以解決高并發(fā)訪問問題;但唯獨(dú)系統(tǒng)的后臺基石——數(shù)據(jù)庫服務(wù)器在解決高并發(fā)訪問難題上可用手段一直較少。在存儲層面直接采用水平分割、垂直分割等分布式技術(shù)來增強(qiáng)數(shù)據(jù)庫系統(tǒng)吞吐性能,可謂困難重重,后臺數(shù)據(jù)庫的性能瓶頸亟需解決。

      MyCat中間件的使用就是解決上述問題的方法之一。

      1? 原理

      MyCat是一個開源的數(shù)據(jù)庫中間件產(chǎn)品,在高并發(fā)的企業(yè)應(yīng)用中可以用于搭建大型數(shù)據(jù)庫集群,和開源的MariaDB配合可以作為Oracle集群的一種免費(fèi)替代方案。在集群中部分節(jié)點(diǎn)負(fù)責(zé)數(shù)據(jù)寫入,部分節(jié)點(diǎn)負(fù)責(zé)數(shù)據(jù)讀出,可以分擔(dān)高并發(fā)環(huán)境對數(shù)據(jù)庫服務(wù)器的訪問壓力。

      MyCat中間件引入邏輯庫(Schema)的概念。在系統(tǒng)構(gòu)架中,一個邏輯庫和數(shù)據(jù)庫集群中多個數(shù)據(jù)節(jié)點(diǎn)(DataNode)中的物理數(shù)據(jù)庫相對應(yīng)。在這種映射關(guān)系中,可以對數(shù)據(jù)庫進(jìn)行水平分割或垂直分割。在比較簡單的讀寫分離模型下,MyCat讀寫分離模型架構(gòu)如圖1所示。

      該簡單模型包括一個主數(shù)據(jù)節(jié)點(diǎn)和一個從數(shù)據(jù)節(jié)點(diǎn)。配置數(shù)據(jù)庫讀寫分離,需要以數(shù)據(jù)庫主從復(fù)制為基礎(chǔ)。因?yàn)樽x寫分離的操作,必然引起集群中數(shù)據(jù)節(jié)點(diǎn)中數(shù)據(jù)的不一致,需要借助后臺主從復(fù)制機(jī)制實(shí)現(xiàn)數(shù)據(jù)節(jié)點(diǎn)間數(shù)據(jù)的自動同步。在集群中主數(shù)據(jù)庫作為寫數(shù)據(jù)庫,從數(shù)據(jù)庫作為讀數(shù)據(jù)庫。

      2? 部署MyCat服務(wù)器

      2.1? 基本環(huán)境準(zhǔn)備

      在讀寫分離的基本服務(wù)器拓?fù)渲?,部署了可以?shí)現(xiàn)主從復(fù)制的主數(shù)據(jù)節(jié)點(diǎn)和從數(shù)據(jù)節(jié)點(diǎn)——db_m和db_s。

      db_m和db_sIP地址分別為192.168.10.1/24和192.168.10.2/ 24,這兩個數(shù)據(jù)節(jié)點(diǎn)均需要安裝mariadb和mariadb-server兩個rpm軟件包,并啟動mariadb服務(wù)。建立員工示例數(shù)據(jù)庫staff,然后授權(quán)mariadb的root管理員賬戶可以本地和遠(yuǎn)程訪問staff數(shù)據(jù)庫:

      MariaDB [(none)]> grant all privileges on staff.* to root@localhost identified by "000000";

      MariaDB [(none)]> grant all privileges on staff.* to root@'%' identified by "000000";

      Grant為MariaDB的用戶創(chuàng)建和授權(quán)語句。和MySQL數(shù)據(jù)庫一樣,MariaDB的用戶是區(qū)分本地訪問和遠(yuǎn)程訪問的,授權(quán)需要分開設(shè)置。“all privileges”表示所有訪問權(quán)限,“root@'%'”中的“%”用于匹配所有客戶端主機(jī)。

      為了簡便,這里設(shè)置密碼為“000000”,在生產(chǎn)環(huán)境下不能使用這種簡單密碼,會帶來很高的安全風(fēng)險(xiǎn),尤其是在root用戶可以遠(yuǎn)程登錄的情況下。

      然后配置MariaDB,配置db_m為主數(shù)據(jù)庫,db_s為從數(shù)據(jù)庫。為了實(shí)現(xiàn)讀寫分離繼續(xù)增加第三個節(jié)點(diǎn)——MyCat服務(wù)器。配置其IP地址為192.168.10.3/24,服務(wù)器名為db_mycat。

      2.2? 安裝MyCat軟件包

      目前MyCat軟件包的最新版本是2.0,這里使用的是較為成熟的1.6版本,使用的MyCat軟件包格式為一個“.tar.gz”壓縮包,可以直接使用下面命令進(jìn)行解壓縮:

      tar –zxvf Mycat-server-*.tar.gz –C /opt/mycat

      這里使用-C選項(xiàng)指定解壓縮后文件存儲路徑為/opt/mycat,Linux命令、選項(xiàng)和文件名都區(qū)分大小寫。

      修改文件的權(quán)限,開放其對所有用戶的讀、寫、執(zhí)行權(quán)限:

      chmod -R a=rwx /opt/mycat/

      這里的-R選項(xiàng)表示遞歸修改目錄下所有子目錄和文件的權(quán)限?!癮=rwx”表示設(shè)置所有用戶(屬主、屬組和其他用戶)權(quán)限為讀、寫、執(zhí)行,該選項(xiàng)也可以用數(shù)字模式“777”代替。

      2.3? 編輯邏輯庫配置文件

      在配置文件/opt/mycat/conf/schema.xml中定義了用戶可以訪問的邏輯庫,這是外層應(yīng)用看到的數(shù)據(jù)庫名。邏輯庫對應(yīng)了用于實(shí)現(xiàn)讀寫分離的主、從數(shù)據(jù)節(jié)點(diǎn)中的真實(shí)數(shù)據(jù)庫。這里對應(yīng)兩個節(jié)點(diǎn)的物理數(shù)據(jù)庫staff,建立一個邏輯數(shù)據(jù)庫STAFF。下面修改邏輯庫配置文件schema.xml實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離:

      vi /opt/mycat/conf/schema.xml

      select user()

      <!--可以有多個writeHost-->

      <!--可以有多個readHost-->

      對邏輯庫STAFF的寫操作會被MyCat分流到db_m節(jié)點(diǎn),對STAFF的讀操作會被分流到db_s節(jié)點(diǎn)。balance="3"表示所有讀操作全部分配到readHost指定的數(shù)據(jù)庫進(jìn)行,writeHost只負(fù)責(zé)寫。這里的readHost和wiriteHost有隸屬關(guān)聯(lián),其中“host”指定的數(shù)據(jù)庫服務(wù)器名和實(shí)際的服務(wù)器計(jì)算機(jī)名并不是一個概念。

      如果balance取值為0表示不啟用讀寫分離機(jī)制,讀寫操作都在writeHost上進(jìn)行。如果取值為2,表示writeHost和readHost都參與讀的負(fù)載均衡,所有select語句都會被隨機(jī)分配到這些主機(jī)上。

      writeType參數(shù)可以取“0”或者“1”,取0表示寫操作只發(fā)給第一臺writeHost,取2表示隨機(jī)發(fā)送給所有writeHost。

      MariaDB和MySQL數(shù)據(jù)庫一樣,默認(rèn)的服務(wù)端口號是3306。

      2.4? 配置邏輯庫訪問用戶

      下面配置針對邏輯庫的訪問方式(用戶名和密碼)。

      /opt/mycat/conf/server.xml文件中包含MyCat的系統(tǒng)配置信息。為了使得特定用戶可以訪問特定的邏輯庫,需要在配置文件最后配置訪問邏輯庫的用戶名、密碼及邏輯庫名。下面通過修改server.xml文件配置訪問邏輯庫的用戶名、密碼:

      <訪問密碼>

      <邏輯庫名>

      這里可以配置用戶名為“root”,密碼為“000000”,邏輯庫名為STAFF。生產(chǎn)環(huán)境下應(yīng)該使用滿足密碼復(fù)雜性的密碼。

      2.5? 指定jdk路徑并啟動MyCat服務(wù)

      修改MyCat啟動腳本/opt/mycat/bin/startup_nowrap.sh,在文件中添加如下代碼指定jdk路徑:

      JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk/

      這里指定的JDK路徑要以本機(jī)實(shí)際環(huán)境為準(zhǔn)。

      啟動mycat:

      bash/opt/mycat/bin/startup_nowrap.sh

      使用“bash”命令執(zhí)行一個程序不需要程序文件有可執(zhí)行權(quán)限。如果文件已經(jīng)具備了可執(zhí)行權(quán)限,也可以直接在Shell中輸入程序文件的絕對路徑,如“/opt/mycat/bin/startup_nowrap.sh”,進(jìn)行執(zhí)行。如果當(dāng)前目錄是“/opt/mycat/bin/”,也可以使用相對路徑“./startup_nowrap.sh”。即便位于程序所在目錄下,也不能僅輸入文件名去執(zhí)行一個自定義用戶程序,除非已經(jīng)把該程序文件所在路徑提前加入了系統(tǒng)的環(huán)境變量。

      3? 結(jié)? 論

      在大型的企業(yè)級應(yīng)用中,后臺數(shù)據(jù)庫的數(shù)據(jù)吞吐量往往成為整個系統(tǒng)的性能瓶頸。為了解決數(shù)據(jù)庫性能瓶頸問題,這里使用了開源的MyCat數(shù)據(jù)庫中間件和MariaDB數(shù)據(jù)庫構(gòu)建了完全免費(fèi)的讀寫分離的數(shù)據(jù)庫服務(wù)器集群,使得對數(shù)據(jù)庫的寫操作和讀操作分別由不同的數(shù)據(jù)庫服務(wù)器承擔(dān)。從而成倍地提高了數(shù)據(jù)庫服務(wù)器的可用性和吞吐性能。因?yàn)椴捎玫淖x節(jié)點(diǎn)和寫節(jié)點(diǎn)數(shù)量較少,性能提升比較有限,后續(xù)應(yīng)該根據(jù)企業(yè)業(yè)務(wù)規(guī)模去擴(kuò)展讀節(jié)點(diǎn)和寫節(jié)點(diǎn)的數(shù)量,構(gòu)建規(guī)模更大的讀寫分離的數(shù)據(jù)庫集群。

      參考文獻(xiàn):

      [1] 劉進(jìn)京.MySQL主從復(fù)制讀寫分離 [J].網(wǎng)絡(luò)安全和信息化,2016(8):64-69.

      [2] 范新民.高并發(fā)環(huán)境下MySQL軟硬件配置優(yōu)化 [J].福建師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2013,29(6):49-54.

      [3] 施瓦茨,扎伊采夫,特卡琴科.高性能MySQL:第3版 [M].寧海元,周振興,彭立勛,等譯.北京:電子工業(yè)出版社,2013.

      [4] 郭建偉.實(shí)現(xiàn)MySQL群集讀寫分離 [J].網(wǎng)絡(luò)安全和信息化,2020(5):89-93.

      [5] 劉建宏.MySQL數(shù)據(jù)庫優(yōu)化與集群 [J].數(shù)字通信世界,2017(7):47.

      [6] 谷偉,陳蓮君.基于MySQL查詢優(yōu)化技術(shù)研究 [J].微型電腦應(yīng)用,2013,30(7):48-50.

      [7] 劉建臣.處理MySQL訪問異常故障 [J].網(wǎng)絡(luò)安全和信息化,2019(12):160-161.

      [8] 趙曦,李穎,徐江.利用垂直分割技術(shù)的分布式數(shù)據(jù)庫設(shè)計(jì)研究 [J].控制工程,2018,25(1):154-159.

      作者簡介:張清濤(1980.01—),男,漢族,河北邯鄲人,講師,碩士,研究方向:計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)和云計(jì)算技術(shù)。

      收稿日期:2021-03-20

      猜你喜歡
      中間件
      我國自主可控中間件發(fā)展研究
      中間件“迭代”
      以實(shí)力證明 用事實(shí)說話
      從邊緣到主流國產(chǎn)中間件行了
      中移動集采:東方通中間件脫穎而出
      甲骨文攜合作伙伴推融合中間件11g
      國產(chǎn)中間件苦盡甘來
      基于Web?。樱澹颍觯椋悖澹蟮陌踩虚g件的優(yōu)勢及其設(shè)計(jì)與實(shí)現(xiàn)
      金蝶 引領(lǐng)中間件2.0新時代
      東方通 緊扣市場的中間件自主創(chuàng)新之路
      射阳县| 枣阳市| 黑山县| 泰安市| 聂荣县| 南漳县| 安平县| 囊谦县| 东阿县| 福安市| 辛集市| 丰都县| 锡林浩特市| 西藏| 泾川县| 皋兰县| 柘荣县| 石河子市| 金昌市| 黄浦区| 嘉义县| 金山区| 沅陵县| 偃师市| 沂源县| 清镇市| 灵武市| 枣阳市| 荥经县| 南郑县| 宜兰市| 延庆县| 丹棱县| 密山市| 城步| 望奎县| 南投市| 张北县| 佛冈县| 响水县| 岳普湖县|