先說一下大概原理
虛擬機A ip爲10.0.3.92 作爲master
虛擬機B ip爲10.0.3.102 作爲slave1
虛擬機C ip爲10.0.3.103 作爲slave2
虛擬機D ip爲10.0.3.104 作爲manager
首先配置一主兩從環境,A爲主,BC爲從
然後配置所有虛擬機兩兩之間ssh免密登錄(ssh怎麼免密登錄,自己百度,或者搜索我博客裏的文章吧,也有記錄怎麼配置ssh免密登錄的)
D中新建配置文件
D中檢測ssh配置以及主從配置是否成功,這兩個非常關鍵
如果上面都沒有問題,那麼我們試着把master服務器停掉之後,manager會把主庫自動切換到B
下面來說一下具體部署步驟
重要的事情先說,那就是,防火牆和selinux必須關閉,如果不想關閉,那你就慢慢折騰該通過哪個端口之類的吧
下一個MHA壓縮包,裏面有我們需要用到的文件
http://www.yougemysqldba.com/discuz/viewthread.php?tid=491&extra=page%3D1
我下載的是第二個rhel56.zip,因爲我的是6.5的系統
虛擬機A
首先安裝mysql,mysql-server (我的系統是centos6.5,聽說centos7上部署MHA還需要做其他額外的工作),然後自然而然是開啓服務並修改密碼
配置/etc/my.cnf,添加在mysqld裏面,內容如下
server-id=1 log-bin=master-log relay-log=relay-log skip_name_resolve innodb_file_per_table
解壓我們下載的那個壓縮包,在虛擬機A上,我們只需要安裝mha4mysql-node-0.54-0.el6.noarch.rpm,怎麼安裝?百度啊,安裝時提示缺少依賴關係依賴包?百度啊
進入mysql,執行以下命令
新建一個repluser用戶,專門用來同步
mysql> show master status;
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-log.000004 | 106 | | |
+-------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
這樣子的話說明master端配置好了
虛擬機B以及虛擬機C:
當然這兩臺虛擬機也需要安裝node那個rpm文件包
配置文件/etc/my.cnf,當然也是放在mysqld下面了
symbolic-links=0
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_bin
default-storage-engine=INNODB
max_allowed-packet=32M
sql_mode=NO_AUTO_VALUE_ON_ZERO
server-id=2 #虛擬機C只需要把這裏改爲3
relay-log=relay-log
log-bin=master-log
read_only=1
relay_log_purge=0
skip_name_resolve
innodb_file_per_table
前面多出的幾行是設置中文編碼
進入數據庫
change master 設置
change master to master_host='10.0.3.92',MASTER_USER='repluser',MASTER_PASSWORD='replpass',MASTER_LOG_FILE='master-log.000004',MASTER_LOG_POS=106;
現在start slave查看slave狀態,主要查看下面兩個參數是否爲yes,如果是就表示正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
虛擬機D:
安裝下載的壓縮包裏面的所有rpm文件
配置
[root@node4 ~]# cat /etc/masterha_default.cnf
[server default]
user=root #聽說這個是數據庫的用戶名,需要在四臺虛擬機上都創建這個用戶,並且授權爲可遠程登錄,反正我是直接用的root用戶,並且密碼統一爲123456
password=123456 #這個是上面用戶對應的密碼
manager_workdir=/data/masterha/app1
manager_log=/data/masterha/app1/manager.log
remote_workdir=/data/masterha/app1
ssh_user=root #ssh登錄的用戶名,配置ssh時也是配置該用戶
repl_user=repluser #配置主從時設置的用戶
repl_password=replpass #主從用戶密碼
ping_interval=1
[server1]
hostname=10.0.3.92
[server2]
hostname=10.0.3.102
[server3]
hostname=10.0.3.103
[root@node4 ~]#
[root@node4 ~]# masterha_
masterha_check_repl masterha_check_status masterha_manager masterha_master_switch masterha_stop
masterha_check_ssh masterha_conf_host masterha_master_monitor masterha_secondary_check
[root@node4 ~]# masterha_check_ssh --conf=/etc/masterha_default.cnf 檢測ssh配置
Thu Nov 9 01:12:32 2017 - [info] Reading default configuratoins from /etc/masterha_default.cnf..
Thu Nov 9 01:12:32 2017 - [info] Reading application default configurations from /etc/masterha_default.cnf..
Thu Nov 9 01:12:32 2017 - [info] Reading server configurations from /etc/masterha_default.cnf..
Thu Nov 9 01:12:32 2017 - [info] Starting SSH connection tests..
Thu Nov 9 01:12:33 2017 - [debug]
Thu Nov 9 01:12:32 2017 - [debug] Connecting via SSH from [email protected](10.0.3.92:22) to [email protected](10.0.3.102:22)..
Thu Nov 9 01:12:32 2017 - [debug] ok.
Thu Nov 9 01:12:32 2017 - [debug] Connecting via SSH from [email protected](10.0.3.92:22) to [email protected](10.0.3.103:22)..
Thu Nov 9 01:12:33 2017 - [debug] ok.
Thu Nov 9 01:12:34 2017 - [debug]
Thu Nov 9 01:12:33 2017 - [debug] Connecting via SSH from [email protected](10.0.3.102:22) to [email protected](10.0.3.92:22)..
Thu Nov 9 01:12:33 2017 - [debug] ok.
Thu Nov 9 01:12:33 2017 - [debug] Connecting via SSH from [email protected](10.0.3.102:22) to [email protected](10.0.3.103:22)..
Thu Nov 9 01:12:33 2017 - [debug] ok.
Thu Nov 9 01:12:34 2017 - [debug]
Thu Nov 9 01:12:33 2017 - [debug] Connecting via SSH from [email protected](10.0.3.103:22) to [email protected](10.0.3.92:22)..
Thu Nov 9 01:12:34 2017 - [debug] ok.
Thu Nov 9 01:12:34 2017 - [debug] Connecting via SSH from [email protected](10.0.3.103:22) to [email protected](10.0.3.102:22)..
Thu Nov 9 01:12:34 2017 - [debug] ok.
Thu Nov 9 01:12:34 2017 - [info] All SSH connection tests passed successfully.
[root@node4 ~]#
[root@node4 ~]# masterha_check_repl --conf=/etc/masterha_default.cnf #檢測主從複製,正常情況下mysql replication health is ok,這裏因爲我是在實驗完成後停掉master服務器了,才導致的not ok。剛開始的時候我這裏一直是not ok,然後我就各種查錯,最後發現是防火牆不知道什麼時候又開啓了。。。這裏我建議在D上嘗試連接另外三臺虛擬機的數據庫,分別用root登錄以及主從複製用戶登錄,如果不報錯,檢測主從複製這裏應該就沒有問題了
Thu Nov 9 01:12:59 2017 - [info] Reading default configuratoins from /etc/masterha_default.cnf..
Thu Nov 9 01:12:59 2017 - [info] Reading application default configurations from /etc/masterha_default.cnf..
Thu Nov 9 01:12:59 2017 - [info] Reading server configurations from /etc/masterha_default.cnf..
Thu Nov 9 01:12:59 2017 - [info] MHA::MasterMonitor version 0.55.
Thu Nov 9 01:13:00 2017 - [error][/usr/share/perl5/vendor_perl/MHA/ServerManager.pm, ln604] There are 2 non-slave servers! MHA manages at most one non-slave server. Check configurations.
Thu Nov 9 01:13:00 2017 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln386] Error happend on checking configurations. at /usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm line 300
Thu Nov 9 01:13:00 2017 - [error][/usr/share/perl5/vendor_perl/MHA/MasterMonitor.pm, ln482] Error happened on monitoring servers.
Thu Nov 9 01:13:00 2017 - [info] Got exit code 1 (Not master dead).
MySQL Replication Health is NOT OK!
現在我們試着把master服務器停掉,然後我們看一下虛擬機C的狀態
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.0.3.102 #可以看到這裏自動把master從10.0.3.92 切換到10.0.3.102了
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master-log.000010
Read_Master_Log_Pos: 600
Relay_Log_File: relay-log.000005
Relay_Log_Pos: 252
Relay_Master_Log_File: master-log.000010
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 600
Relay_Log_Space: 1286
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
1 row in set (0.00 sec)
ERROR:
No query specified
mysql>
大概就是這麼簡單,但是第一次配置時還是很容易出現這樣或那樣的問題的,慢慢琢磨吧
什麼,我寫得亂七八糟的,你看不懂?
好吧,給一個參考鏈接給你http://www.178linux.com/87554