heartbeat v1 實現 MariaDB數據庫的高可用

MariaDB數據庫服務的高可用:

使用 heartbeat v1 版實現兩個節點的 MariaDB數據庫服務的高可用。

節點:

    node1        192.168.60.33

    node2        192.168.60.88

MySQL數據庫的數據文件使用nfs共享文件系統解決

nfs Server       192.168.60.22

架構如下圖:

wKiom1QMRl3gE_cJAAIe0TaKqHs158.jpg

一、heartbeat 節點之間通信要求的設置;

(1)、解決節點的主機名解析

因爲 heartbeat 的節點間通訊基於名稱。基於名稱進行通訊就要實現域名解析:而名稱解析有兩種方法:

A、 基於本地hosts 文件實現主機名到IP地址的解析;
B、 使用DNS域名服務器進行域名解析;

基於效率等方面考慮,使用本地hosts 文件進行主名與IP地址的解析。

把 192.168.60.88 主機設置爲HA高可用的節點2 node2. 

設置基於本地hosts文件實現域名解析

[root@nfs admin]# echo "192.168.60.88 node2.9527du.com node2" > /etc/hosts
[root@nfs admin]# echo "192.168.60.33 node1.9527du.com node2" >> /etc/hosts

把配置好的hosts 文件複製一份到另一節點:

[root@nfs admin]# scp -p /etc/hosts [email protected]

(2)、給HA高可用集羣的各節點設置主機名

A)、設置192.168.60.88主機的主機名爲:node2.9527du.com

[root@nfs admin]# vim /etc/sysconfig/network
HOSTNAME=node2.9527du.com

使用【hostname】命令設置主機名立即生效

[root@nfs admin]# hostname node2.9527du.com

測試主機名能否解析成功

[root@nfs admin]# ping -c 1 node2.9527du.com
PING node2.9527du.com (192.168.60.88) 56(84) bytes of data.
64 bytes from node2.9527du.com (192.168.60.88): icmp_seq=1 ttl=64 time=0.010 ms

--- node2.9527du.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.010/0.010/0.010/0.000 ms

B)、設置192.168.60.33主機的主機名爲:node1.9527du.com

[root@www admin]# vim /etc/sysconfig/network
HOSTNAME=node2.9527du.com

使用【hostname】命令設置主機名立即生效

[root@www admin]# hostname node1.9527du.com

檢測使用hosts文件是否能夠解析主機名

[root@www admin]# ping -c 1 node2.9527du.com
PING node2.9527du.com (192.168.60.88) 56(84) bytes of data.
64 bytes from node2.9527du.com (192.168.60.88): icmp_seq=1 ttl=64 time=0.010 ms

--- node2.9527du.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.010/0.010/0.010/0.000 ms
[root@node2 admin]# ping -c 1 node1.9527du.com
PING node1.9527du.com (192.168.60.33) 56(84) bytes of data.
64 bytes from node1.9527du.com (192.168.60.33): icmp_seq=1 ttl=64 time=0.010 ms

--- node1.9527du.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.010/0.010/0.010/0.000 ms

說明:

    從上面測試結果,已經兩個節點都可以成功實現主機名的解析。


2、爲了操作heartbeat 方便,把兩節點配置成信任主機。不需要口令就可以直接通信。

(1)、建立基於密鑰通訊

在node1節點生成密鑰對

[root@node1 ha.d]# ssh-keygen -t rsa

把“公鑰”拷貝到 node2 節點

[root@node1 ha.d]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

在 node2 節點生成密鑰對

[root@node2 ~]# ssh-keygen -t rsa

把“公鑰”拷貝到 node1 節點

[root@node2 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

(2)、測試基於密鑰是否能夠實現無障礙通訊

[root@node1 ha.d]# ssh node2 -- 'hostname'
node2.9527du.com
[root@node2 ~]# ssh node1 'hostname'
node1.9527.com

說明:

    從上述測試結果,兩節點已經能夠實現基於密鑰實現通訊。



二、配置 node1 和 node2 節點的mysql用戶都有 nfs 共享文件系統的:rwx 權限

    使用nfs服務器共享MySQL的數據文件,用戶向MySQL數據庫服務器,發起SQL操作時,MySQL數據庫服務器以mysql用戶的身份執行用戶對數據庫的操作的。

    所以,mysql用戶一定要有 nfs 服務器導出的共享文件系統的:"讀/寫“ 權限。

而根據 nfs 的資源訪問控制模型:

(1)、在nfs服務器導出的文件系統中要有讀寫權限。意思是說:nfs設置導出共享文件系統時,要授權客戶端有:讀寫權限。
(2)、往nfs共享文件系統中讀寫數據的用戶映射到nfs服務器的本地文件系統一定要有讀寫權限。

只要滿足上述兩個條件,mysql用戶纔可以往nfs共享文件系統中讀寫數據的。

所以,基於上述要求和mysql初始化數據庫時一定要使用mysql用戶等方面的考慮。在HA高可用的每個節點都創建一樣的用戶:

                    用戶:               mysql
		          UID:                388
	         屬於那個組:                388

這樣就保證了:兩個節點的 mysqld 都可以使用同一份數據文件。

說明:

    把mysql 創建爲系統用戶,且登記shell 爲: /sbin/nologin 這樣,即使某人獲得了mysql的密碼也沒法登陸我們的系統的。

1、在node1 節點創建用戶

[root@node1 home]# groupadd -r -g 388  mysql
[root@node1 home]# useradd  -r -g 388 -u 388 -M -s /sbin/nologin mysql
[root@node1 home]# id mysql
uid=388(mysql) gid=388(mysql) groups=388(mysql) context=user_u:system_r:unconfined_t
[root@node1 home]# grep "mysql" /etc/passwd
mysql:x:388:388::/home/mysql:/sbin/nologin

2、在node2 節點創建用戶

[root@node2 local]# groupadd  -r -g 388 mysql
[root@node2 local]# useradd -r -g 388 -u 388 -M -s /sbin/nologin mysql
[root@node2 local]# id mysql
uid=388(mysql) gid=388(mysql) groups=388(mysql)
[root@node2 local]# grep "mysql" /etc/passwd
mysql:x:388:388::/home/mysql:/sbin/nologin

3、創建文件系統並授權

(1)創建共享目錄

利用lvm 邏輯卷做爲數據庫的數據目錄。方便使用lvm的快照功能實現數據庫的物理備份。

查看myvg卷組是否還有空間創建LV

[root@nfs ~]# vgdisplay myvg | grep "[[:space:]]*\/[[:space:]]*Size"
  Alloc PE / Size       1024 / 4.00 GiB
  Free  PE / Size       1536 / 6.00 GiB

創建lv並格式化

[root@nfs ~]# lvcreate -L 2G -n SHAREDIR myvg
  Logical volume "SHAREDIR" created
[root@nfs ~]# mke2fs -t ext4 /dev/myvg/SHAREDIR
[root@nfs ~]# echo $?
0

創建掛載點

[root@nfs /]# mkdir /mysqldata

編輯/etc/fstab文件,讓它機自動掛載,且要指定支持facl功能

[root@nfs /]# vim /etc/fstab
/dev/mapper/myvg-SHAREDIR   /mysqldata          ext4    defaults,acl        0 0 
[root@nfs /]# mount -a
[root@nfs /]# mount | grep "SHAREDIR"
/dev/mapper/myvg-SHAREDIR on /mysqldata type ext4 (rw,acl)

啓動nfs服務器

[root@nfs /]# service nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]

(2)、在nfs 服務器導出的文件系統配置文件中授權客戶端有:讀寫權限

 導出文件系統

[root@nfs ~]# vim /etc/exports
/mysqldata      192.168.60.0/24(rw)

不重啓nfs 服務的情況下重新導出文件系統

[root@nfs /]# exportfs -ra
[root@nfs /]# showmount -e
Export list for nfs.9527du.com:
/mysqldata 192.168.60.0/24

說明:

     nfs服務器已經創建成功。

(3)、在 nfs 服務器的文件系統級別授權

    mysql用戶的UID號在 nfs 服務器中有對應的用戶名的話,就以該用戶的身份執行 mysql用戶發起的函數執行請求。否則的話以nodoby 用戶身份執行。

   這就是nfs中的用戶映射。所以,在文件系統級別要保證,mysql的UID號映射用戶一定要有nfs共享文件系統的:讀寫權限。這樣就保證了,掛載 nfs 共享文件系統的節點有了共享文件系統的“讀寫”權限。

創建與節點(node1、node2)有一樣UID號的用戶 usenfs

[root@nfs /]# id usenfs
uid=388(usenfs) gid=388(usenfs) groups=388(usenfs)
[root@nfs /]# useradd  -r -u 388 -M -s /sbin/nologin usenfs
[root@nfs /]# id usenfs
uid=388(usenfs) gid=388(usenfs) groups=388(usenfs)

設置:ID號爲388的用戶有 rwx權限

[root@nfs /]# setfacl -m u:usenfs:rwx /mysqldata/
[root@nfs /]# getfacl /mysqldata/
getfacl: Removing leading '/' from absolute path names
# file: mysqldata/
# owner: root
# group: root
user::rwx
user:usenfs:rwx
group::r-x
mask::rwx
other::r-x

說明: 

    mysql 用戶操作nfs共享文件系統時,是以usenfs 的身份操作的。



三、安裝二進制版本的 mariadb-5.5.36-linux-i686.tar.gz 數據庫服務器

1、在 node1 安裝 mariadb 數據庫服務器

(1)、掛載 nfs 共享文件系統

創建掛載點

[root@node1 /]# mkdir mydata

查看 nfs 服務器共享的文件系統

[root@node1 /]# showmount -e 192.168.60.22
Export list for 192.168.60.22:
/mysqldata 192.168.60.0/24

掛載

[root@node1 /]# mount -t nfs 192.168.60.22:/mysqldata /mydata
[root@node1 /]# mount | grep mysqldata
192.168.60.22:/mysqldata on /mydata type nfs (rw,addr=192.168.60.22)

創建 mariabd 數據庫的數據目錄爲: mysql

[root@node1 mydata]# mkdir  mysql

(2)、安裝 mariadb 數據服務

解壓到 /usr/local 目錄下

[root@node1 admin]# tar -xf mariadb-5.5.36-linux-i686.tar.gz  -C /usr/local/
[root@node1 admin]# cd /usr/local/

做軟鏈接,爲了以後升級方便

[root@node1 local]# ln -sv mariadb-5.5.36-linux-i686 mysql
create symbolic link `mysql' to `mariadb-5.5.36-linux-i686'
[root@node1 local]# ll | grep mysql
lrwxrwxrwx  1 root root   25 Sep  7 09:49 mysql -> mariadb-5.5.36-linux-i686
[root@node1 local]# cd mysql/

修改mysql 目錄下的所有文件的屬主屬組都爲 mysql 用戶,因爲執行數據庫的初如化時,是以mysql身份運行一些程序進行完成數據庫的初始化工作的

[root@node1 mysql]# chown -R mysql:mysql ./*

初始化數據庫

[root@node1 mysql]# ./scripts/mysql_install_db --datadir=/mydata/mysql  --user=mysql
Installing MariaDB/MySQL system tables in '/mydata/mysql' ...
OK
Filling help tables...
OK

說明:

    從初始化數據庫時,輸出的信息可以看出,數據庫已經初始化成功。


(2)、爲啓動數據庫服務器準備一些必備條件

爲mysqld 提供配置文件,並且設置數據目錄的位置。

[root@node1 mysql]# cp support-files/my-large.cnf /etc/my.cnf
[root@node1 mysql]# vim /etc/my.cnf
thread_concurrency = 2        
datadir = /mydata/mysql/

爲啓動mariadb服務器提供啓動腳本

[root@node1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@node1 mysql]# ll /etc/init.d/mysqld
-rwxr-xr-x 1 root root 11844 Sep  7 09:59 /etc/init.d/mysqld
[root@node1 mysql]# chown -R root:mysql ./*


(3)、啓動數據庫服務器並測試

[root@node1 mysql]# service mysqld start
Starting MySQL...                                          [  OK  ]

爲了執行命令方便,導出 mariadb 數據庫的工具程序。

[root@node1 mysql]# vim /etc/profile.d/mysql.sh
PATH=$PATH:/usr/local/mysql/bin
[root@node1 mysql]# . /etc/profile

連接數據庫服務器

[root@node1 mysql]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.36-MariaDB-log MariaDB Server

Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

說明:

    從上述要以看出,在node1 節點已經成功安裝好 mariadb 數據庫服務器。

(4)、停止 mariadb 數據庫服務器,並設置開機不能自動啓動

[root@node1 mysql]# service mysqld stop
[root@node1 mysql]# chkconfig mysqld off
[root@node1 mysql]# chkconfig --list mysqld
mysqld          0:off   1:off   2:off   3:off   4:off   5:off   6:off


2、在 node2 節點安裝 mariadb 數據庫服務器

(1)、掛載 nfs 共享文件系統

創建掛載點

[root@node2 /]# mkdir mydata

查看 nfs 服務器共享的文件系統

[root@node2 /]# showmount -e 192.168.60.22
Export list for 192.168.60.22:
/mysqldata 192.168.60.0/24

掛載

[root@node2 /]# mount -t nfs 192.168.60.22:/mysqldata /mydata
[root@node2 /]# mount | grep "mydata"
192.168.60.22:/mysqldata on /mydata type nfs (rw,addr=192.168.60.22)

(2)、安裝 mariadb 數據庫服務器

解壓到指定目錄下。

[root@node2 admin]# tar -xf mariadb-5.5.36-linux-i686.tar.gz -C /usr/local
[root@node2 admin]# cd /usr/local/

爲了以後升級方便設置軟鏈接

[root@node2 local]# ln -sv mariadb-5.5.36-linux-i686 mysql
create symbolic link `mysql' to `mariadb-5.5.36-linux-i686'
[root@node2 local]# ll | grep "mysql"
lrwxrwxrwx  1 root root   25 Sep  7 10:11 mysql -> mariadb-5.5.36-linux-i686
[root@node2 mysql]# chown -R root:mysql ./*

由於 node1 與 node2 是共享數據的,這裏不需要數據庫的初始化。

只需要保證兩個節點的數據庫配置文件相同即可

複製 node1 的配置文件和啓動腳本

[root@node2 mysql]# scp -p node1:/etc/my.cnf /etc
my.cnf                                        100% 4926     4.8KB/s   00:00
[root@node2 mysql]# scp -p node1:/etc/init.d/mysqld /etc/init.d/
mysqld                                        100%   12KB  11.6KB/s   00:00

(3)、啓動數據庫並測試

[root@node2 /]# service  mysqld start
Starting MySQL...                                          [  OK  ]
[root@node2 /]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.36-MariaDB-log MariaDB Server

Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.01 sec)

說明:

    從上述信息可以看出,在 node2 已經成功安裝好 mariadb 數據庫

 

(4)、由於安裝數據庫時,默認安裝了很多用戶都是沒有密碼的,極其不安全。所以,要給數據庫服務器的用戶設置密碼

清理安裝數據庫時默認安裝的用戶,添加能遠程管理數據庫的用戶

MariaDB [(none)]> drop user 'root'@'localhost';
MariaDB [(none)]> drop user 'root'@'node1.9527du.com';
MariaDB [(none)]> drop user 'root'@'::1';
MariaDB [(none)]> drop user ''@'localhost';
MariaDB [(none)]> drop user ''@'node1.9527du.com';

給保留的用戶設置密碼

MariaDB [(none)]> set password for 'root'@'127.0.0.1' = password('root');
Query OK, 0 rows affected (0.07 sec)

設置遠程管理的用戶

MariaDB [(none)]> grant all on *.* to 'admin'@'%.%.%.%' identified by 'admin';
Query OK, 0 rows affected (0.00 sec)

現在 MariaDB 數據庫的用戶

MariaDB [(none)]> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host      | password                                  |
+------+-----------+-------------------------------------------+
| root | 127.0.0.1 | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| admin | %.%.%.%   | *4ACFE3202A5FF5CF467898FC58AAB1D615029441 |
+------+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

測試是否可以登陸

[root@node2 /]# mysql -uroot -h127.0.0.1 -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.36-MariaDB-log MariaDB Server

Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

(5)、停止 mariadb 數據庫服務器,並設置開機不能自動啓動

[root@node2 /]# service mysqld stop
[root@node2 /]# chkconfig mysqld off
[root@node2 /]# chkconfig --list mysqld
mysqld          0:off   1:off   2:off   3:off   4:off   5:off   6:off

說明:

    在兩個節點已經安裝好 MariaDB 數據庫軟件。



四、安裝heartbeat

HA高可用集羣服務大概的工作原理:

             通過 Messaging Layer 層各節點傳遞”心跳信息“------> 實現節點的冗餘

             通過資源代理(Resource Agent)腳本的檢測功能把節點啓動的資源的運行狀況,

             報告給 CRM(Cluster Resource Manager)資源管理器中的本地資源管理器

             LRM(Local Resource Manager)。資源管理器中的PE(Policy Engine)會根據HA集羣

             的節點是否在線和在節點的資源運行狀態等信息做出決策。

             把決策通過 Messaging Layer傳遞到各節點。節點接收到決策,CRM資源管理器

     的本地資源管理組件LRM(Local Resource Manager)指揮資源代理(Resource Agent)   

             做:start,stop,監測等操作 ---------> 實現節點資源的冗餘。

所以說,我們配置HA高可用集羣要解決三個問題:

        1、HA高可用集羣之間的心跳信息能夠互相傳遞;
	2、把需要配置成高可用集羣的資源告訴 Cluster Reslurce Manager 資源管理器  
	3、配置成高可用服務的資源要有相對應的資源代理Reslurce Agent腳本,

heartbeat v1 版本:

  ha.cf              配置底層 Messaging Layer 的工作特性
  haresources        資源管理器的配置文件,可以在這個文件配置高可用集羣的資源
  資源代理            hearebeat 支持使用LSB風格的腳本做爲資源代理(服務的啓動腳本)。


在 node1 節點安裝 heartbeat v2 版本,讓它以 heartbeat v1 版本的工作方式工作。

1、安裝 heartbeat 並複製配置文件

[root@node1 admin]# yum localinstall --gpgcheck heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm  heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm
[root@node1 ha.d]# cp -p /usr/share/doc/heartbeat-2.1.4/{ha.cf,haresources,authkeys} /etc/ha.d/

該文件的的權限一定要是:600,否則的話 heartbeat不讓啓用的。

[root@node1 ha.d]# chmod 600 authkeys

2、配置HA高可用的節點的心跳信息傳遞

[root@node1 ha.d]# vim ha.cnf
mcast eth1 225.99.99.99  694 1 0  ---> 使用多播的方式傳遞節點心跳信息(通常用於HA的備用節點不只一臺時使用)
auto_failback on           -----> 當主節點恢復後,服務自動切回。
node    node1.9527du.com    ----> 主節點主機名。
node    node2.9527du.com   -----> 備用節點主機名。
ping 192.168.60.1           ----> ping 節點,用來測試網絡連接
compression     bz2         ----> 集羣事務信息壓縮傳輸
compression_threshold 2      ---> 信息大於2kb就壓縮
# crm respawn               ----> 不啓用 heartbeat v2 版本的資源管理器。

其它使用默認。

3、配置HA高可用集羣的資源

[root@node1 ha.d]# vim haresources
node1.9527du.com 192.168.60.24/32/eth0/192.168.255.255 Filesystem::192.168.60.22:/mysqldata::/mydata::nfs mysqld ------> 配置主節點node1上的高可用資源

說明:

    MySQL數據庫的高可用的資源有:mariadb 數據庫服務器的IP地址、mysqld二進制運行程序、共享的 nfs 文件系統

    一個完整的數據庫服務是由該三個資源組成的,意思是說,這三個資源都要運行正常纔可以提供數據庫的服務的。

    所以,我們要定義資源約束。如:三個資源的啓動順序(關閉資源的順序是逆過來的,所以不需要定義)。

    heartbeat v1 版本的資源的啓動順序的約束是由:定義在節點的先後順序決定的。所以,越要先啓動的資源要寫在最前面。

    mariaDB數據庫的高可用服務資源的順序如下:

    先配置上數據庫的IP地址 ------> 掛載 nfs 共享的文件系統(數據庫的數據目錄)------> 啓動 mysqld 進程。


 4、heartbeat 節點的心跳信息是經過加密後再傳輸的,要配置加密文件 

生成隨機碼用於集羣信息加密

[root@node2 ~]# openssl rand -base64 5
IvW8H20=

配置加密使用的算法

[root@node1 ha.d]# vim authkeys
auth 2
2 sha1 IvW8H20=

5、複製 heartbeat 集羣所需要的配置文件到 node2 節點。

[root@node1 ha.d]# scp -p ha.cf haresources authkeys node2:/etc/ha.d/
ha.cf                                         100%   10KB  10.4KB/s   00:00
haresources                                   100% 5967     5.8KB/s   00:00
authkeys                                      100%  669     0.7KB/s   00:00

注意:

   要驗證另外一個節點的認證文件的權限是否符合要求。

[root@node1 ha.d]# ssh node2 'ls -l /etc/ha.d/ | grep "authkeys"'
-rw------- 1 root root   669 Sep  7 01:56 authkeys


五、測試使用 heartbeart v1 實現數據庫服務的高可用是否成功

注意:

   在啓動 heartbeart 之前,要保證HA的各節點這間的時間是同步。

1、在 node1 節點啓動 heartbeat 服務

[root@node1 mydata]# service heartbeat start
Starting High-Availability services:
2014/09/07_10:56:03 INFO:  Resource is stopped
                                                           [  OK  ]

2、查看 mariaDB 數據庫的三個資源是否啓動了

[root@node1 mydata]# ifconfig  | grep "192.168.60.24"
          inet addr:192.168.60.24  Bcast:192.168.255.255  Mask:255.255.255.255
[root@node1 mydata]# netstat -anptl | grep "mysqld"
tcp        0      0 :::3306                     :::*                        LISTEN      7811/mysqld
root@node1 mydata]# ps aux | grep "mysqld"
root      7508  0.0  0.2   4536  1260 ?        S    10:56   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/mydata/mysql/ --pid-file=/mydata/mysql//node1.9527du.com.pid
mysql     7811  0.0 15.9 815388 82080 ?        Sl   10:56   0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/mydata/mysql/ --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/mydata/mysql//node1.9527du.com.err --pid-file=/mydata/mysql//node1.9527du.com.pid --socket=/tmp/mysql.sock --port=3306

說明:

    從上述結果得知,數據庫高可用的三個資源已經成功在node1啓動。


3、遠程連接測試數據庫:

D:\>mysql -uadmin -h192.168.60.24 -p

Enter password: *****

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 10

Server version: 5.5.36-MariaDB-log MariaDB Server


Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| test               |

+--------------------+

4 rows in set (0.01 sec)

說明:

   已經能夠遠程連接。


4、創建數據庫和表

mysql> create database testdb;
Query OK, 1 row affected (0.01 sec)

mysql> create table testdb.tb1(Uname varchar(20));
Query OK, 0 rows affected (0.38 sec)

說明:

    在 node1 節點已經可以使用數據庫了。


5、在 node2 節點啓動 heartbeat 服務

[root@node1 mydata]# ssh node2 'service heartbeat start'
Starting High-Availability services:
2014/09/07_11:14:03 INFO:  Resource is stopped
[  OK  ]

6、在node2關閉node1,觀察資源是否會轉移

[root@node2 /]# ssh node1 'service heartbeat stop'
Stopping High-Availability services:
[  OK  ]
[root@node2 /]# ifconfig | grep "192.168.60.24"
          inet addr:192.168.60.24  Bcast:192.168.255.255  Mask:255.255.255.255
[root@node2 /]# netstat -anptl | grep "mysqld"
tcp        0      0 :::3306                     :::*                        LISTEN      5096/mysqld
[root@node2 /]# ps aux | grep "mysqld"
root      4793  0.0  0.2   4536  1260 ?        S    11:15   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/mydata/mysql/ --pid-file=/mydata/mysql//node2.9527du.com.pid
mysql     5096  0.1 15.4 811292 79776 ?        Sl   11:15   0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/mydata/mysql/ --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/mydata/mysql//node2.9527du.com.err --pid-file=/mydata/mysql//node2.9527du.com.pid --socket=/tmp/mysql.sock --port=3306

說明:

    從上述測試結果,可以看出,數據庫服務需要的三個資源已經在 node2 節點成功啓動。



7、在遠程測試是否還可以使用數據庫

D:\>mysql -uadmin -h192.168.60.24 -p
。。。。
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| testdb             |
+--------------------+
5 rows in set (0.01 sec)

當在 node2 節點啓動 數據庫的高可用服務器,刪除在 node1 創建的數據庫是否成功?

mysql> drop database testdb;
Query OK, 1 row affected (0.39 sec)

說明:

   從上述測試結果得出,mariaDB 數據庫的高可用已經搭建成功。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章