利用heartbeat v2版搭建高可用mysql

一、實驗環境

 1)實驗圖

     1.png

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

 確??梢允褂弥鳈C名通信

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 09:36
下一篇 2015-07-08 09:38

相關推薦

  • Nginx負載均衡和動靜分離

    實驗目的:實現Nginx的負載均衡和動靜分離 實現環境:一臺server用作Nginx代理(需要兩塊網卡,eth0連接內網,eth1連接外網),兩臺用作web服務(每臺server都定義兩個虛擬機,端口分別是80和8080),一臺客戶端用于驗證結果; 操作步驟 負載均衡的實現: 一、配置IP 1.配置A主機的IP # ip addr add dev eth0…

    2017-05-13
  • 8/10作業腳本

    1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。 2、編寫腳本/root/bin/backup.sh,可實現每日將/etc/目錄備份到/root/etcYYYY-mm-dd中 3、編寫腳本/root/bin/disk.sh,顯示當前硬盤分區中空…

    Linux干貨 2016-08-15
  • 基礎命令。

    簡單基礎小命令 查看目錄 ls 查看當前路徑下的目錄 ls -a 查看當前路徑下的所有目錄,包含隱藏目錄(帶.的就是隱藏) ls -A 跟-a一樣,只是不顯示上一路徑和本身路徑(就是.和..) ls -l 顯示額外的信息 ls -R 進入每個文件夾查看(遞歸) ls -ld 查看元數據 ls -1(數字) 排列 ls -r 倒序 ls -t 按修改時間排序 …

    Linux干貨 2017-05-29
  • Linux系統命令使用格式已經如何查看幫助

    在Linux 系統中有非常多的命令一般的命令格式:“COMMAND OPTIONS ARGUMENTS” 下面有一些基礎命令可以體驗下命令的基本格式用法 ifconfig命令    作用: 配置網絡接口,查看網絡接口信息    基本語法:     ifconfig  […

    Linux干貨 2016-08-15
  • 分布式文件系統之fastDFS部署

    fastDFS下載地址:https://github.com/happyfish100/fastdfs部署參考文檔:http://joelhy.github.io/2015/01/27/FastDFS-v5-06-deploy/ 我們接下來來部署fastDFS 部署結構: 192.168.42.150 node1 [Tracker]192.168.42.15…

    Linux干貨 2017-06-16
  • 標記2

    標記2

    Linux干貨 2018-03-11

評論列表(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桌面,進行試驗的

欧美性久久久久