MySQL高可用集羣MHA配置

簡介:

    MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案,master節點故障後,管理節點會在slave節點裏面選取一個節點提升爲新master。要搭建MHA,要求一個複製集羣中最少有三臺數據庫服務器,一主二從,即一臺充當master,一臺充當備用master,另外一臺充當從庫。管理節點程序可以安裝在從服務器上也可以單獨安裝一臺服務器作爲管理節點。

    管理節點程序分爲Manager節點程序和Node節點程序。

Manager節點組件:

masterha_check_ssh:MHA依賴的SSH環境檢測工具;

masterha_check_repl:MYSQL複製環境檢測工具

masterha_manager:MHA服務主程序

masterha_check_status:MHA運行狀態探測工具

masterha_master_monitor:MYSQL master節點可以性監測工具

masterha_master_switch:master節點切換工具

masterha_conf_host:添加或刪除配置節點;

masterha_stop;關閉MHA服務的工具

Node節點組件:

save_binary_logs:保存和複製master的二進制日誌

apply_diff_relay_logs:識別差異的中繼日誌事件並應用於其他slave

filter_mysqlbinlog:去除不必要的ROLLBACK事件(MHA已不再使用這個工具)

purge_relay_logs:清除中繼日誌(不會阻塞SQL線程)

自定義擴展;

secondary_check_script:通過多條網絡路由檢測master的可用性;

master_ip_failover_script:更新application使用的masterip

shutdown_script:強制關閉master節點:

report_script:發送報告

init_conf_load_script:加載初始配置參數

master_ip_online_change_script:更新master節點ip地址


基礎環境:

    d3908.jpg

 MHA管理工具下載鏈接:https://pan.baidu.com/s/1pMo93Nd 密碼:27i2

    mha4mysql-manager-0.56-0.el6.noarch.rpm

    mha4mysql-node-0.56-0.el6.noarch.rpm

 配置過程:

        首先將三臺服務器配置爲主從複製

        三臺服務器分別執行:yum install mairadb-server mariadb -y      

        [root@localhost ~]#  vim /etc/my.cnf

        在[mysqld]中加入如下內容:

        主服務器:

        innodb_file_per_table = 1

        skip_name_resolve = 1

        log-bin = master-bin

        relay-log = relay-bin

        server_id=1

        從服務器1:

        innodb_file_per_table = 1

        skip_name_resolve = 1

        log-bin = master-bin

        relay-log = relay-bin

        server_id = 2

        read_only = 1

        relay_log_purge = 0

        從服務器2:

        innodb_file_per_table = 1

        skip_name_resolve = 1

        log-bin = master-bin

        relay-log = relay-bin

        server_id = 3

        read_only = 1

        relay_log_purge = 0

        

        主服務器上:

        MariaDB [(none)]> show master status    #這一步一定要先執行,查看position後再創建用戶,設置從服務器時用這個position,新創建的用戶才能同步到從服務上,從服務器也需要這兩個賬號。因爲主服務器故障時從服務器會被提升爲主。

            -> ;

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

        | File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

        | master-bin.000002 |      245 |              |                  |

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

        1 row in set (0.00 sec)

        創建複製用戶和管理節點用於管理的用戶。

        MariaDB [(none)]> grant replication slave,replication client on *.* to 'repluser'@'172.16.6.%' identified by '123456';

        MariaDB [(none)]> grant all on *.* to 'admin'@'172.16.6.%' identified by 'admin';

        MariaDB [(none)]> flush privileges;

        

        從服務器1上執行:

        MariaDB [(none)]> change master to master_host='172.16.6.80',master_user='repluser',master_password='123456',master_log_file='master-bin.000002',master_log_pos=245;

        MariaDB [(none)]> start slave;

        MariaDB [(none)]> show slave status\G;

         Slave_IO_Running: Yes

         Slave_SQL_Running: Yes

        從服務器2上執行:

        MariaDB [(none)]> change master to master_host='172.16.6.80',master_user='repluser',master_password='123456',master_log_file='master-bin.000002',master_log_pos=245;

        MariaDB [(none)]> start slave;

        MariaDB [(none)]> show slave status\G;

         Slave_IO_Running: Yes

         Slave_SQL_Running: Yes

 

開始配置MHA:        

       配置SSH互通: (注意:配置方法有多種)

       在管理節點:172.16.6.79上面生成祕鑰。直接拷貝私鑰和公鑰到三臺數據庫服務器上。

       [root@localhost ~]# ssh-keygen -t rsa -P ''

       [root@localhost ~]# cat .ssh/id_rsa.pub > .ssh/authorized_keys

       [root@localhost ~]# chmod go= .ssh/authorized_keys 

       [root@localhost ~]# scp .ssh/id_rsa .ssh/authorized_keys 172.16.6.80:/root/.ssh

       [root@localhost ~]# scp .ssh/id_rsa .ssh/authorized_keys 172.16.6.81:/root/.ssh

       [root@localhost ~]# scp .ssh/id_rsa .ssh/authorized_keys 172.16.6.82:/root/.ssh

                 

         安裝EPEL源:

        [root@localhost ~]# wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

        [root@localhost ~]# rpm -ivh epel-release-latest-7.noarch.rpm

        [root@localhost ~]# yum repolist      ##檢查是否已添加至源列表

        安裝管理節點程序:

        將下載的上傳到管理節點上:

        [root@localhost ~]# yum install mha4mysql-*

        [root@localhost ~]# scp mha4mysql-node-0.56-0.el6.noarch.rpm  172.16.6.80:/root

        [root@localhost ~]# scp mha4mysql-node-0.56-0.el6.noarch.rpm  172.16.6.81:/root

        [root@localhost ~]# scp mha4mysql-node-0.56-0.el6.noarch.rpm  172.16.6.82:/root

        三個數據庫節點分別執行: 

        [root@localhost ~]# yum install mha4mysql-node-0.56-0.el6.noarch.rpm -y

        配置管理節點:

        [root@localhost ~]# mkdir /etc/masterha

        [root@localhost ~]# vi /etc/masterha/app1.cnf

        [server default]

        user=admin

        password=amdin

        manager_workdir=/data/masterha/app1

        manager_log=/data/masterha/app1/manager.log

        remote_workdir=/data/masterha/app1

        ssh_user=root

        repl_user=repluser

        repl_password=123456

        ping_interval=1

        

        [server1]

        hostname=172.16.6.80

        #ssh_prot=22222

        

        [server2]

        hostname=172.16.6.81

        #ssh_prot=22222

        candidate_master=1

        

        [server3]

        hostname=172.16.6.82

        #ssh_prot=22222

        candidate_master=1

        

        檢測SSH互通:

         [root@localhost ~]# masterha_check_ssh --conf=/etc/masterha/app1.cnf 

        檢測複製環境:

        [root@localhost ~]# masterha_check_repl --conf=/etc/masterha/app1.cnf

        啓動管理程序

        [root@localhost ~]# masterha_manager --conf=/etc/masterha/app1.cnf


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