Название: y2010x6x30 Отправлено: keeper1978 от 01 Июля 2010, 17:30:27 как пробороть ошибку
DBD::mysql::db do failed: Table './bill/y2010x6x30' is marked as crashed and should be repaired at nodeny.pl line 1157. я так понимаю она связанна с переходом на новый месяц всвязи с этим вопрос какие данные nodeny не сохранила Название: Re: y2010x6x30 Отправлено: stix от 01 Июля 2010, 18:34:56 через phpmyadmin можешь сделать repair
можно с консоли сделать через mysqlcheck Название: Re: y2010x6x30 Отправлено: ser970 от 01 Июля 2010, 18:37:17 c консоли
mysql -u root -pпароль bill repair table y2010x6x30; это не с переходом - это повреждена таблица мускула. Название: Re: y2010x6x30 Отправлено: versus от 01 Июля 2010, 20:03:43 я так понимаю она связанна с переходом на новый месяц всвязи с этим вопрос какие данные nodeny не сохранила Если отсутствие системного администратора связано с переходом на новый месяц, то да. Если отсутствие бесперебейника связано с переходом на новый месяц, то да. Если бэкапы не делаются в связи с переходом на новый месяц, то да. Интерсно что могла не сохранить нодени в поврежденную таблицу с дневным трафиком ??? Название: Re: y2010x6x30 Отправлено: keeper1978 от 01 Июля 2010, 22:58:15 Если бэкапы не делаются в связи с переходом на новый месяц, то да. а при чём здесь бэкапы ? если эти таблицы не бэкапятся Название: Re: y2010x6x30 Отправлено: Efendy от 01 Июля 2010, 23:07:13 Если бэкапы не делаются в связи с переходом на новый месяц, то да. а при чём здесь бэкапы ? если эти таблицы не бэкапятся Цитировать Если есть таблицы с поврежденной структурой, то необходимо запустить утилиту с указанием отремонтировать такие таблицы: bash# mysqlcheck -repair -p -u bill_kernel bill из доки посвежее: Код: mysqlcheck -repair -u root --password=`perl -e'require "/usr/local/nodeny/history.nod"; print $sql_root_pass;'` bill Название: Re: y2010x6x30 Отправлено: ser970 от 02 Июля 2010, 20:52:52 а кстати появилась идейка - билинг пишет что повреждена таблица - почему не пойти чуть далее и дописать пару строк - что бы таблица сама востанавливалась - по логике ничего сложного.
подскажите как намеренно повредить таблицу? нужно для теста. Название: Re: y2010x6x30 Отправлено: goletsa от 02 Июля 2010, 21:59:02 Не надо.
Все нештатные ситуации надо обрабатывать руками чтобы ваша автоматика вместо починки окончательно не доломала все. Название: Re: y2010x6x30 Отправлено: stix от 02 Июля 2010, 22:03:19 все уже придумано.
через тот же --log-bin Код: или вот mysqlcheck -A -r Название: Re: y2010x6x30 Отправлено: Efendy от 04 Июля 2010, 11:45:15 а кстати появилась идейка - билинг пишет что повреждена таблица - почему не пойти чуть далее и дописать пару строк - что бы таблица сама востанавливалась - по логике ничего сложного. это не биллинг пишет, а перловый модуль для работы с БД. В принципе можно отлавливать его сообщения и парсить, но во-первых я не уверен, что сообщение стандартизировано и в будущем не изменится, а во-вторых это явно излишний функцинал - в нормальных системах (с нормальным питанием) повреждения таблиц не будет никогда, так что проверять нет никакого смысла.Название: Re: y2010x6x30 Отправлено: blackjack от 04 Июля 2010, 13:32:40 это не биллинг пишет, а перловый модуль для работы с БД. В принципе можно отлавливать его сообщения и парсить, но во-первых я не уверен, что сообщение стандартизировано и в будущем не изменится, а во-вторых это явно излишний функцинал - в нормальных системах (с нормальным питанием) повреждения таблиц не будет никогда, так что проверять нет никакого смысла. 1. ви не забувайте шо ми живемо в Україні2. маленькі піонер-мережі не можуть собі дозволити "нормальні системи (з нормальним живленням)" імхо. виправляти таблиці білінг не повинен Название: Re: y2010x6x30 Отправлено: ser970 от 04 Июля 2010, 17:34:47 Все нештатные ситуации надо обрабатывать руками чтобы ваша автоматика вместо починки окончательно не доломала все. хм. а чем будет отличатся или ручками набрана или сриптом? или ручками учитываются тайминги - и метод чумака-кашпировского? Название: Re: y2010x6x30 Отправлено: versus от 04 Июля 2010, 20:13:44 При крахе БД вина ляжет по другому, в случае автоматического исправления биллингом, вина за крах БД ложится на разработчиков нодени, в случае запуска админом в терминала - на того кто запустил с терминала.
Вы можете дописать функциональность в виде модуля, но тогда все обращения клиентов будем переадресовывать вам. Название: Re: y2010x6x30 Отправлено: versus от 04 Июля 2010, 20:18:09 Есть три уровня восприятия: что, как, и зачем.
И вкладывая 1 килокалорию усилий на решение проблемы на каждом уровне приводит к «отдаче инвестиций» на порядки отличающейся. Поясню: например я пишу программу. Уровень «что» — я выделил для этого специальное время, записал про задачу в списки, напоминания, все такое… В результате написал программу. Зашибись. Уровень «как» — прежде чем писать программу, покумекал, спросил умных людей, купил готовые компоненты, нанял ассистента… В результате написал программу в два раза быстрее. Зашибись. Уровень «зачем» — Покумекал, и понял — что мне не нужна программа, в принципе. А мне нужно новое железо, которое аппаратным образом делает то же самое, но потребляет меньше всего остального. Но, правда, стоит соответственно. Денег нет. Но результат работы железа, нужен не только мне, а еще куче кому в здании. Обошел людей, поговорил — они скинулись, курьеры доставили, распаковал-установил — Profit! Заняло все дело 3 дня, и приносит деньги ежемесячно. Вот это — зашибись! (с) HEDO http://hedo.habrahabr.ru/ Название: Re: y2010x6x30 Отправлено: ser970 от 05 Июля 2010, 09:09:57 имелось в виду сдалать так (найду способ повредить таблици или кто поделится файоами поврежленых таблиц сделаю)
если таблица повреждена суточного трафа то сначала скопируем этот файл в любое место а потом попробуем востановить таблицу - так вроде безопасно и хуже чем есть не сделаешь. при аварии остальных таблиц ничего не делать. написать не сложно - но как повредить таблицу? Название: Re: y2010x6x30 Отправлено: goletsa от 05 Июля 2010, 11:30:48 Выдерни питание у работающего сервера.
Поимеешь сразу кучу проблем - побитая фс и ессно побитая база. Название: Re: y2010x6x30 Отправлено: ser970 от 05 Июля 2010, 13:45:06 пробовал;
написал скрипт кторый пишет в цикле с таблицу данные - не получилось.лад попробую еще Название: Re: y2010x6x30 Отправлено: stix от 05 Июля 2010, 14:22:13 ну на самом то деле у тебя база сама по себе не упадет.
тебе проще в rc.local вставить проверку таблиц при некорректном выключении и автоматическое исправление если на то пошло. Название: Re: y2010x6x30 Отправлено: VitalVas от 05 Июля 2010, 20:09:02 пробовал; а если скрипт заклинит?написал скрипт кторый пишет в цикле с таблицу данные - не получилось.лад попробую еще Название: Re: y2010x6x30 Отправлено: stix от 05 Июля 2010, 20:10:55 я вот не пойму...неужели так часто у кого-то падают базы?
Название: Re: y2010x6x30 Отправлено: VitalVas от 05 Июля 2010, 20:17:17 я вот не пойму...неужели так часто у кого-то падают базы? за последний год, у меня не разу не падалапоэтому я не вижу смысла в скриптах, а в случае падения, даже мануала хватает Название: Re: y2010x6x30 Отправлено: stix от 05 Июля 2010, 20:29:44 я тоже вот думаю, что смысла в скрипте нет абсолютно.
база упадет, если упадет файловая система. а если упадет файловая система ext2, то "Да хранит тебя Господь, если не делал бэкапы" должна запустится автоматом fsck а следом за ней поставь mysql repair и делов-то, а не колбасить каждый раз биллинг Название: Re: y2010x6x30 Отправлено: Fredik от 05 Июля 2010, 22:46:19 ............................... а следом за ней поставь mysql repair и делов-то, а не колбасить каждый раз биллинг а у тебя так и реализовано? не поделишся ? Название: Re: y2010x6x30 Отправлено: VitalVas от 05 Июля 2010, 23:01:24 ............................... а следом за ней поставь mysql repair и делов-то, а не колбасить каждый раз биллинг а у тебя так и реализовано? не поделишся ? Название: Re: y2010x6x30 Отправлено: ser970 от 06 Июля 2010, 10:07:01 база упадет, если упадет файловая система. не обязательно. да и в рс конф прописать fsck.а если упадет файловая система ext2, всегда считал что ufsследом за ней поставь mysql repair и делов-то, а не колбасить каждый раз биллинг и интересно какое время при старте займет это дело когда база в 5г?а в 98% падают только таблицы дневного тарфика. вот их то и имеет смысл проверить - можно даже не в бидинг писать а просто перед стартом nodeny.sh и после старта мускула написать простенький скрипт который их проверит. Название: Re: y2010x6x30 Отправлено: stix от 06 Июля 2010, 12:38:00 ............................... а следом за ней поставь mysql repair и делов-то, а не колбасить каждый раз биллинг а у тебя так и реализовано? не поделишся ? есть строки Код: if [ -f /fsckoptions ]; then можно вставить проверку таблиц с префиксом y2010x итд Название: Re: y2010x6x30 Отправлено: ser970 от 06 Июля 2010, 14:19:23 гдето так
touch /usr/local/etc/rc.d/mysqlr.pl chmod +x /usr/local/etc/rc.d/mysqlr.pl #!/usr/bin/perl use DBI; use Time::localtime; use Time::HiRes qw (gettimeofday tv_interval); #даные для сондинения с базой $user='root'; $pw='pas'; $name='bill'; $server='localhost'; $port="3306"; $mysql_connect_timeout=10; $DSN="DBI:mysql:database=$name;host=$server;mysql_connect_timeout=$mysql_connect_timeout"; $dbh=DBI->connect($DSN,$user,$pw,{PrintError=>1}); sub mtime { my $t=localtime(shift); return sprintf("%dx%dx%d ",$t->year+1900,$t->mday,$t->mon+1); } $tab=&mtime(time()); $table='v'.$tab; my $sth = $dbh->prepare(qq{repair table $table}); $sth->execute(); $table='x'.$tab; my $sth = $dbh->prepare(qq{repair table $table}); $sth->execute(); $table='y'.$tab; my $sth = $dbh->prepare(qq{repair table $table}); $sth->execute(); $table='z'.$tab; my $sth = $dbh->prepare(qq{repair table $table}); $sth->execute(); exit; |