У меня есть база данных wordpress MU с чем-то вроде 10 000+ таблиц для блогов различных пользователей. Мне нужно обновить wordpress MU до последней версии, но я хочу заранее сделать резервную копию БД.
PHPMyAdmin даже не загружает страницу, когда я нажимаю экспорт. Я попытался зайти на сервер (Windows) и использовать командную строку dos:
mysqldump -u USERNAME -p PASSWORD> BACKUP.sql
но он зависает на минуту и выдает ошибку:
error 23: out of resources when opinging file '.\USERNAME\wp_1037_links.MYD' (Errorcode: 24) when using LOCK Tables
Что я делаю не так, или что мне делать? Подходит ли PHPMyAdmin для чего-то такого размера? Есть ли лучший способ сделать это, чем два метода, которые я пробовал?
** Обратите внимание, что это не мой сайт, поэтому любые предложения по настройке БД должны выполняться владельцем. Я здесь только ради дерьма, связанного с WP, это выходит за рамки того, для чего меня заставили.
У меня была такая же проблема, и я решил, что это переменная open_files_limit для my.cnf
просто обновите свой my.cnf
open_files_limit = 20000
[& начать сначала]
значение должно быть 2 * количество таблиц в вашей БД. Если это не сработает, попробуйте 3 * столов. Если и этого не происходит, не увеличивайте значение, поскольку это не проблема в вашем случае. Ищите решение снова ;-)
Ошибка указывает на то, что у вас заканчиваются ресурсы на сервере; причина, вероятно, связана с блокировкой: mysqldump неявно блокирует таблицы во время их чтения. Если в базе данных наблюдается большая активность, MySQL потребуется сохранить копию старых данных, доступную для транзакции mysqldump; для достаточно больших таблиц это может стать серьезной проблемой.
Если вас не слишком заботит согласованность данных, вы можете использовать --skip-lock-tables
(-q
на самом деле не будет работать, это только предотвращает буферизацию вывода. Это может быть полезно, но не решит вашу проблему) и --single-transaction
.
Попробуйте следующее: mysqldump --lock-all-table -u ИМЯ ПОЛЬЗОВАТЕЛЯ -p ПАРОЛЬ> BACKUP.sql
Имейте в виду, что если он будет активен, это может остановить работу сайтов.
ты мог бы попробовать администратор mysql, но кажется странным, что mysqldump выдает такую ошибку.
ошибка 23: нехватка ресурсов при открытии файла '. \ USERNAME \ wp_1037_links.MYD'
Это больше похоже на общую проблему с оперативной памятью или жестким диском на вашем сервере. Это виртуальная машина? Проверьте свой жесткий диск quota
первый. Возможно, в mySQL не хватает места даже при попытке доступа к таблице - в этом случае даже сжатая резервная копия не поможет.
Вы столкнулись с такой ошибкой:
оболочка> перрор 23
Код ошибки 23: слишком много открытых файлов в системе
оболочка> перрор 24
Код ошибки 24: слишком много открытых файлов
Больше информации здесь:
форумы.mysql.com/read.php?35,7639,7639#msg-7639
Но, как вы, наверное, уже знаете, mysqldump - не единственный способ выполнить резервное копирование mysql, и это тоже не лучший способ.
Я предполагаю, что вы используете Innodb в качестве механизма хранения, поэтому я бы рекомендовал использовать утилиту горячего резервного копирования innodb: ibbackup.
(он также может выполнять резервное копирование для myisam, но не имеет преимуществ перед mysqlhotcopy)
Но для реальной защиты базы данных Mysql вы можете порекомендовать активировать двоичные журналы на сервере mysql (они говорят, что это снижает производительность только на 1%), чтобы вы могли выполнять восстановление на определенный момент времени, как показано здесь: dev.mysql.com/doc/ refman / 5.0 / en / point-in-time-recovery.html.
Если ни одна из вышеперечисленных альтернатив вам не подходит, почему бы и нет:
1. ВЫБРАТЬ В ... OUTFILE
2. Учитывая среду вашего провайдера, вы можете делать снимки файловой системы.
3. или (я знаю, что нажимаю) подчиненные репликации Mysql :)
4. при использовании myisam просто сбросьте таблицы с блокировкой чтения и скопируйте файлы
5. Запросите обновление сервера mysql до 6.0 (когда он достигнет GA) и выполните резервное копирование следующим образом:
mysql> РЕЗЕРВНОЕ КОПИРОВАНИЕ БАЗЫ 'db-name' в 'c: \ backups \ whynotswitchtounix.bkp';
(обратите внимание на подсознательное сообщение :))
mysqldump -q -u имя пользователя -ppassword база данных> file.sql
-q позволяет избежать блокировки таблиц во время дампа
Действительно, утилита InnoDB Hot Backup - отличный инструмент, но вы можете предпочесть бесплатный инструмент, недавно выпущенный Percona: XtraBackup. Он выполняет онлайн-резервное копирование таблиц InnoDB и XtraDB и может создавать полные и инкрементные резервные копии.
попробуйте использовать gzip заархивировать ваши файлы sql для резервного копирования http://www.gzip.org/
и, возможно, расширение вашей виртуальной памяти ...
заставить владельца связаться с хостинговой компанией для быстрого резервного копирования