MyISAM проблема после перемещения datadir базы данных MySQL

Недавно я переместил свой каталог данных базы данных MySQL из местоположения по умолчанию /var/lib/mysql на новый жесткий диск, расположенный в /media/..UID../mysql, выполнив шаги, которые вы можете найти в нескольких сообщениях.

  1. остановить MySQL
  2. Скопировать старую папку в новое место
  3. Изменить datadir в [mysqld] из /etc/mysql/my.cnf
  4. Изменить две записи в конфигурации AppArmor
  5. Настройте права пользователя из каталога данных
  6. Перезапустите AppArmor
  7. Перезапустите MySql

После этих шагов I попытался создать новую базу данных, и это сработало, оно появляется также в новой папке. Затем я создал новую таблицу InnoDB, и она также сработала, и она помещает файл *frm в папку /mysql/new. Но затем я хотел создать таблицу MyISAM в этой базе данных, я получил ошибку

#1 - Can't create/write to file '/media/..UID../mysql/new/tableName.MYI' (Errcode: 13)

Я уже пытался установить все разрешения на 777, так как я думал, что это проблема с разрешениями (но поскольку InnoDB может писать в эту папку, я не могу понять, почему MyISAM не может !?). Мне кажется, что движку MyISAM нужно другое специальное разрешение для записи своих файлов, но я не знаю, где.

Сначала я подумал, что это проблема с монтированием этого нового жесткого диска, но потом опять - InnoDB может создавать папки базы данных, а также создавать файлы внутри этих папок.

Итак, любая помощь приветствуется, если у кого-то возникла похожая проблема после перемещения таблицы MyISAM, и он мог бы дать некоторые подсказки, где искать или что еще попробовать.

Большое спасибо уже заранее!

1
задан 24 April 2013 в 11:16

1 ответ

У меня была похожая проблема.

Вот что работает в Ubuntu 12.04

Чтобы переместить файлы данных из /var/lib/mysql в /newdir_path/newdir

sudo mysql stop
sudo rsync -av /var/lib/mysql /newdir_path/newdir ## like copy, but keeps rights
sudo -H gedit /etc/mysql/my.cnf

, измените datadir на /newdir_path/newdir

sudo -H gedit /etc/apparmor.d/usr.sbin.mysqld
[ 1113] вместо:

/var/lib/mysql/ r,
/var/lib/mysql/** /rwk 

введите:

/newdir_path/newdir/ r,
/newdir_path/newdir/** rwk, 

Теперь выполните:

sudo /etc/init.d/apparmor restart 
sudo chown mysql:mysql <b>/newdir_path
sudo start mysql
0
ответ дан 24 April 2013 в 11:16

Другие вопросы по тегам:

Похожие вопросы: