-
準備工作
1. 4臺機器(可以是虛擬機)
一臺安裝centos6.X(管理機
192.168.2.5
),其余三臺安裝centos7.X(一臺主master192.168.2.6
,一臺主備backup192.168.2.7
,一臺從slave192.168.2.8
)2. 配置epel源(配置該源時檢測是否可連接):
[root@localhost ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
3. 建立ssh無密碼登錄環境(4臺機器均需要)
[root@localhost ~]# ssh-keygen -t rsa [root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.2.5 [root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.2.6 [root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.2.7 [root@localhost ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.2.8
-
安裝mysql
1. 安裝mysql(除了管理機)
這里安裝的是MariaDB
2. 修改mysql配置
-
master機器
[root@localhost ~]# vi /etc/my.cnf.d/server.cnf [mysqld] server_id = 1 character-set-server = utf8 lower_case_table_names = 1 log-bin = binlog log-slave-updates [root@localhost ~]# service mysqld restart
-
backup機器
[root@localhost ~]# vi /etc/my.cnf.d/server.cnf [mysqld] server_id = 2 character-set-server = utf8 lower_case_table_names = 1 log-bin = binlog log-slave-updates [root@localhost ~]# service mysqld restart
-
slave機器
[root@localhost ~]# vi /etc/my.cnf.d/server.cnf [mysqld] server_id = 3 character-set-server = utf8 lower_case_table_names = 1 log-bin = binlog log-slave-updates read_only = 1 [root@localhost ~]# service mysqld restart
3. 登陸mysql
-
master機器
[root@localhost ~]# mysql -uroot -p123456 MariaDB [mysql]> CREATE USER 'weimo'@'%' IDENTIFIED BY 'weimo'; MariaDB [mysql]> grant all privileges ON *.* TO 'weimo'@'%' identified by "weimo"; MariaDB [mysql]> flush privileges; [root@localhost ~]# mysqldump -uroot -p123456 -A -x > /tmp/full.sql [root@localhost ~]# scp /tmp/full.sql root@192.168.2.7:/tmp/ [root@localhost ~]# scp /tmp/full.sql root@192.168.2.8:/tmp/ MariaDB [mysql]> show master status;
-
backup機器、slave機器
[root@localhost ~]# mysql -uroot -p123456 MariaDB [mysql]> change master to master_host='192.168.2.6',master_port=3306,master_user='weimo',master_password='weimo',master_log_file='binlog.000003',master_log_pos=995; MariaDB [mysql]> start slave; MariaDB [mysql]> show slave status \G 只要看到Slave_IO_Running Slave_SQL_Running都為yes就可以了。
4. 賦權
-
三臺機器
MariaDB [mysql]> grant all privileges ON *.* TO 'weimo'@'%' identified by "weimo"; MariaDB [mysql]> FLUSH PRIVILEGES;
-
-
安裝mha
backup機器、slave機器
[root@localhost ~]# yum install perl-DBD-MySQL [root@localhost ~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm (需要把安裝包傳上去,如安裝時有報錯依賴,則需要對應進行yum把依賴裝上)
master機器
[root@localhost ~]# yum -y install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager [root@localhost ~]# rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm (需要把安裝包傳上去,如安裝時有報錯依賴,則需要對應進行yum把依賴裝上) 新建配置文件 [root@localhost ~]# vi /etc/mha/mha.conf [server default] user=weimo password=weimo ssh_user=root manager_log=/usr/local/mha/manager.log # working directory on the manager manager_workdir=/usr/local/mha # working directory on MySQL servers remote_workdir=/usr/local/mha repl_user=weimo repl_password=weimo [server1] hostname=192.168.2.6 [server2] hostname=192.168.2.7 candidate_master=1 [server3] hostname=192.168.2.8 no_master=1 檢查下SSH公鑰免密碼登錄,結果都OK就行 [root@localhost ~]# masterha_check_ssh --conf=/etc/mha/mha.conf 再檢查下MySQL復制,最后提示MySQL Replication Health is OK.就行 masterha_check_repl --conf=/etc/mha/mha.conf 后臺開啟HA進程 nohup masterha_manager --conf=/etc/mha/mha.conf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/manager.log 2>&1 &
-
配置keepalived
1. 通過yum安裝
[root@localhost ~]# yum -y install keepalived
2. 修改配置文件
-
master機器
[root@localhost ~]# vi /etc/keepalived/keepalived.conf global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_1 { state BACKUP nopreempt interface eno16780032 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.2.10 } }
-
backup機器
[root@localhost ~]# vi /etc/keepalived/keepalived.conf global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id LVS_DEVEL } vrrp_instance VI_1 { state BACKUP nopreempt interface eno16780032 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.2.10 } }
-
區別與注釋
區別:priority(優先級)不同 注釋: state: 狀態用的都是BACKUP,取值還有MASTER,區別在于重新連上后,MASTER會搶占vip,而BACKUP不會,直到別的VIP宕機后才會變成VIP interface: 網卡名稱 virtual_router_id: 這個id需要兩個keepalived保持一致,并且同一個局域網內,id不能相同。 virtual_ipaddress: 這個就是虛擬ip,可以配置多個,需要保持一致
3. 啟動keepalived
[root@localhost ~]# service keepalived start 注意:需要在master機器上啟動成功后,再去backup機器上啟動。否則會造成操作的不是master數據庫,從而導致集群無法保證正常工作,數據不一致,主從同步失敗。
-
-
參考文檔
搭建MYSQL-MHA環境
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
推薦閱讀更多精彩內容
- 【MySQL】Linux下MySQL 5.5、5.6和5.7的RPM、二進制和源碼安裝 1.1BLOG文檔結構圖 ...
- 環境 操作系統:CentOS-6.5-x86_64-bin-DVD1.iso MySQL版本:mysql-5.6....