Как изменить каталог данных MySQL?

Можно ли изменить каталог данных MySQL по умолчанию на другой путь? Смогу ли я получить доступ к базам данных из старого местоположения?

Сначала вы должны остановить сервер mysql. например

 # /etc/init.d/mysql stop 

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

 # cp -R -p /var/lib/mysql /new/data/dir 

теперь вы можете изменить /etc/mysql/my.cnf новые данные и перезапустить сервер

 # /etc/init.d/mysql restart 

вам придется скопировать текущие данные в новый каталог и изменить my.cnf ваш MySQL.

 [mysqld] datadir=/your/new/dir/ tmpdir=/your/new/temp/ 

Вы должны скопировать базу данных, когда сервер не запущен .

Быстро и легко:

 # Create new directory for MySQL data mkdir /new/dir/for/mysql # Set ownership of new directory to match existing one chown --reference=/var/lib/mysql /new/dir/for/mysql # Set permissions on new directory to match existing one chmod --reference=/var/lib/mysql /new/dir/for/mysql # Stop MySQL before copying over files service mysql stop # Copy all files in default directory, to new one, retaining perms (-p) cp -rp /var/lib/mysql/* /new/dir/for/mysql/ 

Отредактируйте файл /etc/my.cnf , а в [mysqld] добавьте эту строку:

 datadir=/new/dir/for/mysql/ 

Если вы используете CageFS (с CloudLinux или без него) и хотите изменить каталог MySQL, вы ДОЛЖНЫ добавить новый каталог в этот файл:

 /etc/cagefs/cagefs.mp 

Затем запустите эту команду:

 cagefsctl --remount-all 

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

Если вы находитесь на Mac и устанавливаете MySQL с помощью Homebrew, это должно сработать для вас. В противном случае вам просто нужно будет заменить соответствующие местоположения для базы данных MySQL на вашем компьютере.

 #cd to my data dir location cd /usr/local/var/ #copy contents of local data directory to the new location cp -r mysql/ /Volumes/myhd/mydatadir/ #temporarily move the old datadir mv mysql mysql.local #symlink to the new location ln -s /Volumes/myhd/mydatadir mysql 

Затем, когда вы хотите переключиться обратно, просто выполните:

 mv mysql mysql.remote mv mysql.local mysql 

и вы снова используете свою локальную базу данных. Надеюсь, это поможет.

Первая остановка mysqld

 mysql_install_db --user=mysql \ --basedir=/opt/mysql/mysql \ --datadir=/opt/mysql/mysql/data 

Затем измените datadir в /etc/mysql/my.cnf
Запустить mysqld

Заметки:
# 1: возможно, вам нужно настроить настройки SELinux (попробуйте с отключенным SELinux в случае возникновения проблем), может также возникнуть проблема с Apparmor (Ubuntu).

# 2: см. Ссылку MySQL Install DB

Сначала остановите свой mysql

 sudo service mysql stop 

скопируйте данные mysql в новое место.

 sudo cp -rp /var/lib/mysql /yourdirectory/ 

если вы используете apparmor, отредактируйте следующий файл и выполните следующее

 sudo vim /etc/apparmor.d/usr.sbin.mysqld 

Замените где / var / lib / by / yourdirectory / затем добавьте следующее, если в файл не существует

  /yourdirectory/mysql/ r, /yourdirectory/mysql/** rwk, 

Сохраните файл с помощью команды

 :wq 

Отредактируйте файл my.cnf

 sudo vim /etc/mysql/my.cnf 

Замените где / var / lib / by / yourdirectory / затем сохраните с помощью команды

 :wq 

наконец запустите mysql

 sudo service mysql start 

@see больше о raid0, оптимизация ici

Это решение работает в Windows 7 с помощью Workbench. Для этого вам понадобятся права администратора. Он создает соединение (например, ярлык), где бы вы не захотели хранить свои данные

Откройте Workbench и выберите INSTANCE – Startup / Shutdown. Остановите сервер.

Установите мастер соединения с https://bitsum.com/junctionmaster.php

Перейдите к C: \ ProgramData \ MySQL \ MySQL Server 5.6

Щелкните правой кнопкой мыши на Data и выберите «MOVE, а затем LINK folder to …». Примите назначение пункта назначения «Новый каталог данных здесь без кавычек». Нажмите «MOVE AND LINK».

Теперь перейдите в «Ваш новый каталог данных здесь без кавычек»

Щелкните правой кнопкой мыши данные. Перейдите на вкладку безопасности. Нажмите «Изменить». Нажмите «Добавить тип NETWORK SERVICE», затем «Проверить имена». Нажмите «ОК». Установите флажок «Разрешить полный контроль», а затем «ОК».

Вернитесь в Workbench и запустите сервер

Этот метод работал для меня с использованием MySQL Workbench 6.2 на Windows 7 Enterprise.

Все, как @ user1341296 сказал, плюс …

Лучше не менять /etc/mysql/my.cnf Вместо этого вы хотите создать новый файл /etc/mysql/conf.d/ext.cnf (любое имя, но расширение должно быть cnf )

И вложите в это свое изменение:

 [mysqld] datadir=/vagrant/mq/mysql 

В этом случае

  • Вам не нужно изменять существующий файл (проще для сценариев автоматизации)
  • Нет проблем с обновлением MySQL (и его конфигурациями!).

Мне часто приходится делать это при обновлении машин, переходя от коробки к коробке. В дополнение к перемещению / var / lib / mysql в лучшее место, мне часто приходится восстанавливать старые таблицы БД из старой установки MySQL. Для этого …

  1. Остановить mysql. Следуйте инструкциям выше, это необходимо.
  2. Скопируйте каталоги базы данных – будет одна для каждой из вашей старой базы данных установки – в новое местоположение DATADIR. Но опускайте каталоги «mysql» и «performance_schema».
  3. Правильные разрешения между скопированными каталогами базы данных. Собственность должна быть mysql: mysql, каталоги должны быть 700, а файлы должны быть 660.
  4. Перезапустить mysql. В зависимости от вашей установки файлы старой версии DB должны обновляться.

Нам пришлось переместить MySQL в каталог /home потому что он был сопоставлен с другого физического диска. Чтобы сделать жизнь проще, вместо изменения каталога в my.cnf мы сопоставили новый каталог /home/mysql вместо исходного каталога /var/lib/mysql . Он работает для нас как шарм (протестирован на CentOS 7.1).

Создайте новый каталог и установите правильные разрешения.

 mkdir -p /home/mysql chmod 755 /home/mysql chown mysql:mysql /home/mysql 

Остановите MySQL, если он запущен.

 systemctl stop mysql 

Переместите реестр данных.

 mv -f /var/lib/mysql/* /home/mysql 

Создайте постоянное монтирование и выполните его.

 echo "/home/mysql /var/lib/mysql none bind 0 0" >> /etc/fstab mount -a 

Перезагрузите сервер.

 systemctl start mysql 

Если вы хотите сделать это программно (без ручной текстовой записи с gedit), вот версия для файла Docker на основе ответа пользователя1341296 выше:

 FROM spittet/ruby-mysql MAINTAINER [email protected] RUN cp -R -p /var/lib/mysql /dev/shm && \ rm -rf /var/lib/mysql && \ sed -i -e 's,/var/lib/mysql,/dev/shm/mysql,g' /etc/mysql/my.cnf && \ /etc/init.d/mysql restart 

Доступно на концентраторе Docker: https://hub.docker.com/r/richardjecooke/ruby-mysql-in-memory/

Во-первых, вы должны знать, где находится ваш файл конфигурации? где ваш файл конфигурации?

ЕСЛИ вы установили с установкой apt-get или yum.

файл конфигурации может появиться в

/etc/mysql/my.cnf

файл данных может появиться в

/ Var / Библиотека / MySQL

и что вы должны сделать, это

  1. остановить mysql
  2. измените данные mysql на новый dirctory
  3. изменить файл конфигурации
  4. перезагрузите файл конфигурации
  5. перезапустить mysql

а затем выполненные задания.

Но если вы не установили его с помощью apt или yum, директивному движению может это не понравиться, и вы можете найти файлы mysql с помощью

whereis mysql

В SuSE 13.1 это отлично работает, чтобы переместить каталог данных mysql в другом месте, например, в / home / example_user / и дать ему более информативное имя:

В / var / lib /:

 # mv -T mysql /home/example_user/mysql_datadir # ln -s /home/example_user/mysql_datadir ./mysql 

Я перезапустил mysql:

 # systemctl restart mysql.service 

но подозревают, что даже это не было необходимо.

Для одной из среды я изменил каталог данных mysql в новое место, но во время перезагрузки сервера mysql это заняло время. Поэтому я проверил порт и обнаружил, что другой процесс прослушивает порт mysql. Поэтому я убил процесс и перезапустил сервер mysql, и он работал хорошо.

Я выполнил следующие шаги для изменения каталога данных, который отлично работал. изменить каталог данных mysql в Linux

Если вы используете SE linux, установите его в разрешающий режим, отредактировав / etc / selinux / config и изменив SELINUX = принудительно на SELINUX = permissive

  • Поддерживает ли Java значения параметров по умолчанию?
  • Что означает «default» после объявления функции classа?
  • Таблицы стилей CSS по умолчанию для браузеров
  • Принудительный клиент telnet в режиме символов
  • Интерфейс с методами по умолчанию vs Абстрактный class в Java 8
  • Переадресация по умолчанию для Error 404
  • Существует ли разумный подход к параметрам типа «по умолчанию» в C # Generics?
  • Конструкторы и наследование по умолчанию в Java
  • Почему компилятор Scala запрещает перегруженные методы с аргументами по умолчанию?
  • Как вы используете конструктор, отличный от стандартного для члена?
  • Создание (и доступ) разреженной матрицы с записями NA по умолчанию
  • Давайте будем гением компьютера.