国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

更改MySQL高可用模塊接收自定義VIP參數

2024-07-24 12:31:56
字體:
來源:轉載
供稿:網友
       但凡是MySQL DBA肯定都聽說過MHA個高可用方案,而且很多公司都是通過對MHA做二次開發來實現MySQL高可用的。如果MHA不結合VIP的話,每次主庫切換都需要程序修改連數據庫的配置,這樣比較麻煩。而采用MHA+VIP的方式時可以在主庫切換的過程中讓VIP漂移到新主庫,省去了改數據庫配置這一過程。
 
      公司以前是每一組主從復制集群都配置一個manager結點,然后將vip和網絡接口等信息都寫死在master_ip_failover和master_ip_online_change腳本中。當主從集群數量太多的情況下要維護的manager結點很多,管理起來很麻煩。
 
       如何實現用一個Manager結點管理多個支持VIP的mysql主從集群呢?有兩種實現方式:
 
1,每一組主從復制集群維護兩個切換腳本,將VIP和網絡接口信息寫死在腳本里。
 
2,修改MHA的相關模塊,使其能識別我們自定義的參數,我們只需要在每一組主從復制集群的配置文件中給參數傳值。
 
    很明顯,第1種方式太low了,需要維護大量的切換腳本。那我們需要修改哪些模塊呢?
 
    看一下masterha_check_repl這段腳本,可以看到檢測主從復制狀態的時候會調用MasterMonitor模塊。
 
$exit_code = MHA::MasterMonitor::main( "--interactive=0", "--check_only",
  "--check_repl_health", @ARGV );
if ( $exit_code == 0 ) {
  print "/nMySQL Replication Health is OK./n";
}
else {
  print "/nMySQL Replication Health is NOT OK!/n";
}
通過masterha_master_switch這段腳本可以看到在線切換是調用的MasterRotate模塊,故障切換是調用的MasterFailover模塊。
 
if ( $master_state eq "dead" ) {
  $exit_code = MHA::MasterFailover::main(@ARGV);
}
elsif ( $master_state eq "alive" ) {
  $exit_code = MHA::MasterRotate::main(@ARGV);
}
else {
  pod2usage(1);
}
MasterMonitor.pm,MasterRotate.pm,MasterFailover.pm這三個模塊都是調用Config.pm模塊來讀取參數配置,所以我們只需要修改這幾個模塊即可。
 
為了不平的網絡環境,我在配置文件加了這三個配置項:
 
app_vip :主庫的VIP
 
netmask :  VIP的網絡位
 
interface :VIP要綁定的網上
 
對應調整的代碼如下:
 
Config.pm:
  
修改復制檢測時的命令:
 
"$current_master->{master_ip_failover_script} --command=status --ssh_user=$current_master->{ssh_user} --orig_master_host=$current_master->{hostname} --orig_master_ip=$current_master->{ip} --orig_master_port=$current_master->{port}  --app_vip=$current_master->{app_vip} --netmask=$current_master->{netmask} --interface=$current_master->{interface}";
MasterMonitor.pm :
 
修改禁用原從庫的vip命令:
 
 "$dead_master->{master_ip_failover_script} --orig_master_host=$dead_master->{hostname} --orig_master_ip=$dead_master->{ip} --orig_master_port=$dead_master->{port} --app_vip=$dead_master->{app_vip}  --netmask=$dead_master     ->{netmask} --interface=$dead_master->{interface}";
修改啟用原從庫vip的命令:
 
 "$new_master->{master_ip_failover_script} --command=start --ssh_user=$new_master->{ssh_user} --orig_master_host=$dead_master->{hostname} --orig_master_ip=$dead_master->{ip} --orig_master_port=$dead_master->{port} --new_m     aster_host=$new_master->{hostname} --new_master_ip=$new_master->{ip} --new_master_port=$new_master->{port} --new_master_user=$new_master->{escaped_user} --new_master_password=$new_master->{escaped_password} --app_vip=$de     ad_master->{app_vip} --netmask=$dead_master->{netmask} --interface=$dead_master->{interface}";

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 司法| 封开县| 会东县| 剑川县| 眉山市| 洛隆县| 锡林浩特市| 嵊州市| 千阳县| 承德县| 扶绥县| 井研县| 许昌县| 凤翔县| 峡江县| 赤峰市| 和田市| 大姚县| 洛阳市| 临汾市| 南华县| 时尚| 武隆县| 尚志市| 抚州市| 青岛市| 潜山县| 阜阳市| 沙田区| 丰宁| 德钦县| 怀安县| 洪雅县| 绥宁县| 宝山区| 安龙县| 武邑县| 宁德市| 南丹县| 惠东县| 延庆县|