![通過KeepAlived搭建MySQL雙主模式的高可用集群系統(tǒng)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/16/69490fa5-e2af-4c1e-b968-8d5b19556c0c/69490fa5-e2af-4c1e-b968-8d5b19556c0c1.gif)
![通過KeepAlived搭建MySQL雙主模式的高可用集群系統(tǒng)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/16/69490fa5-e2af-4c1e-b968-8d5b19556c0c/69490fa5-e2af-4c1e-b968-8d5b19556c0c2.gif)
![通過KeepAlived搭建MySQL雙主模式的高可用集群系統(tǒng)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/16/69490fa5-e2af-4c1e-b968-8d5b19556c0c/69490fa5-e2af-4c1e-b968-8d5b19556c0c3.gif)
![通過KeepAlived搭建MySQL雙主模式的高可用集群系統(tǒng)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/16/69490fa5-e2af-4c1e-b968-8d5b19556c0c/69490fa5-e2af-4c1e-b968-8d5b19556c0c4.gif)
![通過KeepAlived搭建MySQL雙主模式的高可用集群系統(tǒng)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/16/69490fa5-e2af-4c1e-b968-8d5b19556c0c/69490fa5-e2af-4c1e-b968-8d5b19556c0c5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、通過KeepAlived搭建MySQL雙主模式的高可用集群系統(tǒng)一、整體架構(gòu)企業(yè)級mysql集群具備高可用、可擴(kuò)展、易管理、低成本的特點(diǎn)。下面將介紹企業(yè)環(huán)境中經(jīng)常應(yīng)用的一個(gè)解決方案,即MySQL的雙主互備架構(gòu),主要設(shè)計(jì)思路是通過MySQL Replication技術(shù)將兩臺MySQL Server互相將對方作為自己的Master,自己又同時(shí)作為對方的Slave來進(jìn)行復(fù)制。這樣就實(shí)現(xiàn)了高可用構(gòu)架中的數(shù)據(jù)同步功能,同時(shí),將采用KeepAlived來實(shí)現(xiàn)Mysql的自動(dòng)failover。在這個(gè)構(gòu)架中,雖然兩臺MySQL Server互為主從,但同一時(shí)刻只有一個(gè)MySQL Server可讀寫,另一個(gè)MyS
2、QL Server只能進(jìn)行讀操作,這樣可保證數(shù)據(jù)的一致性。整個(gè)架構(gòu)下圖所示。二、MySQL主主互備模式配置環(huán)境第一步要做的工作是在這兩天機(jī)器上都安裝mysql,在做主從復(fù)制的時(shí)候mysql的版本盡量保持一致。即使不一樣一定要以主服務(wù)的版本為最高的版本,從服務(wù)器的版本不能高于主服務(wù)器的版本。1、Mysql的安裝與配置Mysql5.6版本之后,編譯mysql方式變?yōu)閏make安裝cmake:#yum install cmake#cd mysql-5.6.17#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/loc
3、al/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT
4、_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_cimake && make install如果沒有就創(chuàng)建用戶就創(chuàng)建如下用戶:#groupadd mysql#useradd -g mysql mysql修改/usr/local/mysql權(quán)限:#chown -R mysql:mysql /usr/local/mysql#cd /usr/local/mysql進(jìn)入安裝路徑,執(zhí)行初始化配置腳本,創(chuàng)建系統(tǒng)自帶的數(shù)據(jù)庫和表:#scripts/mysql_install_db-basedir=/usr/local/mysql-datadir=
5、/usr/local/mysql/data -user=mysql2、啟動(dòng)MySQL添加服務(wù),拷貝服務(wù)腳本到init.d目錄,并設(shè)置開機(jī)啟動(dòng)#cd /usr/local/mysql#cp support-files/mysql.server /etc/init.d/mysql#chkconfig mysql on#service mysql start -啟動(dòng)MySQL三、配置mysql主從服務(wù)器1、修改MySQL配置文件在默認(rèn)情況下MySQL的配置文件是/etc/f。但我們需要修改的路徑是自己安裝MySQL的路徑。首先修改DB1主機(jī)的配置文件,在/usr/local/mysql/f文件中的“
6、mysqld”段添加如下內(nèi)容:server-id = 1log-bin=mysql-binrelay-log = mysql-relay-binreplicate-wild-ignore-table=mysql.%replicate-wild-ignore-table=test.%replicate-wild-ignore-table=information_schema.%然后修改DB2主機(jī)的配置文件,在/usr/local/mysql/f文件中的“mysqld”段添加如下內(nèi)容:server-id = 2log-bin=mysql-bin(如果只有一主一從,在從庫上是不需要開啟binlog日
7、志的,后面是為了演示互為主從這才加上去的)relay-log = mysql-relay-binreplicate-wild-ignore-table=mysql.%replicate-wild-ignore-table=test.%replicate-wild-ignore-table=information_schema.%其中,server-id是節(jié)點(diǎn)標(biāo)識,主、從節(jié)點(diǎn)不能相同,必須全局唯一。log-bin表示開啟MySQL的binlog日志功能?!癿ysql-bin”表示日志文件的命名格式,會(huì)生成文件名為mysql-bin.000001、mysql-bin.000002等的日志文件。re
8、lay-log用來定義relay-log日志文件的命名格式。replicate-wild-ignore-table是個(gè)復(fù)制過濾選項(xiàng),可以過濾掉不需要復(fù)制的數(shù)據(jù)庫或表,例如“mysql.%“表示不復(fù)制mysql庫下的所有對象,其他依此類推。與此對應(yīng)的是replicate_wild_do_table選項(xiàng),用來指定需要復(fù)制的數(shù)據(jù)庫或表。2、手動(dòng)同步數(shù)據(jù)庫如果DB1上已經(jīng)有mysql數(shù)據(jù),那么在執(zhí)行主主互備之前,需要將DB1和DB2上兩個(gè)mysql的數(shù)據(jù)保持同步,首先在DB1上備份mysql數(shù)據(jù),執(zhí)行如下SQL語句:mysql>FLUSH TABLES WITH READ LOCK; (解鎖:u
9、nlock tables;)Query OK, 0 rows affected (0.00 sec)在不退出終端的情況下,再開啟一個(gè)終端直接打包壓縮數(shù)據(jù)文件或使用mysqldump工具來導(dǎo)出數(shù)據(jù)。這里通過打包mysql文件來完成數(shù)據(jù)的備份,操作過程如下:rootDB1 # cd /usr/localrootDB1 lib# tar zcvf mysql.tar.gz mysqlrootDB1 lib# scp mysql.tar.gz DB2:/usr/local/將數(shù)據(jù)傳輸?shù)紻B2后,依次重啟DB1和DB2上面的mysql。3、創(chuàng)建復(fù)制用戶并授權(quán)首先在DB1的mysql庫中創(chuàng)建復(fù)制用戶,操作
10、過程如圖所示。mysql> grant replication slave on *.* to 'repl_user''192.168.1.89' identified by 'repl_passwd'然后在DB2的mysql庫中將DB1設(shè)為自己的主服務(wù)器,操作如下所示。Change master to master_host='192.168.1.85', master_user='repl_user',master_password='repl_passwd',master_log_fil
11、e='mysql-bin.000001',master_log_pos=431;這里需要注意master_log_file和master_log_pos兩個(gè)選項(xiàng),這兩個(gè)選項(xiàng)的值剛好是在DB1上通過SQL語句“show master status”查詢到的結(jié)果。接著就可以在DB2上啟動(dòng)slave服務(wù)了,可執(zhí)行如下SQL命令:mysql> start slave;下面查看DB2上slave的運(yùn)行狀態(tài),如圖所示。通過查看slave的運(yùn)行狀態(tài)發(fā)現(xiàn),一切運(yùn)行正常,這里需要重點(diǎn)關(guān)注的是Slave_IO_Running和Slave_SQL_Running,這兩個(gè)就是在Slave節(jié)點(diǎn)上運(yùn)
12、行的主從復(fù)制線程,正常情況下這兩個(gè)值都應(yīng)該為Yes。另外還需要注意的是Slave_IO_State、Master_Host、Master_Log_File、Read_Master_Log_Pos、Relay_Log_File、Relay_Log_Pos和Relay_Master_Log_File幾個(gè)選項(xiàng),從中可以查看出mysql復(fù)制的運(yùn)行原理及執(zhí)行規(guī)律。最后還有一個(gè)Replicate_Wild_Ignore_Table選項(xiàng),這個(gè)是之前在f中添加過的,通過此選項(xiàng)的輸出值可以知道過濾掉了哪些數(shù)據(jù)庫。到這里位置,從DB1到DB2的mysql主從復(fù)制已經(jīng)完成了。接下來開始配置從DB2到DB1的mysq
13、l主從復(fù)制,這個(gè)配置過程與上面的完全一樣,首先在DB2的mysql庫中創(chuàng)建復(fù)制用戶,操作如圖grant replication slave on *.* to 'repl_user''192.168.1.85' identified by 'repl_passwd'然后在DB1的mysql庫中將DB2設(shè)為自己的主服務(wù)器,操作如下change master to master_host='192.168.1.89',master_user='repl_user',master_password='repl_p
14、asswd',master_log_file='mysql-bin.000001',master_log_pos=862;接著就可以在DB1上啟動(dòng)slave服務(wù)了,可執(zhí)行如下SQL命令:mysql> start slave;下面查看DB1上slave的運(yùn)行狀態(tài),如圖所示。從圖上中可以看出Slave_IO_Running和Slave_SQL_Running都是Yes狀態(tài),表明DB1上復(fù)制服務(wù)運(yùn)行正常。至此,mysql雙主模式的主從復(fù)制已經(jīng)配置完畢了。四、配置KeepAlived實(shí)現(xiàn)MySQL雙主高可用在進(jìn)行高可用配置之前,首先需要在DB1和DB2服務(wù)器上安裝Keep
15、Alived軟件。KeepAlived的安裝和配置過程如下:rootkeepalived-master app#tar zxvf keepalived-1.2.12.tar.gzrootkeepalived-master app#cd keepalived-1.2.12rootkeepalived-master keepalived-1.2.12#./configure -sysconf=/etc > -with-kernel-dir=/usr/src/kernels/2.6.32-431.5.1.el6.x86_64rootkeepalived-master keepalived-1.
16、2.12#makerootkeepalived-master keepalived-1.2.12#make installrootkeepalived-master keepalived-1.2.12#ln -s /usr/local/sbin/keepalived /sbin/rootkeepalived-master keepalived-1.2.12# chkconfig -add keepalivedrootkeepalived-master keepalived-1.2.12# chkconfig -level 35 keepalived on安裝完成后,進(jìn)入keepalived的配
17、置過程。下面是DB1服務(wù)器上/etc/keepalived/keepalived.conf文件的內(nèi)容。global_defs notification_email acassenfirewall.loc failoverfirewall.loc sysadminfirewall.loc notification_email_from Alexandre.Cassenfirewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVELvrrp_script check_mysqld script &q
18、uot;/etc/keepalived/mysqlcheck/check_slave.pl 127.0.0.1" #檢測mysql復(fù)制狀態(tài)的腳本 interval 2 vrrp_instance VI_1 state BACKUP #在DB1和DB2上均配置為BACKUP interface eth0 virtual_router_id 80 priority 100 advert_int 2 nopreempt #不搶占模式,只在優(yōu)先級高的機(jī)器上設(shè)置即可,優(yōu)先級低的機(jī)器不設(shè)置 authentication #效驗(yàn)DB1和DB2需一致 auth_type PASS auth_pass
19、 qweasdzxc track_script check_mysqld virtual_ipaddress 192.168.1.84/24 dev eth0 #mysql的對外服務(wù)IP,即VIP 其中,/etc/keepalived/mysqlcheck/check_slave.pl文件的內(nèi)容為:#!/usr/bin/perl -wuse DBI;use DBD:mysql;# CONFIG VARIABLES$SBM = 120;$db = "mysql"$host = $ARGV0;$port = 3306;$user = "root"$pw =
20、"xxxxxx"# SQL query$query = "show slave status"$dbh = DBI->connect("DBI:mysql:$db:$host:$port", $user, $pw, RaiseError => 0,PrintError => 0 );if (!defined($dbh) exit 1;$sqlQuery = $dbh->prepare($query);$sqlQuery->execute;$Slave_IO_Running = ""$S
21、lave_SQL_Running = ""$Seconds_Behind_Master = ""while (my $ref = $sqlQuery->fetchrow_hashref() $Slave_IO_Running = $ref->'Slave_IO_Running' $Slave_SQL_Running = $ref->'Slave_SQL_Running' $Seconds_Behind_Master = $ref->'Seconds_Behind_Master'$sqlQuery->finish;$dbh->disconnect();if ( $Slave_IO_Running eq "No" | $Slave_SQL_Running eq "No" ) exit 1; else if ( $Seconds_Behind_Master > $SBM ) exit 1; else exit 0; 這是個(gè)用perl寫的檢測mysql復(fù)制狀態(tài)的腳本,ixdba是本例中的一個(gè)數(shù)據(jù)庫名,讀者只需修改文件中數(shù)據(jù)庫名、數(shù)據(jù)庫的端口、用戶名和密碼即可直接使用,但在使用前要保證此腳本有可執(zhí)行權(quán)限。接著將keepal
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度跨境并購盡職調(diào)查專項(xiàng)合同
- 2025年度家電維修配件供應(yīng)合同
- 2025年度外資企業(yè)外幣資金借貸合同
- 2025年度新能源電動(dòng)汽車銷售與服務(wù)合同
- 2025年度聚苯板生產(chǎn)原料采購合同范本
- 2025年度高端模具制造及購銷合作協(xié)議
- 2025年度智能家居產(chǎn)品安裝與維護(hù)服務(wù)協(xié)議
- 2025年度航空貨運(yùn)代理服務(wù)質(zhì)量監(jiān)督協(xié)議
- 2025年度租賃車輛保險(xiǎn)服務(wù)合同
- 2025年度個(gè)人消費(fèi)信貸貸款延期及信用評估合同
- 教學(xué)的模樣讀書分享
- 油庫應(yīng)急處置培訓(xùn)
- 新環(huán)境下人力資源體系建設(shè)方案
- 2024年秋新滬科版物理八年級上冊 第二節(jié) 測量:物體的質(zhì)量 教學(xué)課件
- 火針療法緩解上寒下熱證候群焦慮抑郁情緒的研究
- 7.2維護(hù)祖國統(tǒng)一 (課件) 2024-2025學(xué)年九年級道德與法治上冊 (統(tǒng)編版)
- 直播帶貨基本操作流程(直播帶貨流程完整版)
- 多旋翼無人機(jī)駕駛員執(zhí)照(CAAC)備考試題庫大全-下部分
- 管理學(xué)專業(yè):管理基礎(chǔ)知識試題庫(附含答案)
- 醫(yī)療器械質(zhì)量安全風(fēng)險(xiǎn)會(huì)商管理制度
- 新疆維吾爾自治區(qū)2024屆高三下學(xué)期三模試題 語文試題
評論
0/150
提交評論