• 
    

    
    

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

      實(shí)現(xiàn)MySQL群集讀寫(xiě)分離

      2020-12-29 18:53:19河南郭建偉
      網(wǎng)絡(luò)安全和信息化 2020年5期
      關(guān)鍵詞:主從配置文件命令

      ■ 河南 郭建偉

      編者按:MyCat是一個(gè)新穎的數(shù)據(jù)庫(kù)中間件,其支持事務(wù)和ACID,可以替代MySQL的加強(qiáng)版數(shù)據(jù)庫(kù),可以實(shí)現(xiàn)企業(yè)級(jí)MySQL數(shù)據(jù)庫(kù)集群,是融合了內(nèi)存緩存技術(shù)、NoSQL技術(shù)和HDFS大數(shù)據(jù)的新型SQL Server,結(jié)合傳統(tǒng)數(shù)據(jù)庫(kù)和新型分布式數(shù)據(jù)倉(cāng)庫(kù)的新一代企業(yè)級(jí)數(shù)據(jù)庫(kù)產(chǎn)品。

      安裝和配置MyCat

      在安裝MyCat之前,首先需要執(zhí)行“vi/etc/hosts”命令,將所有相關(guān)主機(jī)名和IP地址綁定起來(lái)。之后下載Sun JDK組件,例如執(zhí)行“tar zxvf/jdk-8u171-linux-x64.tar.gz”命令將其解壓。

      之后下載MyCat組件,執(zhí)行“tar zxvf Mycatserver-1.x-linux.tar.gz”命令,將其解壓,其中的“x”表示具體的版本信息。這里將JDK和MyCat均解壓到“/mysql/app”目錄中。執(zhí)行“vi~/.bashrc”命令,輸入“export JAVA_HOME=/mysql/app/jdk1.8.0_171”,“expo rt$JAVA_HOME/bin:$PATH”行,來(lái)設(shè)置環(huán)境變量,注意這是將這些環(huán)境變量權(quán)限控制到當(dāng)前用戶級(jí)別。

      執(zhí)行“vi/etc/profile”命令,輸入“export JAVA_HO ME=/mysql/app/jdk1.8.0_1 71”,“export JRE_HOME=$JA VA_HOME/jre”,“export MYC AT_HOME=/mysql/app/mycat”,“export CLASSPATH=.:$J AVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH”,“export PATH=$JAVA_HOME/bin:$MYCAT_HOME:$JRE_HOME/bin:$PATH”等行,設(shè)置針對(duì)所有用戶的環(huán)境變量。

      執(zhí)行“java -version”命令,查看Java版本信息。執(zhí)行“groupadd mycat”,“useradd -g mycat mycat”,“cd/mysql/app”,“chrown-R mycat mycat/mysql/app/mycat ”,“pass mycat”等命令,來(lái)創(chuàng)建所需的用戶組和賬戶信息。進(jìn)入MyCat安裝路徑下的“bin”目錄,執(zhí)行“./startup_nowrap.sh”命令,可以手動(dòng)啟動(dòng)MyCat。也可以執(zhí)行“mycat console”命令,檢測(cè)前臺(tái)啟動(dòng)是否報(bào)錯(cuò)。執(zhí)行“mystop”,“mycat start”命令,來(lái)停止和啟動(dòng)MyCat。

      如果想讓MyCat自動(dòng)運(yùn)行,可以執(zhí)行“vi/usr/lib/systemd/system/mycat.service”命令,在其中輸入“[Unit]”,“Description=Mycat Datab ase”,“Descripton=mycat”,“After=syslog.target”,“after=network.target”,“[Service]”,“Type=simple”,“Restart=on-abort”,“PIDFile=/mysql/app/logs/mycat.pid”,“ExecStart=/mysql/app/mycat/bin/myca t start”,“PrivateTmp=tru e”,“[Install]”,“WantedBy=multi-user.target”行,之后保存該文件。

      執(zhí)行“systemctl enable mycat”,“systemctl daemon-reload”,“systemctl start mycat”命令,可以讓MyCat跟對(duì)系統(tǒng)啟動(dòng)自動(dòng)運(yùn)行。當(dāng)其啟動(dòng)后,執(zhí)行“ps-ef|grep mycat”命令,可以查看MySQL的啟動(dòng)信息。

      對(duì)于MyCat,默認(rèn)使用的端口為T(mén)CP 8066,MyCat利用該端口接收數(shù)據(jù)庫(kù)客戶端的訪問(wèn)請(qǐng)求,其管理端口為T(mén)CP 9066,用來(lái)接收MyCat監(jiān)控命令,查詢MyCat運(yùn)行狀態(tài),重新加載配置文件等。

      執(zhí)行“netstat -tnlp”命令,可以查看端口信息。也可以執(zhí)行“ss -lntup|grep java”命令,也可以顯示上述端口信息。

      搭建簡(jiǎn)單實(shí)驗(yàn)環(huán)境

      對(duì)于MyCat來(lái)說(shuō),是通過(guò)配置文件的方式,來(lái)定義邏輯庫(kù)和相關(guān)配置的,其主要包括MyCat安裝路徑下的“conf”目錄中的“schema.xml”,“rule.xml”和“serve r.xml”等配置文件。在“schema.xml”文件中定義來(lái)邏輯庫(kù),表以及分片節(jié)點(diǎn)等內(nèi)容,對(duì)應(yīng)的是物理數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)表的配置。在“rule.xml”文件中定義分片(即分庫(kù)分表)規(guī)則,在“server.xml”文件中定義用戶以及系統(tǒng)相關(guān)變量配置文件,賬號(hào)以及參數(shù)等。

      在本例中就在MySQL主動(dòng)復(fù)制的基礎(chǔ)上實(shí)現(xiàn)讀寫(xiě)分離操作,在“server01”上部署MyCat,其IP為172.16.1.100,在“serverdb 01”到“serverdb03”主機(jī)上安裝MySQL,其IP從172.16.1.51到172.16.1.5 3,其中“serverdb01”為Master節(jié)點(diǎn),其余兩臺(tái)作為Slave節(jié)點(diǎn)。

      在默認(rèn)情況下,在從節(jié)點(diǎn)上實(shí)現(xiàn)讀操作,在主節(jié)點(diǎn)上實(shí)現(xiàn)寫(xiě)操作。

      注意,在MySQL主動(dòng)復(fù)制配置中,如果涉及到函數(shù)或者存儲(chǔ)過(guò)程的同步復(fù)制的話,需要在“my.cnf”文件中的“mysqld”段中添加“l(fā)og_bin_trust_function_creators=true”行,也可以在客戶端執(zhí)行“set global bin_trust_function_creators=1”命令進(jìn)行配置。如果要執(zhí)行讀寫(xiě)分離下的主從切換(例如主節(jié)點(diǎn)出現(xiàn)故障等),那么某個(gè)從節(jié)點(diǎn)有可能變成主節(jié)點(diǎn),因此在從節(jié)點(diǎn)上就不能設(shè)置為只讀“read_only=1”參數(shù)。

      為了防止因?yàn)榇笮?xiě)不明確導(dǎo)致找不到表的問(wèn)題,可以在“/etc/my.cnf”文件中的“mysqld”段添加“l(fā)ower_case_table_names=1”行。對(duì)于如何配置MySQL主動(dòng)復(fù)制,這里限于篇幅就不在贅述了,其主要步驟是先準(zhǔn)備主從二進(jìn)制和中斷日志目錄。

      之后在主從節(jié)點(diǎn)上配置“my.cnf”文件,準(zhǔn)備主庫(kù)和從庫(kù)參數(shù)。

      注意,其中的“autocommit=0”行需要屏蔽,啟用自動(dòng)提交功能,否則數(shù)據(jù)無(wú)法提交到后端。

      接著在主從節(jié)點(diǎn)創(chuàng)建用于復(fù)制操作的賬戶并授權(quán),最后在從庫(kù)上使Slave和Master節(jié)點(diǎn)建立連接。

      配置MyCAT邏輯庫(kù)信息

      進(jìn)入MyCat中的“conf”目錄,執(zhí)行“vi schema.xml”命令,在其中添加“”,“”,“”行,來(lái)創(chuàng)建名為“mycatdb1”,“mycatdb2”和“mycatdb3的邏輯庫(kù)。

      這些邏輯庫(kù)僅僅在MyCat中可見(jiàn),并不是真正意義上的數(shù)據(jù)庫(kù)。

      注意,其中“checkSQLschema”參數(shù)用來(lái)檢查并過(guò)濾SQL中包含Schema的情況。

      “sqlMaxLimit”參數(shù)設(shè)置默認(rèn)返回的最大記錄數(shù)。“dataNode”參數(shù)定義數(shù)據(jù)節(jié)點(diǎn)名稱。添加“”,“”,“”行,用來(lái)定義個(gè)數(shù)據(jù)節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)主機(jī)名稱和數(shù)據(jù)庫(kù)名稱。

      輸 入“”,“”,“”行,來(lái)執(zhí)行讀寫(xiě)分離的配置,其中的“xxx”表示具體的密碼。Schema中的每一個(gè)DataHost的Host的值必須唯一,否則將會(huì)出現(xiàn)主從在所有DataHost中全部切換的現(xiàn)象。這里定義的數(shù)據(jù)主 機(jī) 名 為“mydatahost1”,連接到MySQL主動(dòng)結(jié)構(gòu)中的Master節(jié)點(diǎn),并指定其MySQL賬戶名和密碼。

      輸 入“”,“”,“”,“”,“”,“”,“”行,使用MyCat托管MySQL主動(dòng)切換,定義數(shù)據(jù)主機(jī)名稱,連接到MySQL讀寫(xiě)分離集群,配置讀寫(xiě)分離和主從切換參數(shù)。

      配置MyCat賬戶權(quán)限和日志信息

      進(jìn)入MyCat中的“conf”目 錄,執(zhí) 行“vi server.xml”命 令,輸 入“”,“ xxx”,“MyCATdb 1,MyCATdb2,MyCATdb3”行,定義所需的賬戶(這里為“adminuser”)和密碼,其擁有Root權(quán)限,用來(lái)登錄MyCat邏輯庫(kù),來(lái)管理后端的數(shù)據(jù)節(jié)點(diǎn),與之對(duì)應(yīng)的是MySQL主從群集。實(shí)現(xiàn)數(shù)據(jù)的讀寫(xiě)分離。

      輸 入“”,“schema name="TESTDB" dml="0110">”,“”,“”,“”,“”,“”行,針對(duì)特定的數(shù)據(jù)庫(kù)中的表,設(shè)置所需的權(quán)限,例如對(duì)于“TESTDB”數(shù)據(jù)庫(kù)來(lái)說(shuō),允許執(zhí)行刪除和修改操作,禁止增加和和刪除操作。對(duì)于“tb02”表來(lái)說(shuō),允許對(duì)其執(zhí)行增刪改查操作,“0”對(duì)應(yīng)禁止操作,“1”對(duì)應(yīng)允許操作。這樣,可以實(shí)現(xiàn)對(duì)用戶Schema及其下的Table進(jìn)行精細(xì)化的DML權(quán)限控制,

      DML權(quán)限設(shè)置設(shè)置順序?yàn)椤癷nsert”,“update”,“select” 和“delete”。Privileges節(jié)點(diǎn)中的“check”屬性用來(lái)標(biāo)識(shí)是否開(kāi)啟DML權(quán)限檢 查,默認(rèn)為“false”不進(jìn)行檢查。輸入“”,“xxx”,“MyCATdb 1,MyCATdb2,MyCATdb3”,“true”,“”行,用來(lái)設(shè)置普通用戶(這里為“user1”)及其密碼信息,使其只能擁有讀取權(quán)限,其中的“xxx”表示不同賬戶各自的具體密碼。進(jìn)入MyCat中的“conf”目錄,執(zhí)行“vi log4j2.xml”命令,將其中的“”行修改為“”,將MyCat的日志輸出級(jí)別修改為“debug”,便于進(jìn)行調(diào)試。

      使用MyCat實(shí)現(xiàn)群集讀寫(xiě)分離

      例如,執(zhí)行“mysql-uadminuser -pxxx -P9066-h172.16.1.100”命令,使用上述定義的管理用戶在客戶端連接MyCat。連接完成后,執(zhí)行“show databases;”命令,顯示邏輯庫(kù)信息。執(zhí)行“show@@heartbeat;”命令,顯示心跳信息。執(zhí)行“show@@datasource;”命令,顯示數(shù)據(jù)源信息。執(zhí)行“mysql-uadminuser -pxxx -P8066-h172.16.1.100”命令,可以連接MyCat業(yè)務(wù)系統(tǒng)。執(zhí)行“show databases;”命令,查看數(shù)據(jù)庫(kù)信息。

      注意,這里并沒(méi)有使用MySQL的Root賬戶,有利于提高訪問(wèn)的安全性。

      執(zhí)行“use mycatdb1;”命令,切換到指定的邏輯庫(kù)中,執(zhí)行“show tables;”命令,查看其中的表信息。您可以根據(jù)需要,在數(shù)據(jù)庫(kù)中執(zhí)行各種操作。

      如果其中一臺(tái)MySQL宕 機(jī),可以執(zhí)行“mysql-uadminuser -pxxx -P8066-h172.16.1.100 -e "select@@hostname";”命令,來(lái)進(jìn)行測(cè)試,發(fā)現(xiàn)數(shù)據(jù)庫(kù)依然可以正常訪問(wèn)。

      如果是MySQL群集中的Mastsr主機(jī)宕機(jī),可以切換到“serverdb02”主機(jī)上,讓其頂替Mastere工作。之后將上述“schema.xml”中的““”修改為“”。將“”修 改為“”,對(duì)心跳方式進(jìn)行修改。并且添加添加諸如“”行,讓“serverdb02”主機(jī)主機(jī)可以在Master出現(xiàn)故障時(shí)進(jìn)行頂替。之后執(zhí)行“mycat restart”命令,重啟MyCat進(jìn)行測(cè)試即可。

      猜你喜歡
      主從配置文件命令
      提示用戶配置文件錯(cuò)誤 這樣解決
      只聽(tīng)主人的命令
      搭建簡(jiǎn)單的Kubernetes集群
      互不干涉混用Chromium Edge
      忘記ESXi主機(jī)root密碼怎么辦
      移防命令下達(dá)后
      FANUC系統(tǒng)PROFIBUS主從功能應(yīng)用
      基于主從控制的微電網(wǎng)平滑切換控制策略研究
      這是人民的命令
      基于飛行試驗(yàn)數(shù)據(jù)的仿真模型主從一體化檢驗(yàn)
      旅游| 孟村| 宿迁市| 永安市| 格尔木市| 崇仁县| 都昌县| 开远市| 若尔盖县| 基隆市| 萨迦县| 彰武县| 隆安县| 周口市| 喀什市| 山阴县| 江都市| 汕头市| 江城| 涿州市| 全椒县| 德保县| 仁化县| 北流市| 安岳县| 贵定县| 拉萨市| 张北县| 炉霍县| 烟台市| 山丹县| 阿合奇县| 榆树市| 永安市| 仙游县| 齐河县| 青冈县| 林芝县| 佳木斯市| 武夷山市| 安平县|