[MYSQL] Как выгрузить все таблицы базы в отдельные файлы.

[MYSQL] Как выгрузить все таблицы базы в отдельные файлы.

Export MySQL Database into Separate Files per Table

The below code is a bash script which let’s you export, using mysqldump, all tables in a MySQL database to individual files. This will result in one file per MySQL table in the database. You will need to modify the following attributes:

  • [USER] – the username to use when connecting to the MySQL instance.
  • [PASSWORD] – the password for the above MySQL user.
  • [DATABASE] – the name of the MySQL database to export.
  • [BACKUP_LOCATION] – the location on the MySQL server where the SQL files will be created.

Бэкапим таблицы в отдельные файлы.

#!/bin/bash

GIT_MYSQL=/[BACKUP_LOCATION]

for T in `mysql -u [USER] -p[PASSWORD] -N -B -e 'show tables from [DATABASE]'`;

do

    echo "Backing up $T"

    mysqldump --skip-comments --compact -u [USER] -p[PASSWORD] [DATABASE] $T > $GIT_MYSQL/$T.sql

done;

 Восстанавливать так:

for i in `ls /BACKUP-DIR`;do mysql -u USER -p PASS NEW_DB < $i;done

Дополнение, если БД повреждена и нельзя понять какие таблицы есть внутри бд, то можно это понять по файлам

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

cd /var/lib/mysql/ваша бд/ 

TABLE=$(ls -la | grep ibd | grep -Eo b_.+[^.]) && echo "$TABLE" | cut -d '.' -f 1

< Назад к списку новостей