mysql выгружает из терминала Linux отдельные файлы для каждой таблицы

#mysql #linux

#mysql #linux

Вопрос:

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

 GIT_MYSQL=/data/database/location to store
for T in `mysql -u [user] -h [Hostname] -p [database] -N -B -e 'show tables from database_name'`;
do
    echo "Backing up $T"
    mysqldump --skip-comments --compact -u [user] -p [password] [database] $T > $GIT_MYSQL/$T.sql
done;
  

Я получаю следующую ошибку:
mysqldump: Получена ошибка: 2002: Не удается подключиться к локальному серверу MySQL через сокет ‘/ var / lib / mysql / mysql.sock’ (2) при попытке подключиться
Мой mysql.sock отсутствует в папке

Ответ №1:

Вам нужна -h [Hostname] опция mysqldump , иначе он попытается выгрузить данные из локальной базы данных, а не с удаленного сервера, с которого вы получили список таблиц.

И чтобы ввести пароль в командной строке, а не запрашивать его, вам нужно использовать --password=[password] или -p[password] ; перед паролем не должно быть пробела.

 mysqldump --skip-comments --compact -u [user] -h [Hostname] -p'[password]' [database] $T > $GIT_MYSQL/$T.sql
  

Комментарии:

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

2. Смотрите dev.mysql.com/doc/refman/8.0/en/mysqldump-stored-programs.html

3. Как я могу их получить, это отдельные файлы. Есть ли команда типа «Показать таблицы из базы данных», чтобы показать имена процедур и функций stores, чтобы я мог перебирать их.

4. Мне это нужно для процедур и функций. Таблица готова.

5. Что бы вы сделали со списком имен процедур? Опция выгрузки процедур не позволяет указывать имя процедуры, она выгружает их все.