Где хранятся базы данных mysql
Перейти к содержимому

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

  • автор:

Где правильнее хранить базу данных?

Собираюсь писать приложение для магазина. Естественно в нем будет Бд MySql. Бд нужна НЕлокальная. Прочитал множество материала, но в голове не однозначный ответ. Мне нужно поместить Бд на хостинг или сервере? Я понимаю, что сервер — это отдельный, мощный пк, который может стоять где угодно, но хостинг это как бы частичка сервера, на котором размещают сайты, на которых также используют Бд. Как я понял, для сайта используется локальная Бд, которая хранится на хостинге, тоесть по сути для сайта она будет на одном пк. А мне нужен виртуальный сервер, который мне даст ip, port,host, и т.д. через которые я уже и буду подключаться? Или я что-то неправильно понял? Приложения с уже созданными Бд уже писал , а теперь возникла потребность сделать все самому и с нуля.

Отслеживать
задан 7 мар 2021 в 21:03
79 9 9 бронзовых знаков

Если это просто «поиграться» в магазины, то нет смысла сервер покупать, проще и дешевле хостинг взять, при покупке которого вам выдаются все нужные данные, в т.ч. и данные для подключения mysql

7 мар 2021 в 21:11

@InDevX, нет, это именно проект. Но там не будет сверх большого объёма данных. До 1 Гб. Разница в сервере и хостинге в моем случае получается только в цене? И можно купить как 1е так и 2е?

7 мар 2021 в 21:16

Не в объемах данных дело. Если магазин не требователен к ресурсам и без огромной посещалки то можно взять хостинг, если же нагрузка более-менее приличная (в плане посетителей, что, так же, будет влиять на серверную нагрузку), много запросов в БД и пр. атрибуты тяжелого проекта, надо надёжно хранить данные и пр. то лучше брать сервер

Где в 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 (56.9%)
  • Как установить веб-сервер Apache с PHP 7, MariaDB/MySQL и phpMyAdmin (LAMP) на Ubuntu (56.9%)
  • Изучение MySQL / MariaDB для начинающих (56.9%)
  • 20 команд MySQL (mysqladmin) для администратора базы данных в Linux (56.9%)
  • Как переместить директорию с данными MySQL/MariaDB в новое расположение на Ubuntu 16.10 или 17.04 (56.9%)
  • Ошибка «Failed — Network error» во время экспорта в phpMyAdmin (РЕШЕНО) (RANDOM — 56.9%)

Путь до базы MySQL / MariaDB

Обновлено

Обновлено: 20.07.2020 Опубликовано: 12.07.2018

Тематические термины: MySQL, MariaDB, Linux. В статье пойдет речь о просмотре и смене пути расположения файлов баз данных MySQL. Приведенные примеры выполнены на CentOS 7 — также они будут работать на Ubuntu и многих других дистрибутивах Linux, FreeBSD и Windows.

Посмотреть текущий путь

Увидеть, где хранятся базы можно несколькими способами. Способ 1. Командная строка Linux. В командной строке вводим:

systemctl status mysql || systemctl status mariadb

* для Windows используем оснастку Службы. Для FreeBSD используем команду service mysql-server stop. Пример ответа:

mariadb.service — MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since Ср 2018-07-11 15:38:16 MSK; 23h ago
Process: 1067 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
Process: 992 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
Main PID: 1066 (mysqld_safe)
CGroup: /system.slice/mariadb.service
??1066 /bin/sh /usr/bin/mysqld_safe —basedir=/usr
??1248 /usr/libexec/mysqld —basedir=/usr —datadir=/var/lib/mysql —plugin-dir=/usr/lib64/mysql/plugin —log-error=/var/log/mariadb/mariadb.log —pid-file=/var/run/mariadb/mariadb.pid —socket.

* в выделенном фрагменте /var/lib/mysql — путь до файлов базы данных. Способ 2. Командная оболочка MySQL. Данный способ является более универсальным — он подойдет для любого дистрибутива Linux, FreeBSD, Windows. Также, метод универсален с точки зрения метода установки MySQL — чистая установка или в составе готовой сборки (Open Server, Xampp, Denwer . ). Заходим под пользователем root в командную оболочку СУБД:

mysql -uroot -p
> SHOW VARIABLES WHERE Variable_Name LIKE «datadir»;
> select @@datadir;
Пример ответа:

Пример создания запроса на получение пути к базе MySQL в phpMyAdmin

Способ 3. Через phpMyAdmin. Если у нас нет доступа к серверу по SSH или удаленному рабочему столу, запрос можно сделать в phpMyAdmin:

Смена пути

Останавливаем сервер баз данных:
systemctl stop mysql || systemctl stop mariadb
Создаем новый каталог, например:
mkdir /home/mysql
Переносим содержимое старого каталога в новый:
mv /var/lib/mysql/* /home/mysql/
Задаем права и владельца для нового каталога:
chown mysql:mysql /home/mysql
chmod 755 /home/mysql
Открываем конфигурационный файл my.cnf:
vi /etc/my.cnf.d/server.cnf

  • /etc/my.cnf.
  • /etc/my.cnf.d/server.cnf.
  • /etc/my.cnf.d/mariadb-server.cnf.
  • В Windows это my.ini.

и задаем новый путь:

[mysqld]
datadir = /home/mysql

systemctl start mysql || systemctl start mariadb

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *