MariaDB數據庫服務的高可用:node
使用 heartbeat v1 版實現兩個節點的 MariaDB數據庫服務的高可用。mysql
節點:linux
node1 192.168.60.33算法
node2 192.168.60.88sql
MySQL數據庫的數據文件使用nfs共享文件系統解決shell
nfs Server 192.168.60.22數據庫
架構以下圖:vim
1、heartbeat 節點之間通訊要求的設置;安全
(1)、解決節點的主機名解析bash
由於 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 root@192.168.60.33
(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
說明:
從上面測試結果,已經兩個節點均可以成功實現主機名的解析。
二、爲了操做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 root@192.168.60.33
在 node2 節點生成密鑰對
[root@node2 ~]# ssh-keygen -t rsa
把「公鑰」拷貝到 node1 節點
[root@node2 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.60.88
(2)、測試基於密鑰是否可以實現無障礙通信
[root@node1 ha.d]# ssh node2 -- 'hostname' node2.9527du.com [root@node2 ~]# ssh node1 'hostname' node1.9527.com
說明:
從上述測試結果,兩節點已經可以實現基於密鑰實現通信。
2、配置 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的密碼也無法登錄咱們的系統的。
一、在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
二、在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
三、建立文件系統並受權
(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 共享文件系統的節點有了共享文件系統的「讀寫」權限。
建立與節點(node一、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 的身份操做的。
3、安裝二進制版本的 mariadb-5.5.36-linux-i686.tar.gz 數據庫服務器
一、在 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
二、在 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 數據庫軟件。
4、安裝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高可用集羣要解決三個問題:
一、HA高可用集羣之間的心跳信息可以互相傳遞; 二、把須要配置成高可用集羣的資源告訴 Cluster Reslurce Manager 資源管理器 三、配置成高可用服務的資源要有相對應的資源代理Reslurce Agent腳本,
heartbeat v1 版本:
ha.cf 配置底層 Messaging Layer 的工做特性 haresources 資源管理器的配置文件,能夠在這個文件配置高可用集羣的資源 資源代理 hearebeat 支持使用LSB風格的腳本作爲資源代理(服務的啓動腳本)。
在 node1 節點安裝 heartbeat v2 版本,讓它以 heartbeat v1 版本的工做方式工做。
一、安裝 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
二、配置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 版本的資源管理器。 其它使用默認。
三、配置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 進程。
四、heartbeat 節點的心跳信息是通過加密後再傳輸的,要配置加密文件
生成隨機碼用於集羣信息加密
[root@node2 ~]# openssl rand -base64 5 IvW8H20=
配置加密使用的算法
[root@node1 ha.d]# vim authkeys auth 2 2 sha1 IvW8H20=
五、複製 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
5、測試使用 heartbeart v1 實現數據庫服務的高可用是否成功
注意:
在啓動 heartbeart 以前,要保證HA的各節點這間的時間是同步。
一、在 node1 節點啓動 heartbeat 服務
[root@node1 mydata]# service heartbeat start Starting High-Availability services: 2014/09/07_10:56:03 INFO: Resource is stopped [ OK ]
二、查看 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啓動。
三、遠程鏈接測試數據庫:
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)
說明:
已經可以遠程鏈接。
四、建立數據庫和表
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 節點已經可使用數據庫了。
五、在 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 ]
六、在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 節點成功啓動。
七、在遠程測試是否還可使用數據庫
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 數據庫的高可用已經搭建成功。