MySQL – где физически хранятся базы данных
По умолчанию MySQL хранит данные в подпапке data в директории куда он сам установлен.
Допустим есть база данных test, значит все содержащиеся в ее таблицах данные по умолчанияю лежат в %MYSQL_DIR%/data/test.
Чтобы найти где физически расположены ваши mysql базы данных, вам сначала стоит залезть в директорию мускла и глянуть там упомянутую папку data, если она есть и в ней есть папки, совпадающие с названиями ваших бд – дальше можно не читать.
Если ее нет, но у вас есть доступ к mysql, то достаточно исполнить
mysql> select @@datadir;
+————————+
| @@datadir |
+————————+
| /usr/local/mysql/data/ |
+————————+
1 row in set (0.00 sec)
Если доступа к мусклу нет, а вам все-таки хочется добраться до файлов, то посмотрите как запущен процесс mysql сервера
bash-3.2$ ps -ax | grep mysql
274 ?? 0:57.42 /usr/local/mysql/bin/mysqld —basedir=/usr/local/mysql —datadir=/usr/local/mysql/data —plugin-dir=/usr/local/mysql/lib/plugin —user=mysql —log-error=/usr/local/mysql/data/hl.local.err —pid-file=/usr/local/mysql/data/hl.local.pid
Нас интересует путь в переменной
—datadir=/usr/local/mysql/data
Или переменная, в которой указывается путь до mysql конфига. У меня ее нет, но выглядит примерно так
—defaults-file=/etc/mysql/my.cnf
или
—defaults-extra-file=/etc/mysql/mysql/my.cnf
А в файле конфигурации ищем строку:
datadir=
Category: Базы данных
Tags: MySQL
Comments
Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/dezhik.ru/wp-includes/class-wp-comment-query.php on line 399
Рубрики
Теги
Архив
- November 2015 (1)
- August 2014 (1)
- June 2014 (1)
- February 2014 (1)
- January 2014 (1)
- December 2013 (1)
- November 2013 (1)
- October 2013 (1)
- March 2013 (1)
- December 2012 (1)
- October 2012 (1)
- June 2012 (2)
- October 2011 (1)
- September 2011 (3)
- August 2011 (2)
- July 2011 (2)
- June 2011 (1)
- April 2011 (2)
- March 2011 (1)
- February 2011 (2)
- January 2011 (1)
- July 2010 (3)
- May 2010 (1)
- April 2010 (4)
- March 2010 (8)
- February 2010 (4)
Где в 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:
[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 вообще команда крайне полезная.
Авторизуйтесь для добавления комментариев!
Почтовый сервер Mikrotik VPN 3proxy Шифрование Squid Резервное копирование Защита почты Виртуальные машины Настройка сервера java kvm Групповые политики SELinux OpenVPN IPFW WDS Lightsquid Samba firewalld systemd Mobile libvirt Remote desktop WiFi Iptables NAT Postfix Dovecot Удаление данных Софт Безопасность Winbox User agent Хостинг Передача данных Онлайн сервисы Privacy LetsEncrypt VPN сервер Настройка прокси RRDTool sendmail Rsync Linux SSH Система Windows Синхронизация Облако fail2ban FreeBSD
Как узнать путь до файлов базы данных MySQL/MariaDB в Linux и Windows
Файлы базы MySQL/MariaDB данных хранятся на жёстком диске. По умолчанию это папка data внутри директории исполнимых файлов MySQL (в Windows) или в директории /var/lib/mysql/ (Linux).
В настройках можно указать любое расположение базы данных MySQL — необязательно в папке с установленной программой, это может быть произвольная папка. Более того, на серверах с высокой нагрузкой рекомендуется файлы баз данных выносить на отдельный диск, чтобы не снижалась производительность из-за одновременного доступа к диску для чтения баз данных и для запуска исполнимых файлов.
Иногда непросто разобраться в сложной структуре веб-сервера, иногда нужно в скрипте реализовать возможность определять путь до файлов баз данных — например, в целях настройки автоматического резервного копирования.
Далее будет показано, как в командной строке можно определить, где расположены файлы баз данных MySQL в Windows и в Linux.
Определение пути без подключения к серверу СУБД
В Windows
В ОС 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
В операционной системе Linux выполните следующую команду и она покажет вам путь до базы данных:
mysqld --verbose --help | grep ^datadir
Переменная @@datadir;
Этот способ работает на всех системах одинаково. Нужно выполнить подключение к системе управления базой данных. Например, для пользователя root это делается так:
mysql -u root -p
И затем в консоли MySQL/MariaDB выполните:
select @@datadir;
Как видно на скриншоте, путь до файлов базы данных на сервере, где введена команда, 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 у вас проблемы с последними командами, то инвертируйте (поменяйте местами) одинарные и двойные кавычки.
Также не забывайте менять пользователя root на имя вашего пользователя.
Связанные статьи:
- Как импортировать и экспортировать базы данных в MySQL или MariaDB (57.5%)
- Как установить веб-сервер Apache с PHP 7, MariaDB/MySQL и phpMyAdmin (LAMP) на Ubuntu (57.5%)
- Изучение MySQL / MariaDB для начинающих (57.5%)
- 20 команд MySQL (mysqladmin) для администратора базы данных в Linux (57.5%)
- Как переместить директорию с данными MySQL/MariaDB в новое расположение на Ubuntu 16.10 или 17.04 (57.5%)
- Как запустить MySQL/MariaDB с указанием другой директории data (RANDOM — 57.5%)
Где хранятся базы данных MySQL?
Хотите сделать резервную копию все своих баз данных?
Но делать бекап каждой базы накладно как то.
Поэтому вы задались вопросом, а где же хранятся файлы базы данных MySQL?
Все файлы вы можете найти в папке
/var/lib/mysql
Там находятся все файлы базы данных MySQL
Скопировать папку можно с помощью команды
cp -Rp /var/lib/mysql /backup-mysql
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.