Назад | Перейти на главную страницу

Правильный заказ выключения MySQL и iSCSI на Ubuntu Lucid

Я запускаю MySQL на сервере Ubuntu 10.04 с MySQL $ datadir, расположенным на томе iSCSI. Файловая система помечена как "_netdev" в /etc/fstab. При выключении системы выскочка отправляет MySQL сообщение SIGTERM, а затем переходит к выключению сетевых интерфейсов, не дожидаясь выхода MySQL или отключения или отключения диска iSCSI. Это, конечно, приводит к тому, что XFS не размонтируется чисто, и MySQL должен тратить несколько минут на воспроизведение журналов InnoDB при запуске.

Я не понимаю, в каком месте нужно начинать ковырять, чтобы это исправить. Из того, что я читал, выскочка уже должна быть достаточно умной, чтобы дождаться размонтирования и отключения файловых систем iSCSI, прежде чем отключать сетевые интерфейсы, хотя этого не происходит. И я понятия не имею, как сказать ему, что ему также нужно дождаться полного завершения работы MySQL.

Вот что показывает консоль в процессе выключения:

Broadcast message from root@mysql-a1
    (unknown) at 11:19 ...

The system is going down for halt NOW!
Power button pressed
 * Stopping Bacula File daemon...                                        [ OK ]
Stopping file integrity checker: samhain.
 * Running nssldap-update-ignoreusers...                                 [ OK ]
 * Stopping multipath daemon multipathd                                  [ OK ]
 * Stopping nagios-nrpe nagios-nrpe                                      [ OK ]
 * Stopping Name Service Cache Daemon nscd                               [ OK ]
 * Stopping Postfix Mail Transport Agent postfix                         [ OK ]
 * Stopping SSH throttling throttle-ssh                                  [ OK ]
 * Stopping puppet agent                                                 [ OK ]
 * Stopping system logging syslog-ng                                     [ OK ]
Stopping statistics collection and monitoring daemon: collectdcollectd[1210]: Exiting normally.
collectd[1210]: collectd: Stopping 15 read threads.
collectdmon[1209]: Info: collectd terminated with exit status 0
collectdmon[1209]: Info: shutting down collectdmon
.
 * Asking all remaining processes to terminate...                        [ OK ]
 * All processes ended within 1 seconds....                              [ OK ]
 * Deconfiguring network interfaces...                                          [ 2884.248199] end_request: I/O error, dev dm-0, sector 5216
[ 2884.249807] end_request: I/O error, dev dm-0, sector 4192
[ 2884.817855] end_request: I/O error, dev dm-0, sector 0
[ 2884.819347] XFS (dm-0): Device dm-0: metadata write error block 0x0
[ 2884.821281] XFS (dm-0): I/O Error Detected. Shutting down filesystem
[ 2884.823393] XFS (dm-0): Please umount the filesystem and rectify the problem(s)
[ 2885.367423] end_request: I/O error, dev dm-0, sector 0
init: mysql main process (4168) terminated with status 1
                                                                         [ OK ]
 * Deactivating swap...                                                  [ OK ]
 * Unmounting weak filesystems...                                        [ OK ]
 * Unmounting local filesystems...                                       [ OK ]
 * Disconnecting iSCSI targets                                           [ OK ]
 * Stopping iSCSI initiator service                                      [ OK ]
 * Will now halt
[ 2886.802324] Power down.
Connection to bottom.cw closed.
bottom:~ insyte$

Это запись fstab:

/dev/mapper/21db3d79bf30ef4846c9ce90069680087 /srv/mysql xfs  _netdev,noatime,nodev,noexec  0 0

У вас есть несколько вариантов:

  1. Обновите до точного. Проблема там исправлена.
  2. Измените условие остановки (в /etc/init/mysql.conf) на stop on starting rc RUNLEVEL=[016]
  3. Зайдите в любой сценарий инициализации (я почти уверен, что это sysv) отключает сетевые интерфейсы и добавьте команду initctl emit deconfiguring-networking непосредственно перед тем, как интерфейсы будут отключены. Затем измените остановку при условии mysql на stop on deconfiguring-networking or runlevel [016]

Средний вариант, наверное, самый простой.