Здравствуйте, Столкнулся с проблемой выполнения бэкапа базы данных. У сайта на LMS Moodle сильно разрослась БД. Сейчас весит около 8 Гб. Есть таблицы, которые весят по 2-3 Гб. Сделать чз phpmyadmin даже частями не могу. Не хватает времени выполнения. Доступа через SSH нет и не предвидится. Подскажите какие еще есть способы сделать бэкап большой базы данных?
пробовал как-то эту программу давно она не работала где-то читал с какой-то версии PHP она перестала работать у меня PHP 7.3 когда последний раз вы использовали эту программу и на какой версии PHP ?
То есть даже не почесался запустить, убрать сообщения об ошибках (continue -> continue 2 + заменить устаревший конструктор класса)? Я фигею, дорогая редакция, не знаю, как таких держат.
mysql_unbuffered_query можно поменять на mysqli_query или есть аналог в новом PHP ? --- Добавлено --- Запустил, ругалась на устаревшие mysql_* Заменил. Ошибок нет, но дальше страницы входа не пускает.
Код (Text): SELECT * INTO OUTFILE "/usr/local/htdocs/tablename_20000.csv" FROM `tablename` LIMIT 20000 , 20000; Опытным путем подберите количество строк. /usr/local/htdocs/ должна существовать и быть доступной для записи. tablename_20000.csv в ней существовать не должен, перезапись невозможна.
Забудь про phpmyadmin. Бэкап любого объема делается через mysqldump. Полезно исключить "лишние" таблицы со временными или генерируемыми данными типа поискового индекса. Их всегда можно создать заново. Вывод mysqldump зипуем, а при восстановлении наоборот разжимаем. Пример: Код (Text): mysqldump -h localhost --ignore-table=tmp1 --ignore-table=cachesmth -u username --single-transaction -p mydbname | gzip > backup.sql.gz распаковываем Код (Text): cat backup.sql.gz | gzip -d | mysql -h localhost -u username -p mydbname --- Добавлено --- На всякий случай сохрани структуру таблиц в отдельном бэкапе - пригодится для воссоздания тех самых производных и кеш-таблиц, которые можно пропускать в стандартных бэкапах. Код (Text): mysqldump --no-data -u username -p mydbname > structure.sql
Запустил, ругался на устаревшие mysql_error() и mysql_connect() заменил на mysqli_error() и mysqli_connect() ошибок не выводит болшьше через SSH я правильно понял? --- Добавлено --- спасибо попробую.
Он должен уже существовать. Физически. MySQL не имеет прав для создания директорий и перезаписи файлов. Политика безопасности. Иначе каждая SQL инъекция будет заканчиваться перезаписью любого файла на сервере. Кроме того, даже, если там есть какие-то хитрые настройки для "INTO OUTFILE" вы всегда можете сгенерировать csv с помощью PHP, непосредственно в браузер.
обычно - да, через тоннель ssh. но сами по себе команды не требуют этого. если на хосте с мускулем порт наружу открыт, то можно и так.