Linux mysql файлы базы данных

Где в Linux находятся базы MySQL

Чаще всего базы данных MySQL на Linux хосте находятся в директории /var/lib/mysql.

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

1) Самое простое и не самое точное: смотрим дату обновлений файлов в папке /var/lib/mysql. Если даты свежие, значит весьма вероятно, база данных лежит тут.

2) файл конфигурации «my.cnf»

MySQL (MariaDB) хранят настройки в файлах с расширением .cnf. По-умолчанию — файл my.cnf.

Скорее всего, это файл находится в /etc/my.cnf.

Лучше не гадать, а найти файлы my.cnf на хосте:

# find / -type f -name my.cnf
/etc/my.cnf

У меня в этом файле была единственная ссылка на директорию /etc/my.cnf.d, в которой были файлы:

auth_gssapi.cnf
client.cnf
enable_encryption.preset
mariadb-server.cnf
mysql-clients.cnf

В файле /etc/my.cnf.d/mariadb-server.cnf:

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

Директория с базой данных: /var/lib/mysql

3) как еще можно искать конфиг базы mysql?

# mysql —help | grep /my.cnf
/etc/my.cnf ~/.my.cnf

# mysqladmin —help | grep /my.cnf
/etc/my.cnf ~/.my.cnf

Зная файл конфига, вы легко найдете расположение базы данных.

4) изврат, но почему бы и да?

Используя команду lsof, можно посмотреть, какие файлы задействованы базой данных:

# lsof -u mysql
.
mysqld 1084 mysql 17r DIR 253,0 4096 394860 /var/lib/mysql
mysqld 1084 mysql 18uW REG 253,0 114688 657855 /var/lib/mysql/postfix/domain_admins.ibd
mysqld 1084 mysql 19uW REG 253,0 98304 657859 /var/lib/mysql/postfix/vacation_notification.ibd
mysqld 1084 mysql 20uW REG 253,0 131072 657863 /var/lib/mysql/postfix/alias_domain.ibd
mysqld 1084 mysql 21uW REG 253,0 98304 657866 /var/lib/mysql/postfix/domain.ibd
mysqld 1084 mysql 22uW REG 253,0 114688 657856 /var/lib/mysql/postfix/mailbox.ibd

Сразу несколько файлов задействованы в директории /var/lib/mysql.

lsof вообще команда крайне полезная.

Авторизуйтесь для добавления комментариев!

Источник

Как узнать путь до файлов базы данных MySQL/MariaDB в Linux и Windows

Файлы базы MySQL/MariaDB данных хранятся на жёстком диске. По умолчанию это папка data внутри директории исполнимых файлов MySQL (в Windows) или в директории /var/lib/mysql/ (Linux).

Читайте также:  Writing script in linux shell

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

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

Далее будет показано, как в командной строке можно определить, где расположены файлы баз данных MySQL в Windows и в Linux.

Определение пути без подключения к серверу СУБД

В ОС Windows для получения пути до базы данных введите команду:

.\mysqld --verbose --help | findstr /b "datadir"
datadir c:\Server\data\DB\data\

Если вы получите сообщение, что команда mysqld не найдена, значит нужно указать путь до исполнимого файла mysqld или перейти в директорию с исполнимым файлом. Предположим, MySQL/MariaDB установлена в папке C:\Server\bin\mariadb, тогда переходим в поддиректорию bin, содержащую исполнимые файлы, и выполняем там указанную выше команду:

cd C:\Server\bin\mariadb\bin .\mysqld --verbose --help | findstr /b "datadir"

В операционной системе Linux выполните следующую команду и она покажет вам путь до базы данных:

mysqld --verbose --help | grep ^datadir

Переменная @@datadir;

Этот способ работает на всех системах одинаково. Нужно выполнить подключение к системе управления базой данных. Например, для пользователя root это делается так:

И затем в консоли MySQL/MariaDB выполните:

Как видно на скриншоте, путь до файлов базы данных на сервере, где введена команда, c:\Server\data\DB\data\.

Ещё один вариант выполнения данной команды:

mysql -u root -p -e "select @@datadir;"

Как узнать настройки директорий в MySQL/MariaDB

Чтобы показать информацию о всех настройках директорий СУБД сервера, выполнит команду:

mysql -u root -p -e "SHOW VARIABLES WHERE Variable_Name LIKE '%dir'"

Пример вывода в Windows для MariaDB:

+---------------------------+---------------------------------------+ | Variable_name | Value | +---------------------------+---------------------------------------+ | aria_sync_log_dir | NEWFILE | | basedir | C:\Server\bin\mariadb\ | | character_sets_dir | C:\Server\bin\mariadb\share\charsets\ | | datadir | c:\Server\data\DB\data\ | | innodb_data_home_dir | | | innodb_log_group_home_dir | .\ | | innodb_tmpdir | | | lc_messages_dir | | | plugin_dir | C:\Server\bin\mariadb\lib\plugin\ | | slave_load_tmpdir | C:\Windows\TEMP | | tmpdir | C:\Windows\TEMP | +---------------------------+---------------------------------------+

Чтобы вывести только datadir выполните команду:

mysql -u root -p -e "SHOW VARIABLES WHERE Variable_Name = 'datadir'"

Как узнать путь до базы данных MySQL/MariaDB в скрипте

Если вы используете полученное значение пути до папки баз данных, например, в скрипте, то есть вам нужно только значение без лишних символов псевдографики, которая имитирует таблицу, то примените следующую команду:

mysql -s -N -u root -p information_schema -e "SELECT Variable_Value FROM GLOBAL_VARIABLES WHERE Variable_Name = 'datadir'"

Примечание: если в Linux у вас проблемы с последними командами, то инвертируйте (поменяйте местами) одинарные и двойные кавычки.

Читайте также:  Редактор файлов linux windows

Также не забывайте менять пользователя root на имя вашего пользователя.

Связанные статьи:

Источник

Где хранятся базы данных MySQL

Файлы баз данных в СУБД MySQL хранятся на жёстком диске. По умолчанию все файлы с базами хранятся в директории /var/lib/mysql. Однако это путь можно изменить.

В данной статье будет показано как посмотреть, где хранятся файлы баз данных в СУБД MySQL в операционной системе Ubuntu 20.04.

Где хранятся базы данных MySQL

По умолчанию все файлы с базами хранятся в директории /var/lib/mysql. Однако, чтобы убедиться в этом можно выполнить команду sudo grep -R ‘datadir’ /etc/mysql/ которая отобразит полный путь до файлов, в которых хранятся базы данных:

sudo grep -R ‘datadir’ /etc/mysql/

B4d7gJs3vPwRAAAAAElFTkSuQmCC

Если перейти по предложенному пути — /var/lib/mysql то в директории будут расположены все необходимые файлы c баз данных. Команду для перехода в директорию необходимо выполнять из-под пользователя root иначе будет ошибка Permission denied:

L3mBbsEyfceGAAAAAElFTkSuQmCC

FqBbNZPll52mdLvzOttetIbHmFwhIC9rjmIuWoy0u8rderDQSJGXPLCrjNN35PL7vwHmbpGYplhiNAAAAABJRU5ErkJggg==

Теперь вы знаете где находятся базы данных MySQL. Также можно выполнить команду mysqld с параметрами —verbose и —help которая отобразит путь хранения файлов с базами данных. Данная команда аналогична предыдущей команде.

mysqld —verbose —help | grep ^datadir

n+RoscPJhsdNwAAAABJRU5ErkJggg==

Если есть необходимость в изменении пути хранения файлов баз данных, то необходимо открыть конфигурационный файл MySQL от имени суперпользователя (root) при помощи любого текстового редактора. В данном примере, как мы узнали выше, конфигурационный файл находится по пути /etc/mysql/mysql.conf.d/mysqld.cnf. Команда для его редактирования будет выглядеть следующим образом:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

nI6+aCt6MhzZ1RMx7aNs+tKo1GB7f8DfV1aoCxYarwAAAAASUVORK5CYII=

В открывшемся файле необходимо найти блок [mysqld] и в нем параметр с именем datadir в котором можно пописать нужный путь, где будут храниться базы данных. После того как путь был задан необходимо сохранить изменения, закрыть текстовый редактор и перезапустить СУБД при помощи команды:

Читайте также:  Linux ls hide hidden files

sudo systemctl restart mysql

weM1MMoOwbgYAAAAABJRU5ErkJggg==

Выводы

В данной короткой статье было рассмотрено, где хранятся базы данных в СУБД MySQL. Также при желании можно изменить директорию для хранения. Есть ли у вас опты работы с СУБД MySQL? Расскажите в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Перемещение базы данных MySQL 8 в Ubuntu 20.04 LTS

MySQL 8

База данных MySQL 8 при установке на Ubuntu 20 по умолчанию пишется в папку /var/lib/mysql. Со временем база растёт и поднимается вопрос переноса её на другой раздел диска. Перенесём базу данных в /u01/mysql/mysql.

Требования

  • ОС Ubuntu 20.04 LTS. Или 18.04 LTS. Или Ubuntu 16.04.
  • Работаем из-под root.
  • Сервер MySQL 8
  • Есть папка /u01

Подготовка

Проверим где находится текущая БД MySQL.

mysql -u root -p select @@datadir;

sql

Видим, что файлы базы находятся в /var/lib/mysql/. Чтобы закрыть командную строку MySQL, введите exit.

Останавливаем сервер MySQL:

Проверяем статус, мы должны убедиться, что сервер MySQL остановлен:

sql

Видим — Status: «Server shutdown complete».

Перемещаем каталог данных MySQL

Создадим папку /u01/mysql, в неё будем переносить папку с данными MySQL.

С помощью rsync переносим MySQL в другую папку:

rsync -av /var/lib/mysql /u01/mysql

Флаг –a сохраняет привилегии и другие свойства каталога. Флаг –v предоставляет подробный вывод. Теперь внимание, папка /var/lib/mysql теперь находится по адресу /u01/mysql/mysql.

sql

Переименуем старую папку /var/lib/mysql, сохраним её на случай сбоя:

mv /var/lib/mysql /var/lib/mysql.bak

По умолчанию путь настроен в файле /etc/mysql/mysql.conf.d/mysqld.cnf, редактируем.

vim /etc/mysql/mysql.conf.d/mysqld.cnf

Найдите строку datadir= и укажите в ней путь к новому каталогу данных /u01/mysql/mysql.

sql

AppArmor

Настроим AppArmor, чтобы предоставить MySQL право на изменение нового каталога. Редактируем файл /etc/apparmor.d/tunables/alias:

vim /etc/apparmor.d/tunables/alias
alias /var/lib/mysql/ -> /u01/mysql/mysql/,

sql

systemctl restart apparmor

Если этого не сделать, то получим ошибку при запуске MySQL:

Failed to start MySQL Community Server

Перезапуск MySQL

MySQL при запуске проверяет наличие директории /var/lib/mysql/mysql (ЗАЧЕМ?). Чтобы он не ругался, создадим пустую папку:

systemctl start mysql systemctl status mysql

sql

mysql -u root -p select @@datadir;

sql

Путь теперь /u01/mysql/mysql/.

Удаление ненужных файлов

Источник

Оцените статью
Adblock
detector