3臺VM系統爲:mysql
[root@mgr01 ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)
3臺VM centos 系統都關閉iptables,關閉selinux
3臺虛擬機系統時間同步:
ntpdate ntp1.aliyun.com
3臺vm虛擬機上各安裝一個orchestrator mysqllinux
orchestrator版本爲:orchestrator-3.1.4-linux-amd64.tar.gz 下載地址: https://github.com/github/orchestrator/releases
mysql的版本爲mysql5.7.24 GA 二進制版本安裝git
三臺機器ip:github
10.0.0.130 172.16.0.130 10.0.0.131 172.16.0.131 10.0.0.132 172.16.0.132
三臺vm綁定主機名:web
[root@mgr01 bin]# cat /etc/hosts 172.16.0.130 mgr01 172.16.0.131 mgr03 172.16.0.132 mgr02 [root@mgr02 ~]# cat /etc/hosts 172.16.0.132 mgr02 172.16.0.131 mgr03 172.16.0.130 mgr01 [root@mgr03 bin]# cat /etc/hosts 172.16.0.132 mgr02 172.16.0.131 mgr03 172.16.0.130 mgr01
提示:orchestrator 建議使用機器名,而不是ip來管理MySQL實例,好比change master to 中的 master_host 若是指定的是ip,有可能致使主從切換或者故障切換出現問題
因此最好是綁定hosts,設置主機名sql
安裝MySQL的步驟省略,和常規安裝MySQL同樣。數據庫
提早配置好一主2從mysql 基於Gtid 過濾複製json
172.16.0.131 master 172.16.0.130 slave 172.16.0.132 slave
三臺vm實例mysql的配置文件都要開啓以下參數:
說明:開啓gtid,只複製測試庫test001下的表,其餘的數據庫都忽略掉後端
[root@mgr01 orchestrator]# egrep -i 'gtid|replicate_wild' /data/mysql/mysql3306/my3306.cnf ####: for gtid #gtid_executed_compression_period =1000 # 1000 gtid_mode =on # off enforce_gtid_consistency =on # off replicate_wild_do_table=test001.% replicate_wild_ignore_table=information_schema.% replicate_wild_ignore_table=performance_schema.% replicate_wild_ignore_table=mysql.% replicate_wild_ignore_table=orchestrator.%
172.16.0.131: master操做:centos
mysql -uroot -p'123456' -e "reset mater;" mysql -e "grant replication slave on *.* to repuser@'172.16.0.%' identified by 'JuwoSdk21TbUser'; flush privileges;" mysqldump -uroot -p'123456' -B -A -F --set-gtid-purged=OFF --master-data=2 --single-transaction --events|gzip >/opt/test_$(date +%F).sql.gz
172.16.0.130:slave 操做:
mysql < /test_$(date +%F).sql.gz mysql -e "CHANGE MASTER TO MASTER_HOST='mgr03',MASTER_PORT=3306,MASTER_USER='repuser',MASTER_PASSWORD='JuwoSdk21TbUser',MASTER_AUTO_POSITION = 1;start slave;show slave status\G" |grep -i "yes"
172.16.0.132 slave 操做:
mysql < /test_$(date +%F).sql.gz mysql -e "CHANGE MASTER TO MASTER_HOST='mgr03',MASTER_PORT=3306,MASTER_USER='repuser',MASTER_PASSWORD='JuwoSdk21TbUser',MASTER_AUTO_POSITION = 1;start slave;show slave status\G" |grep -i "yes"
提示!!!!: {{{本篇博文主要介紹Orchestrator 單節點機器安裝和使用}}}
orchestrator機器:172.16.0.130 172.16.0.131 172.16.0.132
orchestrator後端元數據庫MySQL:172.16.0.131
監控目標數據庫:172.16.0.130 172.16.0.131 172.16.0.132
安裝orchestrator:
下載orchestrator安裝包,orchestrator-3.1.4-linux-amd64.tar.gz
https://github.com/github/orchestrator/releases
解壓orchestrator安裝包:
tar -xf orchestrator-3.1.4-linux-amd64.tar.gz
會多出usr 、etc下面2個目錄:
[root@mgr01 ~]# ls -lrt /root/
drwxr-xr-x 3 root root 4096 Jan 26 22:05 usr
drwxr-xr-x 3 root root 4096 Jan 26 22:05 etc
將usr/local/orchestrator/orchestrator-sample.conf.json移動到/etc下,並命名爲orchestrator.conf.json
cp /root/usr/local/orchestrator/orchestrator-sample.conf.json /etc/orchestrator.conf.json
安裝完成後建立orchestrator須要用到的庫和用戶:
CREATE DATABASE orchestrator; CREATE USER 'orchestrator'@'127.0.0.1' IDENTIFIED BY 'orchestrator'; GRANT ALL PRIVILEGES ON `orchestrator`.* TO 'orchestrator'@'127.0.0.1'; 這裏元數據庫MySQL和orchestrator在同一臺機器上,因此建立帳號的時候用的'127.0.0.1', 若是不在同一臺機器上,將IP換成orchestrator所在機器ip。
監控目標數據庫受權:
在須要監控的目標數據庫上進行受權 CREATE USER 'orchestrator'@'172.16.0.%' IDENTIFIED BY 'orchestrator'; GRANT SUPER, PROCESS, REPLICATION SLAVE, RELOAD ON *.* TO 'orchestrator'@'172.16.0.%'; GRANT SELECT ON mysql.slave_master_info TO 'orchestrator'@'172.16.0.%'; 提示: MySQLTopologyUser 帳號的權限應該設置爲super,process,reload,select,replicatiopn slave, 官網文檔中缺乏了select權限,orchestrator切換過程當中須要經過讀取從庫的mysql.slave_master_info表,獲取複製帳號和密碼,若是沒有select權限,將致使讀取失敗,而且不會有任何錯誤信息報出來。
修改/etc/orchestrator.conf.json以下:
####配置orchestrator後端元數據庫信息
"MySQLOrchestratorHost": "127.0.0.1", "MySQLOrchestratorPort": 3306, "MySQLOrchestratorDatabase": "orchestrator", "MySQLOrchestratorUser": "orchestrator", "MySQLOrchestratorPassword": "orchestrator",
###配置orchestrator監控的目標數據庫信息
"MySQLTopologyUser": "orchestrator", "MySQLTopologyPassword": "orchestrator",
單獨啓動172.16.0.131 機器上的orchestrator服務,默認監聽的端口是3000
啓動命令:
cd /root/usr/local/orchestrator && ./orchestrator --config=/etc/orchestrator.conf.json http &
[root@mgr01 ~]# ps -ef|grep orc root 3478 3477 6 23:47 pts/3 00:00:02 ./orchestrator --config=/etc/orchestrator.conf.json http root 3489 2648 0 23:48 pts/2 00:00:00 grep --color=auto orc [root@mgr01 ~]# ss -lntup|grep orc tcp LISTEN 0 128 :::3000 :::* users:(("orchestrator",pid=3478,fd=5))
日誌中有報錯:
2020-02-20 23:47:40 ERROR ReadTopologyInstance(mgr01:3306) show slave hosts: ReadTopologyInstance(mgr01:3306) 'show slave hosts' returned row with <host,port>: <,3306> 2020-02-20 23:47:41 DEBUG Waiting for 15 seconds to pass before running failure detection/recovery 2020-02-20 23:47:41 ERROR ReadTopologyInstance(mgr02:3306) show slave hosts: ReadTopologyInstance(mgr02:3306) 'show slave hosts' returned row with <host,port>: <,3306>
報錯的解決辦法:
在MySQL配置文件my.cnf中report_host參數,
report_host爲只讀參數,必須重啓mysql服務纔可生效
report_host=x.x.x.x //ip爲服務器自身的ip
提示:關於mysql的report-系列參數說明以下:
#report-系列Report系列是設置在從庫上的,包含四個參數 report-[host|port|user|password].
當my.cnf中設置了report-host時,在從庫執行start slave的時候,會將report-host和report-port(默認3306)發給主庫,主庫記錄在全局哈希結構變量 slave_list 中
同時須要注意的是 mysql對report_host限制爲最長60個字節長度,也就是非中文的60個字符,因此mysql服務器的主機名要小於60個字符,不然在作主從複製時,slave會報錯
參考:https://www.jianshu.com/p/9a5b7d30b0ae
緣由:my.cnf配置文件不加report_host ,在orchestrator程序中 show slave hosts 不會顯示host,會致使程序報錯的
或者是修改/etc/orchestrator.conf.json 配置文件參數DiscoverByShowSlaveHosts 爲false,重啓orchestrator 服務,這樣就不須要設置report_host了
http://10.0.0.130:3000/web/status
初次打開web頁面是看不到mysql cluster 集羣名稱的,須要點擊discover發現instance,以下圖:
再次點擊Clusters,便出現集羣別名和Instance:
選擇home下的status,能夠看到當前的健康的節點:
查看詳細的複製拓撲:
查看關於複製失敗的分析:
關於複製失敗的診斷:
查看複製的詳細的信息:
在線調整複製關係有1主2從變爲級聯複製:
再由級聯複製變爲1主2從:
以上就是關於的orchestrator服務單節點啓動管理mysql複製集羣的簡單web頁面應用介紹,歡迎一塊兒交流學習