Різні місця для баз даних MySQL?


18

Чи можна налаштувати MySQL для зберігання певної бази даних в окремому місці на диску?

Я все ще хочу, щоб будь-які нові бази даних перейшли до місця за замовчуванням, але є певна база даних, яку я хотів би зберігати у своїй папці Dropbox, щоб вона могла залишатися синхронізованою між декількома комп'ютерами.

Як я можу це зробити?


1
До речі, це можна зробити і навпаки. Залиште базу даних , як це було, і символічна посилання на нього з Dropbox. Dropbox насправді не розуміє посилання, і просто синхронізує їх як звичайні.
TRiG

Відповіді:


27

Звичайно, ви можете! Ви повинні надати дозвіл на корені . Прочитайте сторінки посібника з ln .

MySQL зберігає дані бази даних у відокремлених місцях /var/lib/mysql. Я думаю, спочатку вам довелося скласти рейтинг, куди ви хочете помістити вибрані файли бази даних. Надайте кореневий дозвіл, зупиніть дімон MySQL:

# /etc/init.d/mysql stop

Скопіюйте свої дані в нову папку:

# cp /var/lib/mysql/DATABASENAME /path/to/new/database/dir

Видаліть ваш старий редактор з файлів даних MySQL: ( Увага! ВСЕГДИ спочатку зробіть дамп SQL !!! )

# rm -R /var/lib/mysql/DATABASENAME

Створіть посилання назад до реєстру даних MySQL: ( Зверніть увагу! Спочатку прочитайте сторінку людини ln !!! )

# ln -s /full/path/to/new/database/dir /var/lib/mysql/DATABASENAME

Після цього, ви готові, запустіть MySQL:

# /etc/init.d/mysql start

Увага! Якщо ваш новий редактор не записується та не читається MySQL, це не працює! Наприклад, поширена проблема: ви поміщаєте ваш новий реєстр даних у свою домашню папку, ваша домашня папка читається захищеною іншими (наприклад: drwxrwx --- ви, ваш youdir).

Запитайте, чи хочете ви дізнатися інші речі про цей метод!


2
Спасибі! Я навіть не розглядав посилання, я занадто зайнятий роздумом про способи зробити це всередині mysql.
Колін

8
Ви захочете редагувати, /etc/apparmor.d/*mysqldщоб включити і новий каталог. Потім sudo service apparmor reloadперед перезапуском MySQL.
Кіс Кук

3
@KeesCook велике спасибі за пораду apparmor, що зводив мене з розуму !! Схоже, краще вкласти це, /etc/apparmor.d/localхоча (у мене на інсталюванні вже є usr.sbin.mysqld), додавши сингл /full/path/to/new/database/dir/** rwk,це зробив для мене ...
Tobias J,

Велике спасибі, деякі деталі редагування apparmor тут також корисні. Мене сповільнили, намагаючись поставити базу даних на диск, який не завантажувався автоматично під час завантаження і потрібен користувачеві root для доступу до нього. Відмовився працювати. Відредагований , fstabяк це так , що цей диск був встановлений в файлової системі після завантаження, тепер все працює.
кардамон

3

Зверніть увагу, що якщо ви використовуєте Ubuntu, вам також потрібно додати запис у файл конфігурації AppArmour /etc/apparmor.d/usr.sbin.mysqld, інакше ви продовжуватимете отримувати помилки дозволу, навіть якщо ви зміните файли та папки. дозволи.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.