Рубрика: MySQL
Здесь собраны статьи, наработки, исправление ошибок и решение проблем связанных с работой базы данных MySQL
Ubuntu 15.10, MySQL Errcode: 24 — Too many open files
В Ubuntu 15.10, MySQL начала выдавать иногда это сообщение.
Решение: редактируем mysql.cnf
1 |
sudo mcedit /etc/mysql/conf.d/mysql.cnf |
Добавляем:
1 2 3 |
[Service] LimitNOFILE = infinity LimitMEMLOCK = infinity |
Далее:
1 2 |
sudo systemctl daemon-reload sudo service mysql restart |
Ubuntu полная переустановка MySQL с зачисткой всего и вся..
Бывает так, что проще «удалить и заново поставит», чем разобраться в ошибках.. Вот и у меня MySQL стала выдавать не понятные ошибки вида
1 |
ERROR 1728 (HY000): Cannot load from mysql.proc. The table is probably corrupted |
Можно было бы конечно поразбираться, что зачем и как.. Но оно это не стоило. В моем случае проще было снести и заново поставить.
1 2 3 4 5 6 7 |
apt-get --purge remove mysql-server apt-get --purge remove mysql-client apt-get --purge remove mysql-common apt-get autoremove apt-get autoclean rm -rf /etc/mysql apt-get install mysql-server mysql-client phpmyadmin |
Получение данных dashboard с Zabbix сервера..
Ну очень хочется например вытащить данные с панели dashboard zabbix на сторонний ресурс.. Ну например в целях интеграции с какой-то CMS. Поможет в этом следующий запрос:
1 2 3 4 |
SELECT h.host,t.triggerid,g.name group_name,t.priority priority FROM hosts h,items i,hosts_groups hg,groups g,functions f, triggers t WHERE h.status = 0 AND h.hostid = i.hostid AND hg.groupid = g.groupid AND hg.hostid = h.hostid AND i.status = 0 AND i.itemid = f.itemid AND t.triggerid = f.triggerid AND t.VALUE = 1 AND t.status = 0 GROUP BY t.triggerid,g.name, t.priority; |
Восстановление БД MySQL в формате InnoDB
Итак, случился «Ой». БД не запускается. Что делать?
- Смотрим размер ib_logfile0 файла:
1 2 3 4 5 6 7 8 9 |
root@pavel-All-Series:/var/lib/mysql# ls -l drwxrwxrwx 2 root root 4096 авг. 31 14:22 bugify -rwxrwxrwx 1 root root 79691776 авг. 31 13:56 ibdata1 -rwxrwxrwx 1 root root 67108864 авг. 31 13:56 ib_logfile0 -rwxrwxrwx 1 root root 67108864 июля 3 04:38 ib_logfile1 drwxrwxrwx 2 mysql mysql 4096 авг. 31 14:21 mysql -rwxrwxrwx 1 root root 6 авг. 31 14:21 mysql_upgrade_info drwxrwxrwx 2 mysql mysql 4096 авг. 31 14:21 performance_schema drwxrwxrwx 2 mysql mysql 4096 авг. 11 2014 phpmyadmin |
2. Запускаем mysql:
1 |
mysqld --innodb_log_file_size=<размер ib_logfile0> --innodb_force_recovery=6 |
Если все хорошо Вы должны увидеть следующее:
InnoDB: The user has set SRV_FORCE_NO_LOG_REDO on
InnoDB: Skipping log redo
070625 11:59:36 InnoDB: Started; log sequence number 0 0
InnoDB: !!! innodb_force_recovery is set to 6 !!!
070625 11:59:36 [Note] /usr/sbin/mysqld: ready for connections.
Version: ‘5.0.18’ socket: ‘/var/lib/mysql/mysql.sock’ port: 3306 SUSE MySQL
Далее дампим поднявшуюся базу данных:
mysqldump -u root -p database > database.sql
Если Вы получите следующее сообщение, это значит, что файлы системного журнала Innodb повреждены:
Got error: 1146: Table ‘database.table’ doesn’t exist when using LOCK TABLES
Чтобы решить проблему с хранением ib_logfile0 файла нужна актуальная резервная копия, поэтому восстановите все файлы от старшей резервной копии. Это не безотказное решение, но ценная попытка.
Восстановите Ваши данные:
mysql -u root -p database < database.sql