欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
MYSQL HA的實(shí)列

做人要厚道,轉載請保留原文鏈接:http://www.entage.net/1/viewspace_1868.html
作者:九尾銀狐

關(guān)于本文

  本文給出了一個(gè)MYSQL HA的實(shí)列,簡(jiǎn)單說(shuō)明了如何實(shí)現MYSQL的高可用性,方法并非僅此一種,感興趣的朋友可參考相關(guān)資料。

背景

   當前大多網(wǎng)站采用MYSQL+Linux+APACHE這種經(jīng)典配置,如何防止單點(diǎn)失敗造成的整個(gè)網(wǎng)站的不可用是網(wǎng)站管理者必須要考慮的問(wèn)題,其中數據庫的高可用性(Database server’s high availability)是重中之重。
   對于數據庫的高可用性,各商業(yè)軟件的廠(chǎng)商都有各自的解決方案,比如Oracle OPS server和IBM DB2 (share-nothing architecture)。最近MYSQL AB也發(fā)布了MYSQL cluster 軟件,使用與IBM DB2類(lèi)似的技術(shù)。
   MySQL cluster可能會(huì )是日后最理想的方案,但是從資源、可集成度方面考慮,筆者將給出一個(gè)簡(jiǎn)單實(shí)用的方案供大家借鑒。

實(shí)現原理

  通過(guò)Linux HA 軟件 heartbeat 實(shí)現IP的自動(dòng)漂移,即當一臺服務(wù)器宕機后,浮動(dòng)IP(整個(gè)cluster的對外IP )自動(dòng)漂移到另外一臺服務(wù)器。
  通過(guò)Mysql自身的replication 實(shí)現不同機器上多個(gè)數據庫的同步

整體性能

  此方案將會(huì )降低MYSQL 1%左右的性能,可用性及數據安全性將大有提高,同時(shí)服務(wù)器的切換對終端使用者是透明的,終端應用不需要進(jìn)行更改。

所需硬件

  安裝有雙網(wǎng)卡的配置大致相同的服務(wù)器或工作機兩臺(測試而已,用Vmware虛擬吧)
  一條交叉網(wǎng)線(xiàn)(用于雙機對連的心跳線(xiàn))

所需軟件

  Linux HA 軟件 heartbeat (只支持兩個(gè)節點(diǎn))
  軟件主頁(yè):http://www.linux-ha.org/
 
  Mysql
  軟件主頁(yè):www.mysql.com

實(shí)現步驟

  一、設置硬件環(huán)境:
 
  Node1:
        計算機名:RHEL1
        eth0    : 192.168.168.1/255.255.255.0
        eth1    : 10.0.0.1/255.0.0.0 (用于心跳)
  Node2:
        計算機名:RHEL2
        eth0    : 192.168.168.2/255.255.255.0
        eth1    : 10.0.0.2/255.0.0.0 (用于心跳)

  Node1和Node2的eth0分別連接到你的交換機
  Node1和Node2的eth1之間用心跳線(xiàn)直連起來(lái),做心跳
 
  二、安裝MYSQL

   在每個(gè)節點(diǎn)上分別安裝mysql,不會(huì )裝的看下面安裝步驟或是參考其它資料

   1.獲取軟件源碼包
   wget

  http://mysql.linuxforum.net/Downloads/MySQL-4.0/mysql-4.0.20.tar.gz
   2.解壓縮源碼包
   tar -zxvf mysql-4.0.20.tar.gz
   cd mysql-4.0.20
   3.在linux系統中添加運行Mysql的用戶(hù)和組
   groupadd mysql
   useradd -g mysql -d /var/lib/mysql -s /sbin/nologin mysql
   4.配置編譯參數
   ./configure --prefix=/usr --localstatedir=/var/lib/mysql
   5.編譯并安裝
   make
   make install
   6.裝載原始授權到數據庫
   ./scripts/mysql_install_db
   7.copy配置文件到/etc目錄
   cp ./support-files/my-small.cnf /etc/my.cnf
   8.copy啟動(dòng)腳本到資源目錄
   cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
   9.添加mysql服務(wù)
   chmod +x /etc/rc.d/init.d/mysqld
   chkconfig --add mysqld
  (chkconfig --list mysqld 查看狀態(tài),默認在運行級2.3.4.5是ON的,如果運行級3是Off,則執行chkconfig --level 3 mysqld on)
   10.更改目錄屬主
   chown -R mysql.mysql /var/lib/mysql
   11.啟動(dòng)mysql
   service mysqld start
   12.設置mysql root用戶(hù)密碼
   mysql -u root (登入mysql,以下操作在mysql命令行下進(jìn)行)
   mysql>set password forroot@localhost=password(‘yourpassword‘); (設置從本地主機登錄的root用戶(hù)密碼)
   mysql>use mysql;
   mysql>delete from user where user=‘‘ ; (刪除匿名用戶(hù))
   mysql>delete from user where host<>‘localhost‘ ; (只充許從localhost登錄)
   mysql>flush privileges ; (使更改生效)
   mysql>\q (退出mysql命令行)

   至此,Mysql基本安裝完畢。

  三、設置Mysql Replication

   以下步驟在Node1上操作

   1.增加一用于數據庫同步的用戶(hù)replicate
  
   mysql -u root -p (執行后提示輸入密碼,正確輸入mysql root用戶(hù)密碼后,登入mysql,以下操作在mysql命令行下進(jìn)行)
 
   mysql>GRANT REPLICATION SLAVE ON *.* TOreplicate@10.0.0.2IDENTIFIED BY ‘password‘ ;
   (授與從10.0.0.2主機上登錄用戶(hù)replicate數據復制權限,4.02版本以前用:GRANT FILE ON *.* TOreplicate@10.0.0.2IDENTIFIED BY ‘password‘;)

   mysql>flush privileges; (使權限生效,這步可不做,因為過(guò)會(huì )要重啟mysql)

   mysql>\q (退出mysql命令行界面)
  
   2.停止mysql服務(wù)
   service mysqld stop

   3.更改Mysql配置文件/etc/my.cnf

   vi /etc/my.cnf

   在[mysqld]一節中增加以下內容


   server-id=1      #服務(wù)器的標識 1~2^32-1,不同主機設為不同的值,否則可能會(huì )出現不可預料的錯誤

   #以下內容為作為Master的配置,如果此服務(wù)器只作為Slave,注釋掉以下各行
   log-bin                        #允許二進(jìn)制更新日志
   binlog-do-db=dbname            #指定做二進(jìn)制更新日志的數據庫,多個(gè)數據庫用多條此語(yǔ)句,如,還有anotherdb,去掉下行的注釋
   #binlog-do-db=anotherdb
   binlog-ignore-db=dbname        #指明數據庫dbname不做二進(jìn)制更新日志,沒(méi)有則注釋掉此行,多個(gè)數據庫用多條此語(yǔ)句,如,還有anotherigdb,去掉下行的注釋
   #binlog-ignore-db=anotherigdb
 
   #以下內容為作為Slave的配置,如果此服務(wù)器只作為Master,注釋掉以下各行 
   master-host=10.0.0.2           #Master服務(wù)器地址
   master-user=replicate          #Master服務(wù)器上用于replication的用戶(hù),必須有replication slave權限
   master-password=replicatepass  #Master服務(wù)器上用于replication的用戶(hù)的密碼       
   master-port=3306               #Master服務(wù)器的TCP端口
   master-connect-retry=60        #如果連接Master服務(wù)器失敗,重試連接的間隔,以秒為單位
   replicate-do-db=dodbname       #指明要復制的數據庫,多個(gè)數據庫用多條此語(yǔ)句,如,還有anotherdb,去掉下行的注釋
   #replicate-do-db=anotherdb
   replicate-ignore-db=igdbname   #指明不做復制的數據庫,多個(gè)數據庫用多條此語(yǔ)句,如,還有anotherigdb,去掉下行的注釋
   #replicate-ignore-db=anotherigdb 

   4.將要進(jìn)行復制的數據庫打包傳到Node2
  
   tar -cvf /tmp/mysql-thisdb-snapshot.tar /var/lib/mysql/thisdb (將要進(jìn)行復制的thisdb數據庫打包)

   scp /tmp/mysql-thisdb-snapshot.tarroot@10.0.0.2:/tmp/ (將mysql-thisdb-snapshot.tar復制到Node2的/tmp目錄)
 
   5.啟動(dòng)Mysql

   service mysqld start
 
   至此,Node1上的Mysql設置完畢,以下操作在Node2上完成
     
   1.增加一用于數據庫同步的用戶(hù)replicate
  
   mysql -u root -p (執行后提示輸入密碼,正確輸入mysql root用戶(hù)密碼后,登入mysql,以下操作在mysql命令行下進(jìn)行)
 
   mysql>GRANT REPLICATION SLAVE ON *.* TOreplicate@10.0.0.1IDENTIFIED BY ‘password‘ ;
   (授與從10.0.0.1主機上登錄用戶(hù)replicate數據復制權限,4.02版本以前用:GRANT FILE ON *.* TOreplicate@10.0.0.1IDENTIFIED BY ‘password‘;)

   mysql>flush privileges; (使權限生效,這步可不做,因為過(guò)會(huì )要重啟mysql)

   mysql>\q (退出mysql命令行界面)
  
   2.停止mysql服務(wù)
   service mysqld stop

   3.更改Mysql配置文件/etc/my.cnf

   vi /etc/my.cnf

   在[mysqld]一節中增加以下內容


   server-id=2      #服務(wù)器的標識 1~2^32-1,不同主機設為不同的值,否則可能會(huì )出現不可預料的錯誤

   #以下內容為作為Master的配置,如果此服務(wù)器只作為Slave,注釋掉以下各行
   log-bin                        #允許二進(jìn)制更新日志
   binlog-do-db=dbname            #指定做二進(jìn)制更新日志的數據庫,多個(gè)數據庫用多條此語(yǔ)句,如,還有anotherdb,去掉下行的注釋
   #binlog-do-db=anotherdb
   binlog-ignore-db=dbname        #指明數據庫dbname不做二進(jìn)制更新日志,沒(méi)有則注釋掉此行,多個(gè)數據庫用多條此語(yǔ)句,如,還有anotherigdb,去掉下行的注釋
   #binlog-ignore-db=anotherigdb
 
   #以下內容為作為Slave的配置,如果此服務(wù)器只作為Master,注釋掉以下各行 
   master-host=10.0.0.1           #Master服務(wù)器地址
   master-user=replicate          #Master服務(wù)器上用于replication的用戶(hù),必須有replication slave權限
   master-password=replicatepass  #Master服務(wù)器上用于replication的用戶(hù)的密碼       
   master-port=3306               #Master服務(wù)器的TCP端口
   master-connect-retry=60        #如果連接Master服務(wù)器失敗,重試連接的間隔,以秒為單位
   replicate-do-db=dodbname       #指明要復制的數據庫,多個(gè)數據庫用多條此語(yǔ)句,如,還有anotherdb,去掉下行的注釋
   #replicate-do-db=anotherdb
   replicate-ignore-db=igdbname   #指明不做復制的數據庫,多個(gè)數據庫用多條此語(yǔ)句,如,還有anotherigdb,去掉下行的注釋
   #replicate-ignore-db=anotherigdb 

   4.將先前從Node1上發(fā)過(guò)來(lái)的數據庫的打包文件解壓并替換掉原有文件,并確保屬主及權限正確
  
   cd /var/lib/mysql
   tar -xvf /tmp/mysql-thisdb-snapshot.tar
   chown -R mysql.mysql thisdb
   chmod 700 thisdb
   chmod 660 thisdb/*

   5.啟動(dòng)Mysql

   service mysqld start

   至此Node2上的Mysql設置完畢

   在Mysql中可通過(guò)以下命令來(lái)查看主從狀態(tài)
  
   show master status 查看master狀態(tài)
   show slave status    查看slave狀態(tài)
   show processlist \G  查看當前進(jìn)程
   stop slave  暫時(shí)停止slave進(jìn)程
   start slave  開(kāi)始slave進(jìn)程
  
   其它相關(guān)命令及詳細配置參數請自行查閱Mysql在線(xiàn)文檔
 
 四、安裝配置Linux HA軟件heartbeat

  在每個(gè)節點(diǎn)上分別安裝heartbeat

  1.安裝支持包(linux-ha.org站點(diǎn)提供下載)
  Linux的版本不同,RPM文件名可能會(huì )不同,請選擇相應版本的RPM
  rpm -iUvh libnet-1.1.0-1.rh.el.1.i386.rpm  
  rpm -iUvh ipvsadm-1.21-1.rh.el.1.i386.rpm
  rpm -iUvh perl-Parse-RecDescent-1.80-1.rh.el.um.1.noarch.rpm
  rpm -iUvh perl-Mail-IMAPClient-2.2.7-1.rh.el.um.1.noarch.rpm
  rpm -iUvh perl-Net-SSLeay-1.23-1.rh.el.um.1.i386.rpm
  rpm -iUvh perl-Digest-SHA1-2.01-10.i386.rpm
  rpm -iUvh perl-Digest-HMAC-1.01-11.noarch.rpm
  rpm -iUvh perl-Authen-SASL-2.03-1.rh.el.um.1.noarch.rpm
  rpm -iUvh perl-Convert-ASN1-0.16-2.rh.el.um.1.noarch.rpm
  rpm -iUvh perl-IO-Socket-SSL-0.92-1.rh.el.um.1.noarch.rpm
  rpm -iUvh perl-XML-NamespaceSupport-1.08-1.rh.el.um.1.noarch.rpm
  rpm -iUvh perl-XML-SAX-0.12-1.rh.el.um.1.noarch.rpm
  rpm -iUvh perl-ldap-0.2701-1.rh.el.um.1.noarch.rpm

  2.按裝heartbeat
  以RPM方式按裝(推薦),Linux的版本不同,RPM文件名可能會(huì )不同,請選擇相應版本的RPM
  rpm -iUvh heartbeat-pils-1.3.0-1.rh.el.3.0.i386.rpm
  rpm -iUvh heartbeat-stonith-1.3.0-1.rh.el.3.0.i386.rpm
  rpm -iUvh heartbeat-ldirectord-1.3.0-1.rh.el.3.0.i386.rpm
  rpm -iUvh heartbeat-1.3.0-1.rh.el.3.0.i386.rpm 

  3.Copy配置文件到/etc/ha.d目錄 (只在一個(gè)節點(diǎn)上做即可,所有配置完成后copy到其它節點(diǎn))
  cp /usr/share/doc/heartbeat-1.3.0/ha.cf /etc/ha.d/
  cp /usr/share/doc/heartbeat-1.3.0/haresources /etc/ha.d/
  cp /usr/share/doc/heartbeat-1.3.0/authkeys /etc/ha.d/

  4.配置/etc/ha.d/ha.cf (只在一個(gè)節點(diǎn)上配即可,配好后copy到其它節點(diǎn))

  vi /etc/ha.d/ha.cf

  按如下內容進(jìn)行修改(文件中#開(kāi)頭的行為注釋行,更多的選項及選項的詳細說(shuō)明請參考文件中的注釋及相關(guān)文檔)
 
  debugfile /var/log/ha-debug   #寫(xiě)debug信息到這個(gè)文件中
  logfile /var/log/ha-log       #寫(xiě)運行日志到這個(gè)文件中
  keepalive 2                   #設置心跳時(shí)間為2秒
  deadtime 30                   #設置離最近一次心跳多長(cháng)時(shí)間沒(méi)有心跳時(shí)表明節點(diǎn)失敗
  warntime 10                   #設置離最近的一次心跳多長(cháng)時(shí)間沒(méi)有心跳時(shí)發(fā)出警告
  initdead 120                  #機器重啟動(dòng)或是剛開(kāi)機時(shí),網(wǎng)絡(luò )能正確開(kāi)始工作的時(shí)間,最小設置為deadtime的兩倍
  udpport 694                   #bcast/ucast方式心跳通訊所用的UDP端口
  #baud   19200                 #串口的波特率,使用串口作心跳時(shí)需設置
  #serial /dev/ttyS0            #串口設備名,使用串口作心跳時(shí)需設置
  bcast   eth1                  #使用哪一個(gè)設備(網(wǎng)卡)做心跳
  #bcast  eth1 eth2             #使用多個(gè)設備(網(wǎng)卡)做心跳時(shí)的設置
  auto_failback on              #當主節點(diǎn)從失敗狀態(tài)恢復時(shí)是否恢復其主節點(diǎn)的身份,即應用是否返回到其自身運行
                                #on   返回
                                #off  不返回,其它節點(diǎn)繼續作為主節點(diǎn)運行
                                #legacy 當所有節點(diǎn)都不支持自動(dòng)返回時(shí),將自身設為自動(dòng)返回
  node    RHEL1                 #節點(diǎn)的主機名或域名,需在/etc/hosts文件或

DNS服務(wù)器中設置
  node    RHEL2                 #所有節點(diǎn)都以node開(kāi)始的行列出
  ping    192.168.168.254       #ping節點(diǎn),不屬于cluster內的節點(diǎn),通常選一臺路由器或交換機作為Ping節點(diǎn),
                                #ipfail模塊通過(guò)此節點(diǎn)來(lái)驗證網(wǎng)絡(luò )的連通性,可指定多個(gè)Ping節點(diǎn),如:
  #ping   192.168.168.253 192.168.0.254 ns1.rhel.com ping.linux-ha.org

  respawn hacluster /usr/lib/heartbeat/ipfail   #由heartbeat調用并監視ipfail模塊                        
 
  5.配置/etc/ha.d/haresources (只在一個(gè)節點(diǎn)上配即可,配好后copy到其它節點(diǎn))

  vi /etc/ha.d/haresources
 
  按如下內容進(jìn)行修改(文件中#開(kāi)頭的行為注釋行,更多的選項及選項的詳細說(shuō)明請參考文件中的注釋及相關(guān)文檔)

  RHEL1 192.168.168.103 mysqld  #設置heartbeat管理的資源或服務(wù)
                                #格式為:主節點(diǎn)主機名或域名  浮動(dòng)IP  服務(wù)名
                                #主節點(diǎn)主機名或域名為ha.cf中node行中指定的任一節點(diǎn)
                                #浮動(dòng)IP 為對外提供訪(fǎng)問(wèn)的IP,主節點(diǎn)失敗后會(huì )自動(dòng)漂移到其它節點(diǎn),繼續對外提供服務(wù).
                                #服務(wù)名 為 heartbeat管理的服務(wù)

  #注意,此文件內容所有節點(diǎn)必須保持一致。

  6.配置/etc/ha.d/authkeys (只在一個(gè)節點(diǎn)上配即可,配好后copy到其它節點(diǎn))

  vi /etc/ha.d/authkeys

  按如下內容進(jìn)行修改(文件中#開(kāi)頭的行為注釋行,更多的選項及選項的詳細說(shuō)明請參考文件中的注釋及相關(guān)文檔)

  auth 1   #設置認證方式
  1 crc    #格式為:auth <number>
  #auth 2   #  <number> <authmethod>

[<authkey>]
  #2 md5 Hello!   #如果是用心跳是用交叉線(xiàn)直接對連兩個(gè)節點(diǎn),用crc方式即可,CPU占用最少
  #auth 3         #如果心跳位于不安全的網(wǎng)絡(luò ),如通過(guò)共用交換機連接節點(diǎn),則選用sha1或md5
  #3 sha1 HI!     #sha1占用CPU資源更多,但是更安全,md5安全性及CPU占用率居中
                  #sha1和md5都需要提供認證KEY,即用來(lái)加密的KEY
 
  #注意,此文件權限必須設置為600

  7.copy配置文件到其它節點(diǎn)

  scp /etc/ha.d/ha.cf /etc/ha.d/haresources /etc/ha.d/authkeysroot@RHEL2:/etc/ha.d/

  8.分別設置各節點(diǎn)/etc/ha.d/authkeys文件權限

  chmod 600 /etc/ha.d/authkeys   (文件權限必須設置為600,否則heartbeat不能正常啟動(dòng)) 

  9.在每個(gè)節點(diǎn)上啟動(dòng)heartbeat

  service heartbeat start

 五、測試

  請自行模擬各種宕機情況,進(jìn)行測試,這里不一一例舉。

總結

  此方案在Redhat Linux Enterprise Server 3.0 上測試通過(guò),

其它系統請參照本文自行測試。(完)

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
percona-toolkit使用教程之復制類(lèi)工具
Linux 系統下雙機HA的功能實(shí)現
不同場(chǎng)景下MySQL的遷移方案
實(shí)戰 centos6.5下mysql
Mysql的master,slave的配置
架構設計:負載均衡層設計方案(9)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久