LINUX.ORG.RU

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

 , ,


0

1

OC AlmaLinux 8.7 БД MySQL 8.0

Комп выключился, так как пропало электро питание, mysql не загружается, все стояло на vmware worksation.

Как проще всего восстановить базу? готов потерять записи хоть за сутки или больше, главное настройки бы вытащить. На сервере стоял zabbix постоянно что то писал в бд, видимо в процессе записи все оборвалось и что то повредилось.

логи mysql из /var/log/mysql

/usr/libexec/mysqld(my_print_stacktrace(unsigned char const*, unsigned long)+0x41) [0x55fbc0372d91]
0000/usr/libexec/mysqld(print_fatal_signal(int)+0x30b) [0x55fbbf3d095b]
00/usr/libexec/mysqld(my_server_abort()+0x76) [0x55fbbf3d0a86]
00/usr/libexec/mysqld(my_abort()+0xe) [0x55fbc036cd7e]
0000/usr/libexec/mysqld(ut_dbg_assertion_failed(char const*, char const*, unsigned long)+0x32a) [0x55fbc05c507a]
00/usr/libexec/mysqld(+0x2258a9d) [0x55fbc0489a9d]
00/usr/libexec/mysqld(recv_recover_page_func(bool, buf_block_t*)+0x607) [0x55fbc048cd67]
00/usr/libexec/mysqld(buf_page_io_complete(buf_page_t*, bool)+0x83c) [0x55fbc06310dc]
00/usr/libexec/mysqld(fil_aio_wait(unsigned long)+0x14b) [0x55fbc073679b]
00/usr/libexec/mysqld(+0x232fd08) [0x55fbc0560d08]
000000/usr/libexec/mysqld(std::thread::_State_impl<std::thread::_Invo ker<std::tuple<Detached_thread, void (*)(unsigned long), unsigned long> > >::_M_run()+0xc8) [0x55fbc0560f18]
00/lib64/libstdc++.so.6(+0xc2ba3) [0x7f696bb2fba3]
00/lib64/libpthread.so.0(+0x81cf) [0x7f69700d11cf]
00/lib64/libc.so.6(clone+0x43) [0x7f696b146e73]
000000000000000000The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.

Места вроде хватает

[root@appliance ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 17M 1.9G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda2 4.0G 1.2G 2.9G 30% /
/dev/sda5 4.5G 2.2G 2.4G 48% /var/lib/mysql
/dev/sda3 1014M 40M 975M 4% /tmp
/dev/sda1 488M 50M 403M 11% /boot
tmpfs 393M 0 393M 0% /run/user/0

И еще логи

[root@appliance ~]# systemctl status mysqld.service
● mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/mysqld.service.d
└─override.conf
Active: failed (Result: exit-code) since Thu 2023-04-20 19:49:06 +07; 26s ago
Process: 2329 ExecStopPost=/usr/libexec/mysql-wait-stop (code=exited, status=0/SUCCESS)
Process: 2307 ExecStart=/usr/libexec/mysqld --basedir=/usr (code=exited, status=2)
Process: 2270 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.service (code=exited, status=0/SUCCESS)
Process: 2244 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
Main PID: 2307 (code=exited, status=2)
Status: "Server startup in progress"

Apr 20 19:49:06 appliance systemd[1]: mysqld.service: Service RestartSec=100ms expired, scheduling restart.
Apr 20 19:49:06 appliance systemd[1]: mysqld.service: Scheduled restart job, restart counter is at 5.
Apr 20 19:49:06 appliance systemd[1]: Stopped MySQL 8.0 database server.
Apr 20 19:49:06 appliance systemd[1]: mysqld.service: Start request repeated too quickly.
Apr 20 19:49:06 appliance systemd[1]: mysqld.service: Failed with result 'exit-code'.
Apr 20 19:49:06 appliance systemd[1]: Failed to start MySQL 8.0 database server.

Пробовал в конфиг файл Mysql прописать innodb_force_recovery = 1 (цифры ставил от 1 до 5) не помогло, но так как с Mysql не работал может что то не так делаю



Последнее исправление: nilob (всего исправлений: 3)

Ответ на: комментарий от Anoxemian

сделал так

dnf remove mysql-server

потом так

dnf install mysql-server mysql

ничего не поменялось

[root@appliance ~]# systemctl status mysqld.service
● mysqld.service - MySQL 8.0 database server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mysqld.service.d
           └─override.conf
   Active: failed (Result: exit-code) since Sat 2023-04-22 02:33:37 +07; 1min 48s ago
  Process: 8378 ExecStopPost=/usr/libexec/mysql-wait-stop (code=exited, status=0/SUCCESS)
  Process: 8375 ExecStart=/usr/libexec/mysqld --basedir=/usr (code=exited, status=1/FAILURE)
  Process: 8337 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.service (code=exited, status=0/SUCCESS)
  Process: 8311 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
 Main PID: 8375 (code=exited, status=1/FAILURE)
   Status: "Server startup in progress"

Apr 22 02:33:37 appliance mysql-check-socket[8326]: my_print_defaults: [ERROR] Stopped processing the 'includedir' directive in file /etc>
Apr 22 02:33:37 appliance mysql-check-socket[8326]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 02:33:37 appliance mysql-check-socket[8311]: Socket file /var/lib/mysql/mysql.sock exists.
Apr 22 02:33:37 appliance mysql-check-socket[8311]: No process is using /var/lib/mysql/mysql.sock, which means it is a garbage, so it wil>
Apr 22 02:33:37 appliance mysqld[8375]: mysqld: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or directory)
Apr 22 02:33:37 appliance mysqld[8375]: mysqld: [ERROR] Stopped processing the 'includedir' directive in file /etc/my.cnf at line 10.
Apr 22 02:33:37 appliance mysqld[8375]: mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 02:33:37 appliance systemd[1]: mysqld.service: Main process exited, code=exited, status=1/FAILURE
Apr 22 02:33:37 appliance systemd[1]: mysqld.service: Failed with result 'exit-code'.
Apr 22 02:33:37 appliance systemd[1]: Failed to start MySQL 8.0 database server.
nilob
() автор топика
Ответ на: комментарий от nilob

Вообще-то поменялось. Раньше он у тебя крашился, а теперь ругается на конфиги (хотя я не понял на что именно). Видимо при удалении-установке ты старый конфиг затёр.

Посмотри что в /etc/my.cnf на строке 10. Да и вообще что там есть. Может файл битый.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Это весь файл /etc/my.cnf

#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

!includedir /etc/my.cnf.d это строка 10

nilob
() автор топика
Ответ на: комментарий от nilob

Apr 22 02:33:37 appliance mysqld[8375]: mysqld: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or directory)

А читать он почему-то пытается /etc/my.cnf. (без d)

Если ещё раз запустить всё то же самое или в другом месте ошибка?

firkax ★★★★★
()

00/usr/libexec/mysqld(recv_recover_page_func(bool, buf_block_t*)+0x607) [0x55fbc048cd67]
00/usr/libexec/mysqld(buf_page_io_complete(buf_page_t*, bool)+0x83c) [0x55fbc06310dc]

я бы, ткнув пальцем в небо, предположил бы что !io_complete.
смарт или hw-логи есть какие?
dmesg?
в т.ч. vm hostee

etwrq ★★★★★
()
Последнее исправление: etwrq (всего исправлений: 1)
Ответ на: комментарий от firkax

сделал рестарт

[root@appliance ~]# systemctl restart mysqld
Job for mysqld.service failed because the control process exited with error code.
See "systemctl status mysqld.service" and "journalctl -xe" for details.

и потом статус

[root@appliance ~]# systemctl status mysqld.service
● mysqld.service - MySQL 8.0 database server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mysqld.service.d
           └─override.conf
   Active: failed (Result: exit-code) since Sat 2023-04-22 05:48:41 +07; 8s ago
  Process: 8618 ExecStopPost=/usr/libexec/mysql-wait-stop (code=exited, status=0/SUCCESS)
  Process: 8616 ExecStart=/usr/libexec/mysqld --basedir=/usr (code=exited, status=1/FAILURE)
  Process: 8578 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.service (code=exited, status=0/SUCCESS)
  Process: 8552 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
 Main PID: 8616 (code=exited, status=1/FAILURE)
   Status: "Server startup in progress"

Apr 22 05:48:41 appliance mysql-prepare-db-dir[8594]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 05:48:41 appliance mysqld[8616]: mysqld: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or directory)
Apr 22 05:48:41 appliance mysqld[8616]: mysqld: [ERROR] Stopped processing the 'includedir' directive in file /etc/my.cnf at line 10.
Apr 22 05:48:41 appliance mysqld[8616]: mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 05:48:41 appliance systemd[1]: mysqld.service: Main process exited, code=exited, status=1/FAILURE
Apr 22 05:48:41 appliance mysql-wait-stop[8623]: my_print_defaults: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or direct>
Apr 22 05:48:41 appliance mysql-wait-stop[8623]: my_print_defaults: [ERROR] Stopped processing the 'includedir' directive in file /etc/my>
Apr 22 05:48:41 appliance mysql-wait-stop[8623]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 05:48:41 appliance systemd[1]: mysqld.service: Failed with result 'exit-code'.
Apr 22 05:48:41 appliance systemd[1]: Failed to start MySQL 8.0 database server.
nilob
() автор топика
Ответ на: комментарий от firkax

сделал еще эту команду

[root@appliance ~]# journalctl -xe
Apr 22 05:48:41 appliance mysql-check-socket[8563]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 05:48:41 appliance mysql-check-socket[8567]: my_print_defaults: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or dir>
Apr 22 05:48:41 appliance mysql-check-socket[8567]: my_print_defaults: [ERROR] Stopped processing the 'includedir' directive in file /etc>
Apr 22 05:48:41 appliance mysql-check-socket[8567]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 05:48:41 appliance mysql-check-socket[8573]: my_print_defaults: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or dir>
Apr 22 05:48:41 appliance mysql-check-socket[8573]: my_print_defaults: [ERROR] Stopped processing the 'includedir' directive in file /etc>
Apr 22 05:48:41 appliance mysql-check-socket[8573]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 05:48:41 appliance mysql-check-socket[8552]: Socket file /var/lib/mysql/mysql.sock exists.
Apr 22 05:48:41 appliance mysql-check-socket[8552]: No process is using /var/lib/mysql/mysql.sock, which means it is a garbage, so it wil>
Apr 22 05:48:41 appliance mysql-prepare-db-dir[8583]: my_print_defaults: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or d>
Apr 22 05:48:41 appliance mysql-prepare-db-dir[8583]: my_print_defaults: [ERROR] Stopped processing the 'includedir' directive in file /e>
Apr 22 05:48:41 appliance mysql-prepare-db-dir[8583]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 05:48:41 appliance mysql-prepare-db-dir[8590]: my_print_defaults: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or d>
Apr 22 05:48:41 appliance mysql-prepare-db-dir[8590]: my_print_defaults: [ERROR] Stopped processing the 'includedir' directive in file /e>
Apr 22 05:48:41 appliance mysql-prepare-db-dir[8590]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 05:48:41 appliance mysql-prepare-db-dir[8594]: my_print_defaults: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or d>
Apr 22 05:48:41 appliance mysql-prepare-db-dir[8594]: my_print_defaults: [ERROR] Stopped processing the 'includedir' directive in file /e>
Apr 22 05:48:41 appliance mysql-prepare-db-dir[8594]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 05:48:41 appliance mysql-prepare-db-dir[8600]: my_print_defaults: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or d>
Apr 22 05:48:41 appliance mysql-prepare-db-dir[8600]: my_print_defaults: [ERROR] Stopped processing the 'includedir' directive in file /e>
Apr 22 05:48:41 appliance mysql-prepare-db-dir[8600]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 05:48:41 appliance mysqld[8616]: mysqld: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or directory)
Apr 22 05:48:41 appliance mysqld[8616]: mysqld: [ERROR] Stopped processing the 'includedir' directive in file /etc/my.cnf at line 10.
Apr 22 05:48:41 appliance mysqld[8616]: mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 05:48:41 appliance systemd[1]: mysqld.service: Main process exited, code=exited, status=1/FAILURE
Apr 22 05:48:41 appliance mysql-wait-stop[8623]: my_print_defaults: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or direct>
Apr 22 05:48:41 appliance mysql-wait-stop[8623]: my_print_defaults: [ERROR] Stopped processing the 'includedir' directive in file /etc/my>
Apr 22 05:48:41 appliance mysql-wait-stop[8623]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 05:48:41 appliance mysql-wait-stop[8629]: my_print_defaults: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or direct>
Apr 22 05:48:41 appliance mysql-wait-stop[8629]: my_print_defaults: [ERROR] Stopped processing the 'includedir' directive in file /etc/my>
Apr 22 05:48:41 appliance mysql-wait-stop[8629]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 05:48:41 appliance mysql-wait-stop[8633]: my_print_defaults: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or direct>
Apr 22 05:48:41 appliance mysql-wait-stop[8633]: my_print_defaults: [ERROR] Stopped processing the 'includedir' directive in file /etc/my>
Apr 22 05:48:41 appliance mysql-wait-stop[8633]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 05:48:41 appliance mysql-wait-stop[8639]: my_print_defaults: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or direct>
Apr 22 05:48:41 appliance mysql-wait-stop[8639]: my_print_defaults: [ERROR] Stopped processing the 'includedir' directive in file /etc/my>
Apr 22 05:48:41 appliance mysql-wait-stop[8639]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 05:48:41 appliance systemd[1]: mysqld.service: Failed with result 'exit-code'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: https://access.redhat.com/support
-- 
-- The unit mysqld.service has entered the 'failed' state with result 'exit-code'.
Apr 22 05:48:41 appliance systemd[1]: Failed to start MySQL 8.0 database server.
-- Subject: Unit mysqld.service has failed
-- Defined-By: systemd
-- Support: https://access.redhat.com/support
-- 
-- Unit mysqld.service has failed.
-- 
-- The result is failed.

nilob
() автор топика
Ответ на: комментарий от nilob

Apr 22 05:48:41 appliance mysqld[8616]: mysqld: [ERROR] Stopped processing the ‘includedir’ directive in file /etc/my.cnf at line 10.

В 10-й строке файла /etc/my.cnf include. И он указывает на каталог, которого не существует

вывести 10-ю строку можно примерно так

cat /etc/my.cnf | sed -ne '10p'

или

grep -i include /etc/my.cnf

Если есть возможность, заархивируй /var/lib/mysql/ и отложи архив подальше. Пока не найдёшь человека, который в этом разбирается

На будущее помни, что нужно делать бекапы. А когда разбираешься в проблеме, сначала все действия - read only, направленные на то, чтобы понять причину. Перед любыми изменениями - бекап

А сейчас, возможно, придётся смириться с потерей данных

router ★★★★★
()
Последнее исправление: router (всего исправлений: 2)
Ответ на: комментарий от router

Возможно, когда ты переустановил mysql, пакетный менеджер сделал копию твоего конфига. Поищи, он должен лежать рядом. Что-то вроде /etc/my.cnf.dpkg-old или /etc/my.cnf.old

ls /etc/ | grep -i my.cnf
router ★★★★★
()
Ответ на: комментарий от router

файл my.cnf я привел выше, он не изменился после переустановки, старая версия у меня открыта в блокноте

/var/lib/mysql/ я скопировал с виртуалки на винду полностью

так что восстановить не получиться ? то что все фалы бд из /var/lib/mysql/ целы не играет роли ?

nilob
() автор топика
Ответ на: комментарий от router

в щас вот такое лезет /var/log/mysql/mysqld.log-20230222.gz почему то самый свежий лог файл зазипованый а mysqld.log пустой и дата изменения вчерашняя

2023-02-22T01:14:01.847294Z 26 [ERROR] [MY-011971] [InnoDB] Tablespace 'zabbix/history' Page [page id: space=71, page number=2817] log sequence number 580359215 is in the future! Current system log sequence number 580355040.
2023-02-22T01:14:01.847337Z 26 [ERROR] [MY-011972] [InnoDB] Your database may be corrupt or you may have copied the InnoDB tablespace but not the InnoDB redo log files. Please refer to http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html for information about forcing recovery.
2023-02-22T01:14:01.847734Z 26 [ERROR] [MY-011971] [InnoDB] Tablespace 'zabbix/history_uint' Page [page id: space=72, page number=1274] log sequence number 580359312 is in the future! Current system log sequence number 580355191.
2023-02-22T01:14:01.847750Z 26 [ERROR] [MY-011972] [InnoDB] Your database may be corrupt or you may have copied the InnoDB tablespace but not the InnoDB redo log files. Please refer to http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html for information about forcing recovery.
2023-02-22T01:14:01.849398Z 26 [ERROR] [MY-011971] [InnoDB] Tablespace 'zabbix/history_uint' Page [page id: space=72, page number=1310] log sequence number 580360588 is in the future! Current system log sequence number 580355571.
2023-02-22T01:14:01.849435Z 26 [ERROR] [MY-011972] [InnoDB] Your database may be corrupt or you may have copied the InnoDB tablespace but not the InnoDB redo log files. Please refer to http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html for information about forcing recovery.
2023-02-22T01:14:01.851067Z 26 [ERROR] [MY-011971] [InnoDB] Tablespace 'zabbix/history_uint' Page [page id: space=72, page number=1307] log sequence number 580362590 is in the future! Current system log sequence number 580355571.
2023-02-22T01:14:01.851090Z 26 [ERROR] [MY-011972] [InnoDB] Your database may be corrupt or you may have copied the InnoDB tablespace but not the InnoDB redo log files. Please refer to http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html for information about forcing recovery.
2023-02-22T01:14:02.857410Z 26 [ERROR] [MY-011971] [InnoDB] Tablespace 'zabbix/history_uint' Page [page id: space=72, page number=1472] log sequence number 580363131 is in the future! Current system log sequence number 580361929.
2023-02-22T01:14:02.857463Z 26 [ERROR] [MY-011972] [InnoDB] Your database may be corrupt or you may have copied the InnoDB tablespace but not the InnoDB redo log files. Please refer to http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html for information about forcing recovery.
2023-02-22T01:14:02.858815Z 26 [ERROR] [MY-011971] [InnoDB] Tablespace 'zabbix/history_uint' Page [page id: space=72, page number=1308] log sequence number 580361952 is in the future! Current system log sequence number 580361929.
2023-02-22T01:14:02.858840Z 26 [ERROR] [MY-011972] [InnoDB] Your database may be corrupt or you may have copied the InnoDB tablespace but not the InnoDB redo log files. Please refer to http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html for information about forcing recovery.
nilob
() автор топика
Ответ на: комментарий от nilob

2023-02-22T01:14:01.847294Z 26 [ERROR] [MY-011971] [InnoDB] Tablespace ‘zabbix/history’ Page [page id: space=71, page number=2817] log sequence number 580359215 is in the future! Current system log sequence number 580355040.

2023-02-22T01:14:01.847337Z 26 [ERROR] [MY-011972] [InnoDB] Your database may be corrupt or you may have copied the InnoDB tablespace but not the InnoDB redo log files. Please refer to http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html for information about forcing recovery.

Your database may be corrupt or you may have copied the InnoDB tablespace but not the InnoDB redo log files

Please refer to http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html for information about forcing recovery.

router ★★★★★
()
Ответ на: комментарий от router

ну если имеете ввиду вставить innodb_force_recovery = 1 в файл конфига, то я это уже делал, о чем написал в первом посте то есть вставляю эту строку в файл /etc/my.cnf.d/mysql-server.cnf

#
# This group are read by MySQL server.
# Use it for options that only the server (but not clients) should see
#
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/en/server-configuration-defaults.html

# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld]
innodb_force_recovery = 1
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid

потом делаю systemctl restart mysqld но ничего не менялось, это я делал до того как удалил mysql и поставил заново

щас же он ругается на строку !includedir /etc/my.cnf.d и до конфига в /etc/my.cnf.d/mysql-server.cnf как понимаю не доходит

nilob
() автор топика

OC AlmaLinux 8.7 БД MySQL 8.0

Комп выключился, так как пропало электро питание, mysql не загружается, все стояло на vmware worksation.

Если AlmaLinux стоит в госте гипервизора vmware, и он упал вместе с ней при аварийном выключении машины, то с вероятностью 146% гость имеет битый диск.

Как проще всего восстановить базу?

До базы еще доехать надо.

Нужно починить ФС гипервизора, потом диск гостя, потом ФС гостя, а потом уже посмотреть что там с базой.

kindof
()
Ответ на: комментарий от nilob

щас же он ругается на строку !includedir /etc/my.cnf.d и до конфига в /etc/my.cnf.d/mysql-server.cnf как понимаю не доходит

чудес не бывает. либо ты ошибся при редактировании в блокноте (а блокнот вообще не умеет редактировать unix файлы без шаманских плясок), либо где-то ошибка в конфиге

cat /etc/my.cnf | grep -i include
grep -Ri include /etc/my.cnf.d/
grep -Ri 'my.cnf.' /etc/my.cnf*

также попробуй проверить конфиг https://dev.mysql.com/blog-archive/how-to-validate-server-configuration-settings/

# если версия новее 8.0.16
mysqld --validate-config

# если старее
mysqld --verbose --help
router ★★★★★
()
Ответ на: комментарий от router
[root@appliance ~]# cat /etc/my.cnf | grep -i include
# include all files from the config directory
!includedir /etc/my.cnf.d
[root@appliance ~]# grep -Ri include /etc/my.cnf.d/
[root@appliance ~]# grep -Ri 'my.cnf.' /etc/my.cnf*
/etc/my.cnf:!includedir /etc/my.cnf.d
[root@appliance ~]# mysqld --validate-config
mysqld: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or directory)
mysqld: [ERROR] Stopped processing the 'includedir' directive in file /etc/my.cnf at line 10.
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

Ну да ошибка в 10 строке опять, и я не понял ошибка в чем, может права на директорию /etc/my.cnf.d надо поменять или что ? они щас такие drwxr-xr-x владелец root

nilob
() автор топика
Ответ на: комментарий от kindof

Подчинить какая то размытая рекомендация, что конкретно cделать ? Виртуалка стартует, если бы диск был не в порядке она бы не загружалась, соседние виртуалки которые упали вместе с той где mysql, так же стартую и работают без ошибок

nilob
() автор топика
Ответ на: комментарий от router

Ну и ещё подставь в ls -ld имя каталога из include. Но не перепечатывая, а через copy/paste

Т.е. сначала

grep -Ri include /etc/my.cnf | hexdump -C

а потом скопируй название в ls -ld, ничего не меняя руками

router ★★★★★
()
Ответ на: комментарий от router

что такое override conf не имею ни малейшего понятия. весь сервер в виртуалке я скачал с оффициального сайта zabbix, там уже было все настроено, внутри я ничего не менял, только через веб интерфейс

[root@appliance ~]# cat /etc/systemd/system/mysqld.service.d/*
[Service]
LimitNOFILE=100000[root@appliance ~]# 
[root@appliance ~]# grep -Ri include /etc/my.cnf | hexdump -C
00000000  23 20 69 6e 63 6c 75 64  65 20 61 6c 6c 20 66 69  |# include all fi|
00000010  6c 65 73 20 66 72 6f 6d  20 74 68 65 20 63 6f 6e  |les from the con|
00000020  66 69 67 20 64 69 72 65  63 74 6f 72 79 0a 21 69  |fig directory.!i|
00000030  6e 63 6c 75 64 65 64 69  72 20 2f 65 74 63 2f 6d  |ncludedir /etc/m|
00000040  79 2e 63 6e 66 2e 64 0a                           |y.cnf.d.|
00000048
[root@appliance ~]# ls -ld /etc/my.cnf.d
drwxr-xr-x. 2 root root 188 Apr 22 02:32 /etc/my.cnf.d
[root@appliance ~]# ls -l /etc/my.cnf.d/*
-rw-r--r--. 1 root root  295 Dec  4  2020 /etc/my.cnf.d/client.cnf
-rw-r--r--  1 root root   45 Feb 16 02:43 /etc/my.cnf.d/log_bin_trust_function_creators.cnf
-rw-r--r--  1 root root  565 Oct 26 02:10 /etc/my.cnf.d/mysql-default-authentication-plugin.cnf
-rw-r--r--  1 root root  638 Apr 22 06:30 /etc/my.cnf.d/mysql-server.cnf
-rw-r--r--. 1 root root  636 Apr 20 20:05 /etc/my.cnf.d/mysql-server.cnf.rpmsave
-r--r--r--. 1 root root 1262 Feb  1 22:11 /etc/my.cnf.d/zabbix.cnf
nilob
() автор топика
Ответ на: комментарий от router

так ?

[root@appliance ~]# grep -Ri include /etc/my.cnf | hexdump -C
00000000  23 20 69 6e 63 6c 75 64  65 20 61 6c 6c 20 66 69  |# include all fi|
00000010  6c 65 73 20 66 72 6f 6d  20 74 68 65 20 63 6f 6e  |les from the con|
00000020  66 69 67 20 64 69 72 65  63 74 6f 72 79 0a 21 69  |fig directory.!i|
00000030  6e 63 6c 75 64 65 64 69  72 20 2f 65 74 63 2f 6d  |ncludedir /etc/m|
00000040  79 2e 63 6e 66 2e 64 0a                           |y.cnf.d.|
00000048
[root@appliance ~]# ls -ld /etc/my.cnf.d
drwxr-xr-x. 2 root root 188 Apr 22 02:32 /etc/my.cnf.d
nilob
() автор топика
Ответ на: комментарий от nilob

Все равно непонятно, почему он ищет каталог «/etc/my.cnf.»

Где-то /etc/my.cnf.d/*.cnf должна быть проблемная строка

  1. Как вариант, можно временно закомментировать includedir в my.cnf

  2. точки наводят на мысль, что в appliance был включен selinux, а после переустановки пакета пропал контекст

попробуй временно отключить

setenforce 0

и ещё раз попробовать запустить mysql

systemctl stop mysqld
systemctl start mysqld
tail -n 20 /var/log/messages
tail -n 20 /var/log/mysql/mysqld.log
router ★★★★★
()
Последнее исправление: router (всего исправлений: 2)
Ответ на: комментарий от router

Сначала выключил selinux потом создал файл my.cnf. логи идут только после команды tail -n 20 /var/log/messages

[root@appliance ~]# setenforce 0
setenforce: SELinux is disabled
[root@appliance ~]# systemctl stop mysqld
[root@appliance ~]# systemctl start mysqld
Job for mysqld.service failed because the control process exited with error code.
See "systemctl status mysqld.service" and "journalctl -xe" for details.
[root@appliance ~]# tail -n 20 /var/log/messages
Apr 22 23:01:45 appliance mysql-prepare-db-dir[1715]: my_print_defaults: [ERROR] Stopped processing the 'includedir' directive in file /etc/my.cnf at line 10.
Apr 22 23:01:45 appliance mysql-prepare-db-dir[1715]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 23:01:45 appliance mysqld[1731]: mysqld: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or directory)
Apr 22 23:01:45 appliance mysqld[1731]: mysqld: [ERROR] Stopped processing the 'includedir' directive in file /etc/my.cnf at line 10.
Apr 22 23:01:45 appliance mysqld[1731]: mysqld: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 23:01:45 appliance systemd[1]: mysqld.service: Main process exited, code=exited, status=1/FAILURE
Apr 22 23:01:45 appliance mysql-wait-stop[1738]: my_print_defaults: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or directory)
Apr 22 23:01:45 appliance mysql-wait-stop[1738]: my_print_defaults: [ERROR] Stopped processing the 'includedir' directive in file /etc/my.cnf at line 10.
Apr 22 23:01:45 appliance mysql-wait-stop[1738]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 23:01:45 appliance mysql-wait-stop[1744]: my_print_defaults: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or directory)
Apr 22 23:01:45 appliance mysql-wait-stop[1744]: my_print_defaults: [ERROR] Stopped processing the 'includedir' directive in file /etc/my.cnf at line 10.
Apr 22 23:01:45 appliance mysql-wait-stop[1744]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 23:01:45 appliance mysql-wait-stop[1748]: my_print_defaults: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or directory)
Apr 22 23:01:45 appliance mysql-wait-stop[1748]: my_print_defaults: [ERROR] Stopped processing the 'includedir' directive in file /etc/my.cnf at line 10.
Apr 22 23:01:45 appliance mysql-wait-stop[1748]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 23:01:45 appliance mysql-wait-stop[1754]: my_print_defaults: Can't read dir of '/etc/my.cnf.' (OS errno 2 - No such file or directory)
Apr 22 23:01:45 appliance mysql-wait-stop[1754]: my_print_defaults: [ERROR] Stopped processing the 'includedir' directive in file /etc/my.cnf at line 10.
Apr 22 23:01:45 appliance mysql-wait-stop[1754]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!
Apr 22 23:01:45 appliance systemd[1]: mysqld.service: Failed with result 'exit-code'.
Apr 22 23:01:45 appliance systemd[1]: Failed to start MySQL 8.0 database server.
[root@appliance ~]# tail -n 20 /var/log/mysql/mysqld.log
[root@appliance ~]# systemctl start mysqld
Job for mysqld.service failed because the control process exited with error code.
See "systemctl status mysqld.service" and "journalctl -xe" for details.
[root@appliance ~]# systemctl start mysqld
Job for mysqld.service failed because the control process exited with error code.
See "systemctl status mysqld.service" and "journalctl -xe" for details.
[root@appliance ~]# tail -n 20 /var/log/messages
Apr 22 23:03:38 appliance mysqld[2393]: 0000/usr/libexec/mysqld(recv_recover_page_func(bool, buf_block_t*)+0x607) [0x5557c52aad67]
Apr 22 23:03:38 appliance mysqld[2393]: 00/usr/libexec/mysqld(buf_page_io_complete(buf_page_t*, bool)+0x83c) [0x5557c544f0dc]
Apr 22 23:03:38 appliance mysqld[2393]: 00/usr/libexec/mysqld(fil_aio_wait(unsigned long)+0x14b) [0x5557c555479b]
Apr 22 23:03:38 appliance mysqld[2393]: 00/usr/libexec/mysqld(+0x232fd08) [0x5557c537ed08]
Apr 22 23:03:38 appliance mysqld[2393]: 000000/usr/libexec/mysqld(std::thread::_State_impl<std::thread::_Invoker<std::tuple<Detached_thread, void (*)(unsigned long), unsigned long> > >::_M_run()+0xc8) [0x5557c537ef18]
Apr 22 23:03:38 appliance mysqld[2393]: 00/lib64/libstdc++.so.6(+0xc2ba3) [0x7f269a615ba3]
Apr 22 23:03:38 appliance mysqld[2393]: 00/lib64/libpthread.so.0(+0x81cf) [0x7f269ebb81cf]
Apr 22 23:03:38 appliance mysqld[2393]: 00/lib64/libc.so.6(clone+0x43) [0x7f2699c2ce73]
Apr 22 23:03:38 appliance mysqld[2393]: 00The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
Apr 22 23:03:38 appliance mysqld[2393]: information that should help you find out what is causing the crash.
Apr 22 23:03:38 appliance mysqld[2393]: 00000000000000000000000000000000000000
Apr 22 23:03:38 appliance systemd[1]: mysqld.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Apr 22 23:03:39 appliance systemd[1]: mysqld.service: Failed with result 'exit-code'.
Apr 22 23:03:39 appliance systemd[1]: Failed to start MySQL 8.0 database server.
Apr 22 23:03:39 appliance systemd[1]: mysqld.service: Service RestartSec=100ms expired, scheduling restart.
Apr 22 23:03:39 appliance systemd[1]: mysqld.service: Scheduled restart job, restart counter is at 5.
Apr 22 23:03:39 appliance systemd[1]: Stopped MySQL 8.0 database server.
Apr 22 23:03:39 appliance systemd[1]: mysqld.service: Start request repeated too quickly.
Apr 22 23:03:39 appliance systemd[1]: mysqld.service: Failed with result 'exit-code'.
Apr 22 23:03:39 appliance systemd[1]: Failed to start MySQL 8.0 database server.
[root@appliance ~]#
nilob
() автор топика
Ответ на: комментарий от nilob

Тогда закомментируй includedir в my.cnf и попробуй запустить заново

Ошибка должна исчезнуть. Тогда временно отложи за угол файлы из /etc/my.cnf.d/, верни include и по одному возвращай файлы, пока ошибка не вернётся снова. Станет ясно, в каком конкретно конфиге проблема

router ★★★★★
()
Ответ на: комментарий от router

Лол. Смотри, что нашёл: https://serverfault.com/questions/716374/cant-read-dir-of-etc-my-cnf-errcode-2

the solution actually is simple.

!includedir /etc/my.cnf.d

is your last line on /etc/my.cnf, so mysql can’t read complete ‘/etc/my.cnf.d’ only ‘/etc/my.cnf.’ You just need add one more line so mysql can read its.

!includedir /etc/my.cnf.d
# add new line here

Похоже, это какой-то косяк с парсингом конфига в древних версиях mysql

Просто добавь ещё одну строку с произвольным комментарием в конце конфига

router ★★★★★
()
Последнее исправление: router (всего исправлений: 1)
Ответ на: комментарий от router

изменил конфиг файл добавил коментарий строкой ниже

все равно не запускается но ошибки другие

[root@appliance ~]# systemctl start mysqld
Job for mysqld.service failed because the control process exited with error code.
See "systemctl status mysqld.service" and "journalctl -xe" for details.
[root@appliance ~]# tail -n 20 /var/log/messages
Apr 22 23:40:17 appliance systemd[1]: mysqld.service: Scheduled restart job, restart counter is at 5.
Apr 22 23:40:17 appliance systemd[1]: Stopped MySQL 8.0 database server.
Apr 22 23:40:17 appliance systemd[1]: mysqld.service: Start request repeated too quickly.
Apr 22 23:40:17 appliance systemd[1]: mysqld.service: Failed with result 'exit-code'.
Apr 22 23:40:17 appliance systemd[1]: Failed to start MySQL 8.0 database server.
Apr 22 23:41:02 appliance systemd[1]: Starting MySQL 8.0 database server...
Apr 22 23:41:02 appliance systemd[1]: mysqld.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Apr 22 23:41:02 appliance systemd[1]: mysqld.service: Failed with result 'exit-code'.
Apr 22 23:41:03 appliance systemd[1]: Failed to start MySQL 8.0 database server.
Apr 22 23:41:03 appliance systemd[1]: mysqld.service: Service RestartSec=100ms expired, scheduling restart.
Apr 22 23:41:03 appliance systemd[1]: mysqld.service: Scheduled restart job, restart counter is at 1.
Apr 22 23:41:03 appliance systemd[1]: Stopped MySQL 8.0 database server.
Apr 22 23:41:03 appliance systemd[1]: Starting MySQL 8.0 database server...
Apr 22 23:41:04 appliance systemd[1]: mysqld.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Apr 22 23:41:04 appliance systemd[1]: mysqld.service: Failed with result 'exit-code'.
Apr 22 23:41:04 appliance systemd[1]: Failed to start MySQL 8.0 database server.
Apr 22 23:41:04 appliance systemd[1]: mysqld.service: Service RestartSec=100ms expired, scheduling restart.
Apr 22 23:41:04 appliance systemd[1]: mysqld.service: Scheduled restart job, restart counter is at 2.
Apr 22 23:41:04 appliance systemd[1]: Stopped MySQL 8.0 database server.
Apr 22 23:41:04 appliance systemd[1]: Starting MySQL 8.0 database server...
[root@appliance ~]# 

при первом запуске ругался на какой то файл mysql.sock и что его нужно удалить

Apr 22 23:40:14 appliance mysql-check-socket[3926]: Socket file /var/lib/mysql/mysql.sock exists.
Apr 22 23:40:14 appliance mysql-check-socket[3926]: No process is using /var/lib/mysql/mysql.sock, which means it is a garbage, so it will be removed automatically.

Я его вручную удалил

nilob
() автор топика
Ответ на: комментарий от nilob

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

А дальше в соответствии с документацией,

  1. запускай с innodb_force_recovery = 1 эта команда НЕ чинит базу, а отключает проверки (т.е. игнорирует проблемы с базой) и поднимает базу в READ ONLY

это нужно для того, чтобы вытянуть хоть какой-то дамп данных

  1. через mysqldump вытаскивай свои данные

  2. ЕСЛИ удалось вытащить дамп, убирай innodb_force_recovery, удаляй /var/lib/mysql/*, создавай базу ЗАНОВО и заливай свой дамп, который вытянул в п.2

router ★★★★★
()
Последнее исправление: router (всего исправлений: 1)
Ответ на: комментарий от router

Полочилось))) запустить БД с таким конфигом в файле

/etc/my.cnf.d/mysql-server.cnf

[mysqld]
innodb_force_recovery = 6
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid

то есть добавил innodb_force_recovery = 6

Увидел окно для ввода логина и пароль zabbix но не пускает пишет ошибку

SQL statement execution has failed "INSERT INTO sessions (sessionid,userid,lastaccess,status) VALUES ('f49a03984623a556d4989407041d363b','1','1682182322','0')".

скрин ошибки чтобы было понятней https://clip2net.com/s/4imQYwY

если щас убрать из конфига строку innodb_force_recovery = 6 БД не стартует

nilob
() автор топика
Ответ на: комментарий от nilob

Смотри, как уже говорил, с innodb_force_recovery у тебя база запустилась в read only режиме

Не знаю, можно ли отключить запись о логинах в sessions, но точно можно отключить проверку паролей

--skip-grant-tables

можешь поменять команду через отдельный конфиг в /etc/systemd/system/mysqld.service.d по образцу /etc/systemd/system/mysqld.service.d/override.conf

Но лучше останови сервис (systemctl stop mysqld) и запусти mysqld с нужными параметрами вручную из консоли

Ну и дальше с п.2 - вытаскиваешь дамп, если получилось, удаляешь базу, создаёшь новую, заливаешь дамп

router ★★★★★
()
Последнее исправление: router (всего исправлений: 1)