Skip to content


Mysql: Failed to initialize the master info structure, Error_code: 1593

После очередного обновления MySQL (c версии 5.5.13 на 5.6.10) репликация почему-то развалилась с таким вот жутко информационно насыщенным сообщением об ошибке:

mysql> start slave;  
ERROR 1593 (HY000): Fatal error: %s

А в error.log появляется такое:

2013-03-13 12:35:59 30937 [ERROR] Slave SQL: Fatal error: Failed to initialize the master info structure, Error_code: 1593

Лечится так.

  1. На slave-е говорим:
    mysql> RESET SLAVE ALL;
    Query OK, 0 rows affected (0.00 sec)
  2. Удаляем на slave-е все relay-логи:
    [root]# cd /var/lib/mysql 
    [root /var/lib/mysql]# ls *relay-bin*
    dc333-relay-bin.003213  dc333-relay-bin.003214  dc333-relay-bin.index
    [root /var/lib/mysql]# rm *relay-bin*
  3. Перезапускаем репликацию заново:

    mysql> CHANGE MASTER TO MASTER_HOST='10.10.10.10', MASTER_PORT=3306, MASTER_USER='repl', MASTER_PASSWORD='Ua4R5hW', MASTER_LOG_FILE='serv1-bin.003147', MASTER_LOG_POS=120;
    Query OK, 0 rows affected, 2 warnings (0.01 sec)
     
    mysql> START SLAVE;  
    Query OK, 0 rows affected (0.00 sec)
     
    mysql> SHOW SLAVE STATUS \G
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 10.10.10.10
                      Master_User: repl
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: serv1-bin.003147
              Read_Master_Log_Pos: 120
                   Relay_Log_File: serv2-relay-bin.000002
                    Relay_Log_Pos: 285
            Relay_Master_Log_File: serv1-bin.003147
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
                  Replicate_Do_DB:
              Replicate_Ignore_DB: mysql
               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: 120
                  Relay_Log_Space: 460
                  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_UUID: c2c33bd-ab18-1232-838e-e443a8da4ffb
                 Master_Info_File: /var/lib/mysql/master.info
                        SQL_Delay: 0
              SQL_Remaining_Delay: NULL
          Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
               Master_Retry_Count: 86400
                      Master_Bind:
          Last_IO_Error_Timestamp:
         Last_SQL_Error_Timestamp:
                   Master_SSL_Crl:
               Master_SSL_Crlpath:
               Retrieved_Gtid_Set:
                Executed_Gtid_Set:
                    Auto_Position: 0
    1 row in set (0.00 sec)

А напоследок немного fun-а :)

Лучший в мире пример реализации SQL injection

Лучший в мире пример реализации SQL injection

Posted in Howto.

Tagged with , .


Большие таймауты при подключении по SSH в Ubuntu

Логотип Ubuntu из женских грудей

Красивый логотип Ubuntu

Я давно замечал, что при подключении по SSH ИЗ машинки с убунтой и НА машинку с убунтой SSH-клиент как-то противоестественно тупит, секунд 10-15. Причём списать это на медленную сеть было нельзя, так как такие таймауты были даже при подключении в пределах гигабитной локальной сети. В то время как при прочих равных условиях в той же CentOS такое подключение происходит сразу, за 1-2 секунды. В один прекрасный день меня это задолбало и я полез разбираться, вооружившись strace-ом. Оказалось, что дело в резолвинге. Файл /etc/nsswitch.conf в Ubuntu выглядит так:

passwd:         compat
group:          compat
shadow:         compat
hosts:          files wins mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
netgroup:       nis

А в CentOS вот так:

passwd:     files
shadow:     files
group:      files
hosts:      files dns
bootparams: nisplus [NOTFOUND=return] files
ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files
netgroup:   nisplus
publickey:  nisplus
automount:  files nisplus
aliases:    files nisplus

Тут стоит обратить внимание на отличия в строчке с hosts. Когда я в Ubuntu убрал из неё всё кроме "files" и "dns", SSH сразу заработал так же шустро, как в CentOS.

А вот на этом видео можно посмотреть на один прикольный вариант организации десктопа под Убунтой.

Posted in *nix.

Tagged with .


Ошибка "Lost connection to MySQL server during query" после оператора GRANT

После переезда MySQL на версию 5.6.10 после любого GRANT-а вылазила странная ошибка:

mysql> GRANT ALL ON avzdb.* TO 'avz'@'10.10.10.10.' IDENTIFIED BY 'Pgdfk3jh';
ERROR 2013 (HY000): Lost connection to MySQL server during query

В error-логе вылазило такое:

2013-02-26 16:57:07 10343 [ERROR] Incorrect definition of table mysql.proc: expected column 'comment' at position 15 to have type text, found type char(64).
13:56:11 UTC - mysqld got signal 11 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help
diagnose the problem, but since we have already crashed, 
something is definitely wrong and this may fail.

Тут стоит упомянуть, что все базы от версии 5.5 (включая системную базу с именем mysql) были сдамплены на старом сервере с версией 5.5 и влиты на новом с версией 5.6. Поскольку тут нам кагбе намекают на то, что в таблице mysql.proc изменилась структура, я решил запустить утилиту mysql_upgrade, которая вывалила на консоль такое:

mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.host                                         OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
Running 'mysql_fix_privilege_tables'...
Warning: Using a password on the command line interface can be insecure.
OK

После чего оператор GRANT выполнился нормально. Вот такое вот простое решение проблемы.

Posted in Howto.

Tagged with .


Игорь Геллер

Делать подарки приятнее, чем их принимать. Оказать кому-то помощь приятнее, чем её принимать. И дело не в том, что в первом случае ты не чувствуешь себя обязанным, а во втором - сильнее. Дело в том, что на интуитивном уровне мы понимаем, что именно это делает нас людьми.

Мы мало чем отличаемся друг от друга. Все созданы так, что не можем не наслаждаться. Разница в том, чем именно мы наслаждаемся. И дело не в конкретных видах наслаждения, а в их направленности. Всё, что направлено на получение, приносит временное удовлетворение. А дальше – опять пустота, требующая дальнейшего наполнения.

Когда же человек наслаждается тем, что может дать, он впервые прикасается к понятию "смысл жизни". Наесться, натрахаться, напутешествоваться и т. д. невозможно. Всегда есть несъеденное, незавоёбанное, невиданное. И вся эта гонка кота за своим хвостом приводит к депрессиям и внутренней пустоте.

Но вот то, что отдано, что сделано с наслаждением для других, что облюбленно и обзабоченно с наслаждением о том, как стало чуть теплее, чуть здоровее, чуть красивее при твоей помощи кому-то приносит чувство того, что есть какой-то другой смысл, направленность и человечность в проявлениях. Даже благотворительность, которая делается без радости за того, для кого это делается, есть всего лишь формой бухгалтерии "дебет-кредит" и формой заключения сделки со своей совестью. Самому человеку от этого не становится теплее. Конечно, это здорово, что кто-то будет накормлен, одет, получит возможности для развития. Но сам благотворитель себя этим не обогатит.

Мы имеем только то, что сделали с удовольствием для других, без пафоса и надрыва. Всё, что мы накопили раньше или позже придёт в упадок. Все религии об этом, вся философия об этом, да и вся наша жизненная практика и опыт показывают это. Поэтому смысл жизни человека проявляется в том, что он создал для других. И самому человеку при этом живётся лучше, полнее и спокойнее. Нельзя у него забрать то, что он и так с удовольствием отдал.

Это не морализаторство и не псевдодуховный пассаж, это - практическая психология для душевного и физического здоровья на каждый день. Будьте здоровы!

Posted in Quotes.