精華總結:MHA構建中的各種報錯與解決

前言

一:報錯與解決

1.1:報錯: [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln364] None of slaves can be master. Check failover configuration file or log-bin settings in my.cnf

  • 報錯描述

    [root@mha_manager ~]# masterha_check_repl -conf=/etc/masterha/app1.cnf
    ...省略內容
    Fri Jan 10 08:42:12 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln364] None of slaves can be master. Check failover configuration file or log-bin settings in my.cnf
    Fri Jan 10 08:42:12 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln427] Error happened on checking configurations.  at /usr/local/bin/masterha_check_repl line 48.
    Fri Jan 10 08:42:12 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln525] Error happened on monitoring servers.
    Fri Jan 10 08:42:12 2020 - [info] Got exit code 1 (Not master dead).
    
    MySQL Replication Health is NOT OK!
    
  • 原因:

    mysql集羣中的slave節點中數據庫配置文件/etc/my.cnf中沒有配置二進制日誌,只需要在所有slave節點配置二進制日誌即可

    二進制日誌格式
    log-bin=xxx(名稱自定義)
    
  • 解決:在所有slave節點配置二進制日誌

    [root@slave1 ~]# vim /etc/my.cnf
        [mysqld]段落添加
    log-bin=slave1-bin	'//添加二進制日誌'
    所以slave節點都要配置,我就不一一展示了
    

1.2:報錯: User myslave does not exist or does not have REPLICATION SLAVE privilege! Other slaves can not start replication from this host.

  • 報錯描述

    [root@mha_manager ~]# masterha_check_repl -conf=/etc/masterha/app1.cnf
    ...省略內容
    Fri Jan 10 09:04:53 2020 - [error][/usr/local/share/perl5/MHA/Server.pm, ln398] 192.168.79.135(192.168.79.135:3306): User myslave does not exist or does not have REPLICATION SLAVE privilege! Other slaves can not start replication from this host.
    Fri Jan 10 09:04:53 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln427] Error happened on checking configurations.  at /usr/local/share/perl5/MHA/ServerManager.pm line 1403.
    Fri Jan 10 09:04:53 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln525] Error happened on monitoring servers.
    Fri Jan 10 09:04:53 2020 - [info] Got exit code 1 (Not master dead).
    
    MySQL Replication Health is NOT OK!
    
  • 原因:192.168.79.135主機上沒有添加用戶或者權限問題,重新添加用戶和權限即可

  • 解決:

    添加用戶
    '//192.168.79.0段的從服務器擁有複製權限,可以使用myslave身份123456密碼複製所有的庫和表'
    mysql> GRANT REPLICATION SLAVE ON *.* TO 'myslave'@'192.168.79.%' IDENTIFIED BY '123456';
    Query OK, 0 rows affected, 1 warning (0.01 sec)
    '//查看創建的用戶,若出現兩個用戶,也會報錯,刪除一個即可'
    mysql> SELECT Repl_slave_priv AS Value FROM mysql.user WHERE user = 'myslave';
    +-------+
    | Value |
    +-------+
    | Y     |
    +-------+
    1 row in set (0.00 sec)
    

1.3:報錯:[/usr/local/share/perl5/MHA/MasterMonitor.pm, ln208] Slaves settings check failed!

  • 報錯描述:

    [root@mha_manager ~]# masterha_check_repl -conf=/etc/masterha/app1.cnf
    Can't exec "mysqlbinlog": 沒有那個文件或目錄 at /usr/local/share/perl5/MHA/BinlogManager.pm line 106.
    mysqlbinlog version command failed with rc 1:0, please verify PATH, LD_LIBRARY_PATH, and client options
     at /usr/local/bin/apply_diff_relay_logs line 493.
    Fri Jan 10 11:01:35 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln208] Slaves settings check failed!
    Fri Jan 10 11:01:35 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln416] Slave configuration failed.
    Fri Jan 10 11:01:35 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln427] Error happened on checking configurations.  at /usr/local/bin/masterha_check_repl line 48.
    Fri Jan 10 11:01:35 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln525] Error happened on monitoring servers.
    Fri Jan 10 11:01:35 2020 - [info] Got exit code 1 (Not master dead).
    
    MySQL Replication Health is NOT OK!
    
    
  • 原因:Can’t exec “mysqlbinlog”: 沒有那個文件或目錄 at /usr/local/share/perl5/MHA/BinlogManager.pm line 106.

  • 解決:

    所有節點創建軟連接
    ln -s /usr/local/mysql/bin/mysqlbinlog /usr/local/bin/
    

1.4:報錯:[error]/usr/local/share/perl5/MHA/MasterMonitor.pm, ln208 Slaves settings check failed!

  • 報錯描述:

    [root@mha_manager bin]# masterha_check_repl -conf=/etc/masterha/app1.cnf
    mysqlbinlog: [ERROR] unknown variable 'default-character-set=utf8'
    mysqlbinlog version command failed with rc 7:0, please verify PATH, LD_LIBRARY_PATH, and client options
     at /usr/local/bin/apply_diff_relay_logs line 493.
    Fri Jan 10 11:03:09 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln208] Slaves settings check failed!
    Fri Jan 10 11:03:09 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln416] Slave configuration failed.
    Fri Jan 10 11:03:09 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln427] Error happened on checking configurations.  at /usr/local/bin/masterha_check_repl line 48.
    Fri Jan 10 11:03:09 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln525] Error happened on monitoring servers.
    Fri Jan 10 11:03:09 2020 - [info] Got exit code 1 (Not master dead).
    
    MySQL Replication Health is NOT OK!
    
    
  • 原因:mysqlbinlog: [ERROR] unknown variable ‘default-character-set=utf8’

  • 解決:從服務器上都註釋掉client段的默認字符集

    [root@slave1 ~]# vim /etc/my.cnf
    [client]
    #default-character-set=utf8	'//註釋掉此'
    

1.5:報錯:Testing mysql connection and privileges…sh: mysql: 未找到命令

  • 報錯描述:

    Fri Jan 10 11:20:21 2020 - [info]   Connecting to [email protected](192.168.79.135:22).. 
      Checking slave recovery environment settings..
        Opening /usr/local/mysql/data/relay-log.info ... ok.
        Relay log found at /usr/local/mysql/data, up to relay-log-bin.000043
        Temporary relay log file is /usr/local/mysql/data/relay-log-bin.000043
        Testing mysql connection and privileges..sh: mysql: 未找到命令
    mysql command failed with rc 127:0!
     at /usr/local/bin/apply_diff_relay_logs line 375.
            main::check() called at /usr/local/bin/apply_diff_relay_logs line 497
            eval {...} called at /usr/local/bin/apply_diff_relay_logs line 475
            main::main() called at /usr/local/bin/apply_diff_relay_logs line 120
    Fri Jan 10 11:20:21 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln208] Slaves settings check failed!
    Fri Jan 10 11:20:21 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln416] Slave configuration failed.
    Fri Jan 10 11:20:21 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln427] Error happened on checking configurations.  at /usr/local/bin/masterha_check_repl line 48.
    Fri Jan 10 11:20:21 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln525] Error happened on monitoring servers.
    Fri Jan 10 11:20:21 2020 - [info] Got exit code 1 (Not master dead).
    
    MySQL Replication Health is NOT OK!
    
    
  • 原因:沒有mysql命令

    Testing mysql connection and privileges..sh: mysql: 未找到命令
    mysql command failed with rc 127:0!
    
  • 解決:創建mysql軟連接

    ln -s /usr/local/mysql/bin/mysql /usr/local/bin/
    

1.6:報錯:Failed to get master_ip_failover_script status with return code 2:0.

  • 報錯描述:

    /usr/local/bin/master_ip_failover:行2: use: 未找到命令
    /usr/local/bin/master_ip_failover:行3: use: 未找到命令
    /usr/local/bin/master_ip_failover:行5: use: 未找到命令
    /usr/local/bin/master_ip_failover:行7: 未預期的符號 `newline' 附近有語法錯誤
    /usr/local/bin/master_ip_failover:行7: ` my ('
    Fri Jan 10 11:58:44 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln229]  Failed to get master_ip_failover_script status with return code 2:0.
    Fri Jan 10 11:58:44 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln427] Error happened on checking configurations.  at /usr/local/bin/masterha_check_repl line 48.
    Fri Jan 10 11:58:44 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln525] Error happened on monitoring servers.
    Fri Jan 10 11:58:44 2020 - [info] Got exit code 1 (Not master dead).
    
    MySQL Replication Health is NOT OK!
    
  • 原因:master_ip_failover 文件語法問題

  • 解決:#!/usr/bin/env perl頂格寫就行

    [root@mha_manager bin]# vim master_ip_failover
    #!/usr/bin/env perl	'//第一行要最頂行寫,不要有空格'
    
    
發佈了126 篇原創文章 · 獲贊 62 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章