lleo (lleo) wrote,
lleo
lleo

Category:

Сисадмину на заметку: йобаный mysql

это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2019/05/03_mysql

Сайт lleo.me временно упал. Ничего страшного, кончилось место из-за разросшейся базы /var/lib/mysql Партиция /var там конструктивно очень небольшая, большая /home

Не вопрос, я перенес /var/lib/mysql в /home/www/mysql, там места дофига, создал симлинк.

Не запускается.

mysqld[2771]: [Warning] Can't create test file /home/www/mysql/bq.lower-test

Ладно, симлинки иногда глючат.
Поправил в конфиге /etc/mysql/mariadb.conf.d/50-server.cnf
datadir=/home/www/mysql
Тот же эффект.

Проверил права mysql mysql 755, всякие там chown -R mysql:mysql /home/www/mysql — тот же эффект.

Нагуглил: MariaDB зачем-то отдельно запрещает писать в /home. Поэтому надо раскомментарить опцию: ProtectHome=false Раскомментарил- тот же эффект.

Нагуглил: ProtectHome может скрываться еще в каких-то конфигах: grep -Ri «protecthome» /lib/systemd/system
Нашел кучу конфигов, упоминающих ProtectHome=true
Поправил связанное с mariadb:
/lib/systemd/system/mariadb.service:ProtectHome=false
/lib/systemd/system/mariadb@.service:ProtectHome=false

Перезапустил systemctl daemon-reload — тоже какая-то рогатая йобань, типа надо ее перезапустить.

Стало чуть лучше — при старте mysql зависает подольше, и пишет не «Can't create test file», а лаконично: «Failed to start MariaDB 10.1.37 database server.»

Спросил совета в Фейсбуке. Умные люди объяснили, что паранойя с home — излюбленная фишка mysql и не лечится. А надо использовать mount bind чтобы назвать этот путь не /home
Cделал mount --bind /home/www/ /R
Отличная вещь, кстати, не знал раньше.
Пишем в /etc/fstab:

/home/www /R               none    bind            0 0

Не работает!

Ладно, думаю, попробую сильно почистить /var в других местах и вернуть mysql обратно, пусть еще хоть немного проработает, не всё же сайту висеть. Перенес все базы обратно в /var/lib/mysql — НЕ РАБОТАЕТ И НА СТАРОМ МЕСТЕ!

Зато оказалось, теперь оно пишет логи. Раньше не писало.

Йобаная рогатая тварь:
2019-05-03 15:50:30 140617060031872 [ERROR] /usr/sbin/mysqld: unknown variable 'ProtectHome=false'

Сука! У тебя же эта опция была в конфиге! Закомментарена! Я ее сука просто раскомментарил!

Ладно, убрал опцию. Все равно не работает на старом месте!

2019-05-03 15:56:56 140625905151360 [Note] Recovering after a crash using tc.log
2019-05-03 15:56:56 140625905151360 [ERROR] Can't init tc log
2019-05-03 15:56:56 140625905151360 [ERROR] Aborting

А это еще что за хуйня?!
Оказалось, лежал в папке файл mysql/tc.log с НУЛЕВОЙ длиной. Зачем? Что это? Убил его — всё запустилось на старом месте!

Поправил в конфиге на новое место /R/mysql — вот теперь работает. Никаким иным способом, кроме mount --bind невозможно побороть истерики mysql с отказом работать в папке с именем /home.

Путин введи войска против разработчиков mysql.



это перепост заметки, оригинал находится на моем сайте: http://lleo.me/dnevnik/2019/05/03_mysql
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments