您好,登錄后才能下訂單哦!
3臺VM系統為:
[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 mysql
orchestrator版本為:orchestrator-3.1.4-linux-amd64.tar.gz
下載地址:
https://github.com/github/orchestrator/releases
mysql的版本為mysql5.7.24 GA 二進制版本安裝
三臺機器ip:
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綁定主機名:
[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,設置主機名
安裝MySQL的步驟省略,和常規安裝MySQL一樣。
提前配置好一主2從mysql 基于Gtid 過濾復制
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操作:
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"
2.1、機器角色說明:
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頁面應用介紹,
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。