標籤:許可權列表 任務 nlog master mysql高可用 install replica 複製 建議
MHA簡介
- MHA 由兩部分組成: MHA Manager(管理節點)和 MHA Node(資料節點)。 MHA Manager可以單獨部署在一台獨立的機器上管理多個 master-slave 叢集,也可以部署在一台 slave 節點上。
- MHA Node 運行在每台 MySQL 伺服器上, MHA Manager 會定時探測叢集中的 master節點,當 master 出現故障時,它可以自動將最新資料的 slave 提升為新的 master,然後將所有其他的 slave 重新指向新的 master。整個容錯移轉過程對應用程式完全透明。
環境準備
伺服器(安裝MHA):172.20.29.201主伺服器:172.20.29.202從伺服器A:172.20.29.203從伺服器B:172.20.29.204
1. 同步時間
#定義計劃任務crontab -e */5 * * * * /usr/sbin/ntpdate 172.20.0.1 &> /dev/null #每5分鐘自動同步時間至伺服器
2. 關閉防火牆,SELINUX
iptables -vnL #查看防火牆狀態systemctl stop firewall #關閉防火牆getenforce #查看SELinux狀態setenforce 0 #關閉SElinux
3. 配置SSH公開金鑰(基於key驗證)
ssh-keygen -t rsa -P ‘‘ -f "/root/.ssh/id_rsa" #產生私密金鑰ssh-copy-id 172.20.29.201 #複製公開金鑰至本機#四台主機共用一把鑰匙 scp -pr /root/.ssh 172.20.29.202:/root/ scp -pr /root/.ssh 172.20.29.203:/root/scp -pr /root/.ssh 172.20.29.204:/root/
4. 所有伺服器上安裝MHA-node包
yum install mha4mysql-node-0.56-0.el6.noarchmysql5.5
MHA伺服器配置
#MHA伺服器上安裝MHA包(注意安裝依賴epel源)yum install mha4mysql-manager-0.56-0.el6.noarch#建立並修改MHA設定檔mkdir /etc/mha/ -pvim /etc/mha/app1.cnf [server default] user=MHAuser #串連每一台資料庫的使用者 password=centos #串連每一台資料庫的密碼 manager_workdir=/data/mastermha/app1/ manager_log=/data/mastermha/app1/manager.log remote_workdir=/data/mastermha/app1/ master_binlog_dir=/data/binlogs/ #指定管理的二進位檔案目錄 ssh_user=root #使用什麼帳號來串連每台主機 repl_user=MHAuser #ssh協議串連的使用者 repl_password=centos #ssh協議串連的密碼 ping_interval=1 #多長時間去探測每個節點 [server1] hostname=172.20.29.202 #主伺服器地址 candidate_master=1 #設定為主伺服器 [server2] hostname=172.20.29.203 #從伺服器位址 candidate_master=1 #設定主伺服器宕機立刻升級為主伺服器 [server3] hostname=172.20.29.204 #從伺服器位址#檢查每一台主機ssh協議是否生效masterha_check_ssh --conf=/etc/mha/app1.cnf #檢查每一台主機複製是否正常masterha_check_repl --conf=/etc/mha/app1.cnf#開啟MHA叢集(注意此處前台執行,長期前台執行,建議在主機上運行)masterha_manager --conf=/etc/mha/app1.cnf
主伺服器配置.
#建立檔案夾用於存放二進位記錄檔(注意檔案夾許可權)mkdir /data/binlogschown mysql.mysql /data/binlogs/chmod 770 /data/binlogs/#修改mysql設定檔vim /etc/my.cnf server_id= 11 #主伺服器ID標識 log_bin=/data/binlogs/master-bin #設定檔裡指定二進位記錄檔存放目錄 binlog_format=row #以行模式複製資料 skip_name_resolve=1 #做名字解析 rpl_semi_sync_master_enabled=ON #開啟半同步外掛程式#授權從伺服器登入本機資料庫grant replication slave,replication client on *.* to ‘jian‘@‘172.20.29.%‘ identified by ‘centos‘;#授權所有許可權給MHA管理所有伺服器grant all on *.* to [email protected]‘172.20.29.%‘ identified by ‘centos‘;#重新整理系統許可權列表flush privileges;
從伺服器A配置
#建立檔案夾用於存放二進位記錄檔(注意檔案夾許可權)mkdir /data/binlogschown mysql.mysql /data/binlogs/chmod 770 /data/binlogs/#修改mysql設定檔vim /etc/my.cnf server-id = 12 #從伺服器ID標識log-bin=/data/binlogs/master-bin #設定檔裡指定二進位記錄檔存放目錄read_only=on #配置從伺服器唯讀relay_log_purge=0 #中繼日誌不清除skip_name_resolve=1 #做名字解析rpl_semi_sync_slave_enabled=ON; #開啟半同步外掛程式#從庫建立與主庫的串連change master to MASTER_HOST=‘172.20.29.202‘,MASTER_USER =‘jian‘,MASTER_PASSWORD =‘centos‘,MASTER_LOG_FILE =‘master-bin.000001‘,MASTER_LOG_POS =245;start slave; #開啟IO線程show slave status\G #查看IO線程 Slave_IO_Running: Yes #這兩項全部為yes,成功;否則失敗. Slave_SQL_Running: Yes
從伺服器B配置
#建立檔案夾用於存放二進位記錄檔(注意檔案夾許可權)mkdir /data/binlogschown mysql.mysql /data/binlogs/chmod 770 /data/binlogs/#修改mysql設定檔vim /etc/my.cnf server-id = 13 #從伺服器ID標識 log-bin=/data/binlogs/master-bin #設定檔裡指定二進位記錄檔存放目錄 read_only=on #配置從伺服器唯讀 relay_log_purge=0 #中繼日誌不清除 skip_name_resolve=1 #做名字解析#建立串連之前建議清理線程緩衝 stop slave; reset slave;#從庫建立與主庫的串連change master to MASTER_HOST=‘172.20.29.202‘,MASTER_USER =‘jian‘,MASTER_PASSWORD =‘centos‘,MASTER_LOG_FILE =‘master-bin.000001‘,MASTER_LOG_POS =245;start slave; #開啟IO線程show slave status\G #查看IO線程 Slave_IO_Running: Yes #這兩項全部為yes,成功;否則失敗. Slave_SQL_Running: Yes
測試
MySQL高可用部署MHA