利用heartbeat v2版搭建高可用mysql

一、實驗環境

 1)實驗圖

     1.png

 2)同步時間;確??梢允褂弥鳈C名通信;確保可以使用ssh秘鑰方式進行彼此登錄;由于是兩臺設備,需要仲裁;

 確保可以使用主機名通信

web1修改hosts文件如下:
172.16.2.12 SQL1.linux.com SQL1
172.16.2.14 SQL2.linux.com SQL2

web2修改hosts文件如下:
172.16.2.12 SQL1.Linux.com SQL1
172.16.2.14 SQL2.linux.com SQL2

 確保主機可以使用ssh秘鑰彼此登錄

[root@SQL1~]# ssh-keygen -P '' \\生成秘鑰

[root@SQL1~]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.2.14  \\將公鑰復制給web2

[root@SQL2 ~]# ssh-keygen -P ''  \\生成秘鑰

[root@SQL2 ~]# ssh-copy-id  -i .ssh/id_rsa.pub  root@172.16.2.12    \\將公鑰復制給web1

確保主機之間時間同步

[root@SQL1 ~]# crontab -e
*/5 * * * * /usr/sbin/ntpdate   172.16.2.13
   
[root@SQL2 ~]# crontab -e                                              
*/5 * * * * /usr/sbin/ntpdate 172.16.2.13

 測試

[root@SQL1 ~]# date; ssh SQL2 'date'
Sat Jun 27 15:10:35 CST 2015
Sat Jun 27 15:10:35 CST 2015

[root@SQL2 ~]# date;ssh SQL1 'date'
Sat Jun 27 15:11:13 CST 2015
Sat Jun 27 15:11:13 CST 2015

二、安裝配置heartbeat v2

 1)安裝依賴包;前提準備好epel源

阿里云eple源
wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo
[root@SQL1 heartbeat]# yum -y install net-snmp-libs PyXML gettext-devel libtool-ltdl pygtk2-libglade libnet
[root@SQL1 heartbeat]# rpm -ivh heartbeat-pils-2.1.4-12.el6.x86_64.rpm 
[root@SQL1 heartbeat]# rpm -ivh heartbeat-stonith-2.1.4-12.el6.x86_64.rpm 
[root@SQL1 heartbeat]# rpm -ivh heartbeat-gui-2.1.4-12.el6.x86_64.rpm 
[root@SQL1 heartbeat]# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm 

[root@SQL2 heartbeat]# yum -y install net-snmp-libs PyXML gettext-devel libtool-ltdl pygtk2-libglade libnet
[root@SQL2 heartbeat]# rpm -vih heartbeat-pils-2.1.4-12.el6.x86_64.rpm
[root@SQL2 heartbeat]# rpm -ivh heartbeat-stonith-2.1.4-12.el6.x86_64.rpm
[root@SQL2 heartbeat]# rpm -ivh heartbeat-gui-2.1.4-12.el6.x86_64.rpm  
[root@SQL2 heartbeat]# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm

 2)對heartbeat進行配置

[root@SQL1 ha.d]# rpm -ql heartbeat \\查看heartbeat生成文件

[root@SQL1 ~]# cd  /usr/share/doc/heartbeat-2.1.4/

[root@SQL1 heartbeat-2.1.4]# cp authkeys ha.cf haresources  /etc/ha.d/
      authkeys :是主機之間信息傳遞使用的秘鑰
      ha.cf:是heartbeat的主配置文件
      haresource: 資源配置文件
      
[root@SQL1 heartbeat-2.1.4]# cd /etc/ha.d/

[root@SQL1 ha.d]# openssl rand -hex 6
e5b50e897cb4   \\生成秘鑰

[root@SQL1 ha.d]# vim authkeys  \\配置秘鑰
auth 1
1  md5 e5b50e897cb4

[root@SQL1 ha.d]# chmod 400 authkeys  \\修改秘鑰文件的權限;建議使用400;如果不修改權限heartbeat無法啟動

[root@SQL1 ha.d]# vim ha.cf
 logfile /var/log/ha-log \\ 定義日志文件
 mcast eth0 227.10.10.1 694 1 0 \\定義組播地址以及傳遞的相關屬性(mcast組播;bcast廣播;ucast單播)
 auto_failback on  \\搶占模式;主節點恢復故障后從備用節點那里搶回主節點功能
 node   SQL1.linux.com  \\添加ha節點;此名稱必須是“uname -n”看到的主機名
 node   SQL2.linux.com   \\添加ha節點;此名稱必須是“uname -n”看到的主機名
 ping 172.16.2.1  \\ 定義仲裁設備
 compression     bz2 \\啟用壓縮功能
 compression_threshold 2 \\大于多少k之后開始壓縮
 crm on \\啟用heartbeat v2版

 3)在SQL1節點將配置復制給SQL2一份

[root@SQL1 ha.d]# scp authkeys ha.cf haresources.bak SQL2:/etc/ha.d/

4)啟動服務

[root@SQL1 ~]# service heartbeat start; ssh SQL2 "service heartbeat start"
logd is already running
Starting High-Availability services: 
Done.

logd is already running
Starting High-Availability services: 
Done.

 5)查看監聽端口:監聽在組播地址227.10.10.1的UDP/694端口

[root@SQL1 ~]# ss -upln
State       Recv-Q Send-Q   Local Address:Port   Peer Address:Port 
UNCONN      0      0    227.10.10.1:694  *:*  users:(("heartbeat",23422,7),("heartbeat",23423,7))
UNCONN      0      0    *:60749      *:*  users:(("heartbeat",23422,6),("heartbeat",23423,6))

 6)安裝mariadb數據庫

  配置mysql共享存儲

[root@time-or-nfs ~]# groupadd -g 300 mysql     \\由于nfs權限與mysql初始化要求,需要創建mysql用戶組
[root@time-or-nfs ~]# useradd -u 300 -g 300 mysql
[root@time-or-nfs ~]# mkdir -pv /mydata/data   \\創建共享目錄
[root@time-or-nfs ~]# vim /etc/exports    \\編輯nfs配置文件
   /mydata    172.16.2.0/24(rw,no_root_squash)  \\編輯共享權限
[root@time-or-nfs ~]# service nfs start   \\啟動nfs服務
[root@SQL1 ~]# tar xf mariadb-5.5.36-linux-x86_64.tar.gz  -C /usr/local  \\解壓mariadb
[root@SQL1 ~]# cd /usr/local/   \\\切換目錄
[root@SQL1 local]# ln -sv mariadb-5.5.36-linux-x86_64/ mysql  \\創建軟連接
[root@SQL1 local]# groupadd -g 300 mysql  \\ 創建mysql組,GID要與nfs服務器上的mysql的GID相同
[root@SQL1 local]# useradd -u 300 -g 300 mysql    \\創建mysql組,UDI與nfs服務器上的UID相同
[root@SQL1 local]# mkdir /mydata   \\創建掛載目錄
[root@SQL1 local]# mount -t nfs 172.16.2.13:/mydata  /mydata  \\掛載共享文件
[root@SQL1 local]#  cd mysql
[root@SQL1 mysql]#  scripts/mysql_install_db --user=mysql --datadir=/mydata/data/  \\初時化數據庫
[root@SQL1 mysql]# mkdir /etc/mysql/  \\創建mysql配置文件存放目錄
[root@SQL1 mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf  \\復制mysql配置文件到/etc/mysql/
[root@SQL1 mysql]# vim /etc/mysql/my.cnf   \\編輯mysql的配置文件
    datadir=/mydata/data   \\設置數據存放目錄
    innodb_file_per_table = on  \\開啟每表結構
    skip_name_resolve  = on   \\禁止mysql主機名解析
[root@SQL1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld   \\復制啟動腳本到/etc/init.d目錄下
[root@SQL1 mysql]# chkconfig --add /etc/init.d/mysqld  \\添加mysql啟動腳本為lsb風格
[root@SQL1 mysql]# service mysqld start  \\啟動mysql
Starting MySQL...               [  OK  ]
[root@SQL1 mysql]# mysql \\進入mysql
  mysql> CREATE DATABASE heartbeat;   \\創建測試數據庫
  mysql> use heartbeat;     \\設置默認庫
   mysql> CREATE TABLE ha_mysql(Number INT);  \\創建測試表
   mysql> GRANT ALL  ON heartbeat.*  TO "heartbeat"@"172.16.2.%" IDENTIFIED BY "heartbeat"; \\用戶授權
  mysql> FLUSH PRIVILEGES;  \\刷新權限
  mysql> SHOW DATABASES;  \\查看數據庫
        +--------------------+
        | Database     |
        +--------------------+
        | information_schema |
        | heartbeat      |
        | mysql        |
        | performance_schema |
        | test        |
        +--------------------+
    mysql> USE heartbeat ;  \\切換數據庫
    mysql> show tables;  \\查看表
        +---------------------+
        | Tables_in_heartbeat|
        +---------------------+
        | ha_mysql      |
        +---------------------+
[root@SQL1 mysql]# service mysqld stop    \\停止數據庫
Shutting down MySQL.            [  OK  ]
[root@SQL1 mysql]# umount /mydata/  \\卸載共享目錄
[root@SQL2 ~]# tar xf mariadb-5.5.36-linux-x86_64.tar.gz  -C /usr/local
[root@SQL2 ~]# cd /usr/local
[root@SQL2 local]# ln -sv mariadb-5.5.36-linux-x86_64/ mysql
[root@SQL2 local]# cd mysql/
[root@SQL2 mysql]# groupadd -g 300 mysql
[root@SQL2 mysql]# useradd -u 300  -g 300 mysql
[root@SQL2 mysql]# cp support-files/my-large.cnf  /etc/mysql/my.cnf
[root@SQL2 mysql]# vim /etc/mysql/my.cnf    
    datadir = /mydata/data
    innodb_file_per_table = on
    skip_name_resolve = on
[root@SQL2 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@SQL2 mysql]# chkconfig --add /etc/init.d/mysqld
[root@SQL2 mysql]# mount -t nfs 172.16.2.13:/mydata/ /mydata/
[root@SQL2 mysql]# service mysqld start
Starting MySQL..                                           [  OK  ]
[root@SQL2 mysql]# mysql -h172.16.2.14 -uheartbeat -p
    mysql> SHOW DATABASES;
    +--------------------+
    | Database     |
    +--------------------+
    | information_schema|
    | heartbeat     |
    | test       |
    +--------------------+
    mysql> USE heartbeat;
    mysql> SHOW TABLES ;
    +---------------------+
    | Tables_in_heartbeat|
    +---------------------+
    | ha_mysql      |
    +---------------------+
[root@SQL2 mysql]# service mysqld stop
Shutting down MySQL.                                       [  OK  ]    
[root@SQL2 mysql]# umount /mydata/

7)設置hacluster用戶的密碼(設置hacluster用戶密碼只需要在一個節點設置即可)

[root@SQL1 ~]# echo  "test" | passwd --stdin hacluster

8)在圖形終端啟動heartbeat的圖形接口:hb_gui (或者使用xshell的企業版)

12.png  

   13.png

  14.png

  9)添加vip

  15.png

  16.png

 17.png

 18.png

 10)添加nfs文件系統

  19.png

    20.png

    38.png

 11)添加mysql服務

   19.png

    20.png

     21.png

     11111111111.png

  12)添加vip與nfs的排序約束

   23.png

  41.png

   42.png

  22222222222222.png

  13)添加mysql與nfs的排序約束

  23.png

  24.png

  49.png

  50.png

  14)添加vip與nfs的順序約束

  333333333333.png

  28.png

  51.png

  444444444444.png

 15)添加mysql服務與nfs的順序約束

   53.png

  54.png

  55.png

  56.png

 16)添加本地約束

  31.png

    32.png

   33.png 

  5555555555.png

  17)啟動資源

  35.png

   1212121.png

 18)測試訪問mysql

[root@SQL1 ~]# mysql -h 172.16.2.100 -uheartbeat -p
Enter password: 
    mysql> SHOW DATABASES;
    +--------------------+
    | Database     |
    +--------------------+
    | information_schema|
    | heartbeat     |
    | test       |
    +--------------------+
    mysql> USE heartbeat;
    mysql> SHOW TABLES;
    +---------------------+
    | Tables_in_heartbeat|
    +---------------------+
    | ha_mysql      |
    +---------------------+

 19)切換工作主機;選擇sql2,右擊選擇Standby;在彈出的對話框中選擇yes

 212.png

 77777777777777777.png

  20)測試訪問:

[root@SQL2 ~]# mysql -h172.16.2.100 -uheartbeat -p
Enter password: 
    mysql> SHOW DATABASES;
    +--------------------+
    | Database     |
    +--------------------+
    | information_schema|
    | heartbeat     |
    | test       |
    +--------------------+
    mysql> USE heartbeat;
    mysql> SHOW TABLES;
    +---------------------+
    | Tables_in_heartbeat|
    +---------------------+
    | ha_mysql      |
    +---------------------+

原創文章,作者:馬行空,如若轉載,請注明出處:http://www.www58058.com/5728

(0)
馬行空馬行空
上一篇 2015-07-08
下一篇 2015-07-08

相關推薦

  • httpd的特性(初階應用)

    httpd的特性   httpd常用配置/etc/httpd/conf/httpd.conf 1、修改監聽的IP和PORT Listen [IP:]PORT (1)省略IP表示為0.0.0.0 (2)Listen指令可重復多次 Listen 8080 Listen 80 (3)先修改監聽的socket,重啟服務后方可生效 2、持久連續 KeepAl…

    2017-09-30
  • 第六周

    請詳細總結vim編輯器的使用并完成以下練習題 基本模式: 編輯模式,命令模式 輸入模式 末行模式 內置的命令行接口 打開文件: # vim [options] [file ..] +#:打開文檔后,直接讓光標處于第#行的行首 +/PATTERN:打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首   模式轉換: 編輯模式:默認模式 編…

    Linux干貨 2017-05-13
  • Haproxy+Keepalived+Varnish+LAMP+Memcacked+NFS 實現WordPress站點的動靜分離

    詳細說明,請點擊CSDN博客的連接地址:http://blog.csdn.net/yhy1271927580/article/details/70195158

    2017-04-16
  • RAID[Redundant Array of Independent Disks | 獨立硬盤冗余陣列 ]

    前言 一個技術要知其然還要知其所以然 RAID 獨立硬盤冗余陣列(RAID, Redundant Array of Independent Disks),舊稱廉價磁盤冗余陣列(Redundant Array of Inexpensive Disks),簡稱磁盤陣列 RAID的基本思想 其基本思想就是把多個相對便宜的硬盤組合起來,成為一個硬盤陣列組,使性能達到…

    Linux干貨 2016-05-20
  • 94-HAProxy

    一. HAProxy簡介 1. LB CLuster:

    2016-11-18
  • shell編程進階

    2、編寫腳本/root/bin/yesorno.sh,提示用戶輸入yes或no,并判斷用戶輸入的是yes還是no,或是其它信息 read -p “Enter you choice yes|no:” Choice Choice1=`echo $Choice | tr ‘[a-z]’ ‘[A-Z]&#8…

    2017-09-16

評論列表(2條)

  • charles2311
    charles2311 2016-06-23 20:02

    向你學習,有個問題想問一下,我運行hb_gui &報錯,是該如何解決。。安裝了Xmanager的。[root@node2 ~]# hb_gui & [1] 2384 [root@node2 ~]# Traceback (most recent call last): File “/usr/bin/hb_gui”, line 41, in import gtk, gtk.glade, gobject File “/usr/lib64/python2.6/site-packages/gtk-2.0/gtk/__init__.py”, line 64, in _init() File “/usr/lib64/python2.6/site-packages/gtk-2.0/gtk/__init__.py”, line 52, in _init _gtk.init_check() RuntimeError: could not open display

    • 馬行空
      馬行空 2016-06-24 11:28

      @charles2311我是在另一臺測試機上,安裝的gone桌面,進行試驗的

欧美性久久久久