Блог пользователя MikeMirzayanov

Автор MikeMirzayanov, 7 лет назад, По-русски

Добрый день.

К сожалению, сегодня (в пятницу) провести раунд не получится :-(

Если коротко, то это по техническим причинам. Для интересующихся изложу более подробный вариант.

В ночь на четверг я получил смс-ку, что на сервере для бэкапов баз данных место израсходовано на 90%. На этом сервере хранятся три копии базы данных за последние трое суток. Места там примерно 2 терабайта, а база данных подросла более чем до 600 гигабайт, поэтому и стало в упор.

Так как последующие сутки я планировал провести в поезде по дороге на NEERC, то стереть из базы данных неважные данные (по моим оценкам это освободило бы несколько десятков гигабайт). Я запустил запрос на присвоение пустой строке одного поля в таблице и понял, что сделал это зря. В этой таблице несколько десятков миллионов записей и, видимо, отработать быстрее чем за несколько часов шансов у него не было. В результате я убил этот запрос, сделав KILL QUERY. Но база продолжала лагать, я решил её перезапустить. Этот процесс тоже затянулся на два часа (видимо откатывалась транзакция), причем база уже перестала отвечать и стало совсем грустно. В результате я убил процесс в операционной системе и база уже отказалась подниматься без операции восстановления, которая тоже за пару часов не завершался. Короче, боролся я с этим с 5 ночи до 9 утра.

В результате пришлось перенастроить Codeforces на реплику (живую копию), которая стоит в удаленном дата-центре в Mail.Ru (как хорошо, что я её настроил!). Перед тем как сесть в поезд я стартовал процесс переноса данных с реплики обратно, но вот вопреки моим ожиданиям этот процесс затянулся.

Проводить раунд, используя удаленный резервный сервер базы, конечно, нельзя. Поэтому мы вынуждены перенести раунд вперед на вторник.

Приношу свои извинения. Я потратил много часов и работал до последнего, чтобы успеть всё починить. Однако уперлось всё в передачу данных по сети, скорость записи на жесткий диск и работы утилиты innobackupex.

Надеюсь, что во вторник всё пройдет отлично!

MikeMirzayanov

Теги 383
  • Проголосовать: нравится
  • +486
  • Проголосовать: не нравится

»
7 лет назад, # |
  Проголосовать: нравится +75 Проголосовать: не нравится

CodeForcesНеБолей

»
7 лет назад, # |
  Проголосовать: нравится +342 Проголосовать: не нравится

»
7 лет назад, # |
  Проголосовать: нравится +20 Проголосовать: не нравится

i cri

»
7 лет назад, # |
Rev. 2   Проголосовать: нравится +7 Проголосовать: не нравится

The comment is moved to Tuesday 6th December, 14:35 UTC

»
7 лет назад, # |
  Проголосовать: нравится +45 Проголосовать: не нравится

but, but, I cancel many things to attend :( :( :(

  • »
    »
    7 лет назад, # ^ |
      Проголосовать: нравится +184 Проголосовать: не нравится

    Really sorry about it. Actually I also canceled many things to try to fix and to host the round. I informed all of you as soon as understood that it is impossible to run it. I was pretty sure that it was enough time to repair the DB.

    • »
      »
      »
      7 лет назад, # ^ |
        Проголосовать: нравится +58 Проголосовать: не нравится

      It's absolutely fine. Thanks for the reply tho!

    • »
      »
      »
      7 лет назад, # ^ |
        Проголосовать: нравится +13 Проголосовать: не нравится

      It's really fine, of course a lot of people cancelled plans for the Round but things that happen, you've already done a lot for every one of us and still do with Codeforces. Unfortunate things happen

    • »
      »
      »
      7 лет назад, # ^ |
        Проголосовать: нравится +7 Проголосовать: не нравится

      this is such a great site. we don't mind a few glitches once in a while. Kudos to Codeforces.

»
7 лет назад, # |
  Проголосовать: нравится +31 Проголосовать: не нравится

Still much better than a Black day :) Thank you

  • »
    »
    7 лет назад, # ^ |
      Проголосовать: нравится +35 Проголосовать: не нравится

    Oh yes. After Black Day I not only configured backups but also configured monitorings to be sure they really work.

»
7 лет назад, # |
  Проголосовать: нравится +13 Проголосовать: не нравится

CFживи

»
7 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

Mentally prepared myself, had my dinner early and then just opened the browser. The next story is "Sorry, the round 383 has been rescheduled because of technical issues. You can read the details in the post by MikeMirzayanov.!"

»
7 лет назад, # |
  Проголосовать: нравится +142 Проголосовать: не нравится

It's very normal for me. I was unlucky everywhere and there isn't any exception.

»
7 лет назад, # |
  Проголосовать: нравится +20 Проголосовать: не нравится

It's OK man, you did the best.

»
7 лет назад, # |
  Проголосовать: нравится +28 Проголосовать: не нравится

We really appreciate your efforts. We are grateful that at least site is working and we can practice till Tuesday which is nice.

»
7 лет назад, # |
  Проголосовать: нравится +40 Проголосовать: не нравится

better than a sudden unrated round :)

»
7 лет назад, # |
  Проголосовать: нравится -8 Проголосовать: не нравится

Give me another 2 hour contest to compete in now :(-

»
7 лет назад, # |
  Проголосовать: нравится +31 Проголосовать: не нравится

Oh!I can go to see a movie tonight! Thank you, MikeMirzayanov.

»
7 лет назад, # |
Rev. 2   Проголосовать: нравится +10 Проголосовать: не нравится

The time on Tuesday is very unusual and inconvenient. May be it's better to set usual time 16:35 (UTC)?

»
7 лет назад, # |
  Проголосовать: нравится +19 Проголосовать: не нравится

Надеемся,что наш любимый codeforces выздоровеет!

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Will you cancel the registrations? I'm not sure whether I have time on Tuesday.

If I had time, I would register again.

Thx

  • »
    »
    7 лет назад, # ^ |
    Rev. 3   Проголосовать: нравится +21 Проголосовать: не нравится

    What's the problem to do it by youself? You can do it in the list of registrants

  • »
    »
    7 лет назад, # ^ |
      Проголосовать: нравится +21 Проголосовать: не нравится

    If you don't submit, you won't be rated.

    • »
      »
      »
      7 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      is it so? Is that confirmed information because many a times I am very late & busy also but had to hurry just to solve the initial questions.

      • »
        »
        »
        »
        7 лет назад, # ^ |
          Проголосовать: нравится +5 Проголосовать: не нравится

        You can compare the number of registrants and number of rating changes in previous rounds.

»
7 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

i am very unlucky .. may be i can not participate in that day.. :P

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Are our registrations still active? I can't compete on the new date

  • »
    »
    7 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    You can undo your registration by visiting the page which lists the registered users and clicking x next to your name. Also, if you register but don't submit it counts as if you've never registered.

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Видимо поэтому там где много данных используются nosql базы данных. Наступал на те же самые грабли. Добавить колонку в таблицу с миллионом записей и все лежит.

  • »
    »
    7 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    На самом деле "добавить nullable колонку" обычно сводится к изменению метаданных таблицы и работает быстро.

    А вот делать миллионы UPDATEов внутри одной транзакции sql-сервера действительно глупо. Тут на помощь приходят конструкции типа

    UPDATE TOP(1000) ...
    
    • »
      »
      »
      7 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Не знал что рушит все именно default null. Проапдейтить можно наверное и внешней программой. Если не использовать транзакции? Или innodb?

      • »
        »
        »
        »
        7 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Внешняя программа вряд ли сделает что-то, что нельзя сделать запросами SQL. Причем обычное решение подобной задачи с помощью внешней программы обычно сводится к апдейту каждой строки, сколько строк -- столько и запросов UPDATE. Такой вариант хорош тем, что его всегда можно быстро выключить ничего не поломав. Потому что каждая транзакция будет состоять из одной команды. И если даже придется что-нибудь откатить, то это произойдет быстро. Однако расходы на создание транзакций и поиск нужных строк в таблице будут просто гигантские (если таких апдейтов нужно сделать многие миллионы).

        Все описанное выше справедливо для MSSQL. С MySQL знаком мало, но кажется что там подобные операции работают примерно так же.

        Вариант "не использовать транзакции" мне неизвестен. MSSQL-сервер сам создаёт транзакцию для каждого запроса на изменение чего-нибудь. Как раз для того, чтобы можно было в любой момент остановить выполнение запроса и откатиться. MySQL скорее всего действует так же.

        В общем, мне кажется что чаще всего нет причин не использовать обновление данных в таблице пачками (для MySQL команда из предыдущего комментария примет вид UPDATE ... LIMIT 100). То же самое относится для операций удаления. С вставками всё несколько иначе, для MSSQL есть штука под названием Bulk Insert. Кажется что под MySQL тоже должно быть что-то похожее.

»
7 лет назад, # |
  Проголосовать: нравится +19 Проголосовать: не нравится

»
7 лет назад, # |
  Проголосовать: нравится -25 Проголосовать: не нравится

Today is the "BLACK FRIDAY"

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

»
7 лет назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится

I went out to a cybercafé just to participate in the round -_- ! ):

»
7 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

My registration is completed.But maybe I have no time four days later.Can I cancel my registration?

  • »
    »
    7 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится

    You dont need to.. If you dont participate, it wont have any effect on your rating, by the way yes you can cancel your registration ..

  • »
    »
    7 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится

    You can choose to not participate....that's better than cancelling registration. Apart from that, though, you can, just click the cross mark beside your name in registration list.

  • »
    »
    7 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +15 Проголосовать: не нравится

    yes, you can go to the list of participants, and tap red cross near your name!

»
7 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

No problem , Hope you will cope up with this situation quickly like you did in past :) thanks for this excellent OJ .

»
7 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

NO need to explain mike we are always with you :)

»
7 лет назад, # |
  Проголосовать: нравится -12 Проголосовать: не нравится

Очень жаль, что так случилось и вообще жаль сам codeforces. После таких случаев, ежедневных взломов, а также сбоев серверов, доверие и надежность системы подвергаются сомнению. Считаю, следует работать над этим.

  • »
    »
    7 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    А ну-ка признавайтесь, о каких ежедневных взломах идет речь!)

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

we have came a long long way :|

»
7 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

This Friday was perfect for me and I can't take part on Thursday because I have to be at school at this time :'(

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Thanks for explaining , i thought i missed the round hehe

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

we have came a long long way !!

»
7 лет назад, # |
  Проголосовать: нравится +26 Проголосовать: не нравится

Well, it isn't that sad as long as all infomrations and DBs are fine now

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Так как последующие сутки я планировал провести в поезде по дороге на NEERC, то стереть из базы данных неважные данные (по моим оценкам это освободило бы несколько десятков гигабайт).

В этом предложении чего-то не хватает.

»
7 лет назад, # |
  Проголосовать: нравится +16 Проголосовать: не нравится

Как-то рановато для вторника, или мне одному так кажется?

»
7 лет назад, # |
Rev. 2   Проголосовать: нравится -10 Проголосовать: не нравится

deleted

»
7 лет назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

Was planning to take my first contest this time. Now I got more time to study I guess.

»
7 лет назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

That's fine, we appreciate your work. Keep us posted as issues get closed.

»
7 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

So sad ! I'm being busy that day :((

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

THIS is my first contest T^T

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I respect you

»
7 лет назад, # |
  Проголосовать: нравится +18 Проголосовать: не нравится

I think you should give us a recompense for moral damages and prepare more rated contests on the next week

»
7 лет назад, # |
  Проголосовать: нравится +14 Проголосовать: не нравится

No contest? No problem let's enter a virtual one

Btw,We appreciate your efforta

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

But, we love CF and we can wait :)

»
7 лет назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится

That was going to be my first contest in really long time (more than 5 months), and the new time is too early for me, I don't think I'll be able to make it. :(

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Oh...that,I saw the news when it is already more than 0:30 here. How terrible the day is...

»
7 лет назад, # |
Rev. 3   Проголосовать: нравится +22 Проголосовать: не нравится

4 extra days of preparation .. (^_^)

»
7 лет назад, # |
Rev. 2   Проголосовать: нравится +2 Проголосовать: не нравится
  • Puts alarm 10 minutes before the contest.

  • Wakes up 20 minutes after the scheduled start.

  • Curses myself that missed another contest

  • Reassures that can still particpate with a lot of time remaining

  • Logs in to see contest postponed

  • Don't know what to feel now.

»
7 лет назад, # |
Rev. 2   Проголосовать: нравится +50 Проголосовать: не нравится
  • Puts alarm for 10 minutes before the start of contest.
  • I wake up 20 minutes after the scheduled start.
  • Curses myself that missed another contest
  • Reassures that can still participate with a lot of time remaining
  • Logs in to see contest postponed
  • Do not know what to feel now.

»
7 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Tell Me

»
7 лет назад, # |
  Проголосовать: нравится +38 Проголосовать: не нравится

Is acm.sgu.ru down because of this issue?

»
7 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

Хоть время нормальное поставили.

»
7 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

Extra four days! And the round is now on my birthday! How fantastic!

»
7 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

Бывает, но думаю, что на фоне множества проведенных безбаговых контестов единичные исключения не показатель. Держитесь, там (с), Михаил!

»
7 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

I was going to cancel plans for a fun trip with friends on Saturday to attend this contest. (I'm in Sydney, so this contest was at 3 AM). But now I consider myself lucky that I decided to "skip" this one contest so I could enjoy with friends :)

»
7 лет назад, # |
  Проголосовать: нравится +4 Проголосовать: не нравится

Thanks for eventually fixing the problem and for running CF!