Coder Social home page Coder Social logo

yoshinorim / mha4mysql-node Goto Github PK

View Code? Open in Web Editor NEW
392.0 392.0 197.0 99 KB

Development tree of Master High Availability Manager and tools for MySQL (MHA), Node (MySQL Server) part

Home Page: http://code.google.com/p/mysql-master-ha/

License: GNU General Public License v2.0

Perl 100.00%

mha4mysql-node's People

Contributors

deniszh avatar dzhdanov avatar gcs-github avatar geoffmontee avatar grypyrg avatar hirose31 avatar kaiwangchen avatar kane3 avatar yoshinorim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mha4mysql-node's Issues

More strict SSH checking

Originally MHA checks master's reachability by just connecting via SSH and exiting with return code 0. This in some cases does not work especially if SSH works but data files are not accessible. In this fix, MHA checks master's ssh reachability by executing save_binary_logs command (dry run). MHA Manager also needs to be updated to 0.53.

Fix:
f97d7fd
839251e

purge_relay_logs fails on MariaDB 10.0

In MariaDB 10.0, purge_relay_logs fails because the relay_log_info_repository variable doesn't exist.

[gmontee@slave ~]$ mysql -u root --execute="SHOW SLAVE STATUS\G"
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.45
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000022
          Read_Master_Log_Pos: 359
               Relay_Log_File: slave-relay-bin.000002
                Relay_Log_Pos: 647
        Relay_Master_Log_File: master-bin.000022
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 359
              Relay_Log_Space: 944
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
                   Using_Gtid: Slave_Pos
                  Gtid_IO_Pos: 1-1-34937,0-1-34,2-1-34804
[gmontee@slave ~]$ ls -l /var/lib/mysql/*relay*
-rw-rw----. 1 mysql mysql  592 Feb 26 11:27 /var/lib/mysql/localhost-relay-bin.000004
-rw-rw----. 1 mysql mysql 1652 Feb 26 17:23 /var/lib/mysql/localhost-relay-bin.000005
-rw-rw----. 1 mysql mysql   58 Feb 26 11:27 /var/lib/mysql/localhost-relay-bin.index
-rw-rw----. 1 mysql mysql   65 May 26 16:58 /var/lib/mysql/relay-log.info
-rw-rw----. 1 mysql mysql  297 May 26 16:58 /var/lib/mysql/slave-relay-bin.000001
-rw-rw----. 1 mysql mysql  647 May 26 16:58 /var/lib/mysql/slave-relay-bin.000002
-rw-rw----. 1 mysql mysql   50 May 26 16:58 /var/lib/mysql/slave-relay-bin.index
[gmontee@slave ~]$ sudo purge_relay_logs --user=root --disable_relay_log_purge
2015-05-26 17:51:35: purge_relay_logs script started.
DBD::mysql::st execute failed: Unknown system variable 'relay_log_info_repository' at /usr/share/perl5/vendor_perl/MHA/SlaveUtil.pm line 58.
[gmontee@slave ~]$ ls -l /var/lib/mysql/*relay*
-rw-rw----. 1 mysql mysql  592 Feb 26 11:27 /var/lib/mysql/localhost-relay-bin.000004
-rw-rw----. 1 mysql mysql 1652 Feb 26 17:23 /var/lib/mysql/localhost-relay-bin.000005
-rw-rw----. 1 mysql mysql   58 Feb 26 11:27 /var/lib/mysql/localhost-relay-bin.index
-rw-rw----. 1 mysql mysql   65 May 26 16:58 /var/lib/mysql/relay-log.info
-rw-rw----. 1 mysql mysql  297 May 26 16:58 /var/lib/mysql/slave-relay-bin.000001
-rw-rw----. 1 mysql mysql  647 May 26 16:58 /var/lib/mysql/slave-relay-bin.000002
-rw-rw----. 1 mysql mysql   50 May 26 16:58 /var/lib/mysql/slave-relay-bin.index

This also appears to fail even if a path to the relay log info file is explicitly defined:

[gmontee@slave ~]$ sudo purge_relay_logs --user=root --disable_relay_log_purge --relay_log_info=/var/lib/mysql/relay-log.info 
2015-05-26 17:52:29: purge_relay_logs script started.
DBD::mysql::st execute failed: Unknown system variable 'relay_log_info_repository' at /usr/share/perl5/vendor_perl/MHA/SlaveUtil.pm line 58.
[gmontee@slave ~]$ ls -l /var/lib/mysql/*relay*
-rw-rw----. 1 mysql mysql  592 Feb 26 11:27 /var/lib/mysql/localhost-relay-bin.000004
-rw-rw----. 1 mysql mysql 1652 Feb 26 17:23 /var/lib/mysql/localhost-relay-bin.000005
-rw-rw----. 1 mysql mysql   58 Feb 26 11:27 /var/lib/mysql/localhost-relay-bin.index
-rw-rw----. 1 mysql mysql   65 May 26 16:58 /var/lib/mysql/relay-log.info
-rw-rw----. 1 mysql mysql  297 May 26 16:58 /var/lib/mysql/slave-relay-bin.000001
-rw-rw----. 1 mysql mysql  647 May 26 16:58 /var/lib/mysql/slave-relay-bin.000002
-rw-rw----. 1 mysql mysql   50 May 26 16:58 /var/lib/mysql/slave-relay-bin.index

The check that's failing appears to happen here:

if ( MHA::SlaveUtil::get_relay_log_info_type($dbh) eq "TABLE" ) {

Documentation broken because of dead google code wiki

After all of the google code hosting goes down, the hyperlinks towards the wiki pages in the source code do not work any longer.

Also there seems to be no backup possibly to be found via archive.org.

Example: bin/purge_relay_logs - there may be more. Using the URL leads to:

{"data":{"text":"Anonymous users does not have storage.objects.get access to object google-code-archive/v2/code.google.com/mysql-master-ha/wiki/masterha_master_switch.wiki."},"status":401,"config":{"method":"GET","transformRequest":[null],"url":"https://www.googleapis.com/storage/v1/b/google-code-archive/o/v2%2Fcode.google.com%2Fmysql-master-ha%2Fwiki%2Fmasterha_master_switch.wiki?alt=media","headers":{"Accept":"application/json, text/plain, /"}},"statusText":""}

If just trying to access the wiki, there are no existing page anymore.

escape_for_shell double-escapes

escape_for_shell() function escapes characters with "special" meaning to the shell, like \ or #, and also puts the result string into single quotes. Within single quotes these special characters do not have a special meaning though, especially a \ inside single quotes is just a regular character, eg:

$ echo \\
\

$ echo '\\'
\\

So for example a password containing a #, like secr#t, becomes 'secr\#t', while the correctly shell-escaped forms would be either secr\#t (with backslash but without single qoutes) or 'secr#t' (in single quotes, but without backslash). This then breaks invocation of external scripts like master_ip_failover and master_ip_online_change

The fix for this would be simple: do not put the already backslash-escaped string into extra single quotes:

diff --git a/lib/MHA/NodeUtil.pm b/lib/MHA/NodeUtil.pm
index c0bdba5..ed8b407 100644
--- a/lib/MHA/NodeUtil.pm
+++ b/lib/MHA/NodeUtil.pm
@@ -253,7 +253,7 @@ sub escape_for_shell {
     }
     $ret .= "$x";
   }
-  $ret = "'" . $ret . "'";
+#  $ret = "'" . $ret . "'";
   return $ret;
 }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.