Как я разделяю большой sql databse файл резервной копии в меньшие части, не портя с сохраненными запросами?

У меня есть большой mysql файл резервного копирования базы данных, который является больше, чем максимум, позволенный PHPMYADMIN. Я создал базу данных и теперь хочу импортировать базу данных назад, но файл является столь же большим, я не могу импортировать его как единственный файл. Теперь я знаю, что можно зарегистрировать разделение, но что я боюсь, может испортить запросы и повредить базу данных. Существует ли путь, посредством чего я могу разделить его в точно, где один запрос заканчивается автоматически так, чтобы я мог загрузить его на свой живой сервер? Я использую Ubuntu 18.0.4 LTS, Мой сервер является удаленным (совместно использованный хостинг) так не может иметь так большого контроля над конфигурированием phpmyadmin

-1
задан 12 March 2020 в 12:29

2 ответа

Я использовал этот инструмент под названием РАЗДЕЛИТЕЛЬ ДАМПА SQL для прерывания большого файла в маленькие блоки моего выбора. Инструмент является межплатформенным и прибывает в appimage формат, означающий это, может работать почти на любых дистрибутивах Linux. Просто сделайте это исполняемым файлом и работайте, это (дважды щелкните по нему).

0
ответ дан 17 March 2020 в 00:03

Это решение работает, только если вы создаете файл дампа, а также восстанавливаете его; например с помощью mysqldump/phpMyAdmin

я нашел еще более простой способ; выяснить, какие таблицы самые тяжелые (используя ls); эти таблицы обычно представляют собой таблицу журнала или основную таблицу

sudo ls -Shlr /var/lib/mysql/[database_name]

. Кстати: -S для сортировки по размеру файла; h предназначен для чтения человеком (вместо того, чтобы указывать размер файла в байтах, используйте mb и т. д.); l для длинного списка, а r для обратного порядка при листинге, т.е. самый большой файл будет последним.

Тогда сначала; когда вы делаете дамп с помощью mysqldump, исключайте эти большие файлы (не беспокойтесь, они будут включены во второй файл дампа.

Первый файл дампа; Все, кроме этих больших таблиц

mysqldump -h localhost -u root --password='[password]' --add-drop-database --add-drop-table --add-drop-trigger --dump-date --single-transaction --routines --events --ignore-table=[databaseName].[tableName1] --ignore-table=[databaseName].[tableName2] [databaseName] > /mnt/[path]/backup/2020/07Jul/dbName_year_month_day_all.sql

второго файла дампа; состоящий только из этих больших таблиц

mysqldump -h localhost -u root --password='[password]' --dump-date --single-transaction [databaseName] [tableName1] [tableName2] > /mnt/[path]/backup/2020/07Jul/dbName_year_month_day_tab1_tab2.sql

Используя этот метод, вы можете иметь файлы дампа примерно одинакового размера (2 или более) меньшего размера. который будет легко загружаться и выполняться на сервере.

При размере сервера просто импортируйте эти файлы дампа с помощью любого клиента. например phpMyAdmin.

К вашему сведению: я заметил, что использование сжатия файла дампа, т. е. (формат .sql.zip), приводит к ошибке неверного шлюза на сервере.

1
ответ дан 18 July 2020 в 07:54

Другие вопросы по тегам:

Похожие вопросы: