Use an import script that requires MySQL

Вам потребуется модифицировать скрипт для импорта данных. Скрипт bbPress импортирует только записи определённого типа (возможно, я не помню правильную терминологию WordPress). Какие именно записи WordPress вы хотите импортировать? Что из этого является темами, а что — обычными записями? Есть ли там категории? Это лишь несколько вопросов, на которые вам нужно будет ответить, модифицируя скрипт. Как это сделать — выходит за рамки поддержки, которую вы, скорее всего, сможете получить здесь.

Редактирование: Я уже несколько раз выходил на пенсию и приближался к решению… Сейчас:

На шаге 2, выполняя команду mysql -u$MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE < /backup/yourbackup.sql, я получаю ошибку bash: /backups/yourstratapropertywordpress.sql: No such file or directory, хотя файл существует (по крайней мере, в /var/backups он есть).

Если я перейду к следующему шагу и попробую выполнить su discourse -c "bundle exec ruby script/import_scripts/bbpress.rb", я получу следующий результат:

Загрузка существующих пользователей...
Загрузка существующих категорий...
Загрузка существующих сообщений...
Загрузка существующих тем...
Traceback (most recent call last):
        5: from script/import_scripts/bbpress.rb:512:in `<main>'
        4: from script/import_scripts/bbpress.rb:512:in `new'
        3: from script/import_scripts/bbpress.rb:21:in `initialize'
        2: from script/import_scripts/bbpress.rb:21:in `new'
        1: from /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `initialize'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in `connect': Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) (Mysql2::Error::ConnectionError)

Спасибо! Я изучу базу данных и скрипт и посмотрю, смогу ли я достичь своих целей.

1 лайк

Удачи! Я написал как минимум пару импортеров, прежде чем «освоил» Ruby. Если у вас есть понимание SQL, которое можно было получить на курсе бакалавриата в середине 1980-х годов, вы, скорее всего, справитесь. Если вы напишете запросы так, чтобы имена полей в результирующих данных совпадали с тем, что ожидает скрипт, возможно, вам удастся изменить только SQL.

@pfaffman Я бы очень ценил вашу помощь здесь, я застрял.

Сейчас я очень загружен, и здесь, скорее всего, это не решается. Напишите на jay@literatecomputing.com с указанием бюджета, и я сделаю всё возможное, чтобы предложить решение.

Похоже, ваш сервер MySQL либо не запущен, либо установлен неправильно.

1 лайк

Успех!

Тип поста должен быть post и должен заменить тип topic. Теги и категории тем не были перенесены. Все мои посты были импортированы от имени анонимного пользователя, но это, безусловно, хорошее начало!

1 лайк

Рады, что вы продвигаетесь вперёд!

Спасибо за этот ясный гайд — он стал ключом к пониманию процесса импорта, а не просто слепому копированию/вставке команд.

Я всё ещё пытаюсь найти самый быстрый способ импортировать очень большой форум Drupal, и у меня по-прежнему остаётся ощущение, что в моём случае можно оптимизировать процесс, чтобы сократить время простоя при финальном переносе форума в продакшн. Возможно, я немного «седобородый» ветеран, но ещё не до конца убеждён в всей парадигме Docker/контейнеризации. Я точно читал где-то, что в какой-то момент была ошибка в Docker, из-за которой производительность инстансов MySQL в контейнерах падала катастрофически. На форуме Docker я вижу этот отчёт, но не уверен, актуален ли он ещё. К тому же, это может быть нерелевантно для моего случая, так как я использую Debian вместо Ubuntu на хосте.

Другой вариант — установить MySQL или MariaDB непосредственно на хостовую ОС, вне контейнера?

И не углубляясь в детали, как насчёт оптимизации my.cnf с помощью рекомендаций из MySQLTuner? Стандартная конфигурация Docker, которая работает «из коробки» для всех инстансов, не может быть оптимальной с её настройками пула буферов и размера ключевых буферов, что критически влияет на производительность выделенной продакшн-БД.

Привет. Спасибо за это решение. У меня возникли проблемы с гемами, о которых вы упоминали в своей статье, поэтому я очень надеюсь, что всё получится. Работает ли этот метод для миграции форума bbPress на WordPress (размещённого на DreamPress) на экземпляр Discourse (размещённый на DigitalOcean)?

Я использую виртуальный сервер на базе Ubuntu от DigitalOcean и веб-терминал/консоль. Мой первый вопрос: что должно происходить, когда я запускаю /var/discourse/launcher stop app и /var/discourse/launcher rebuild import? Должен ли веб-терминал/консоль закрыться? Я пробовал это сделать, но файл import.yml, похоже, не сохраняется. Он возвращается к своему состоянию по умолчанию.

Также, не могли бы вы прояснить, нужно ли мне выполнять необязательный шаг 2 в моей настройке?

Заранее большое спасибо.

P.S.: Я готов заплатить кому-то за выполнение этой работы, но мой бюджет ограничен суммой в 200 долларов.

Возможно, вам стоит разместить это в Marketplace.

1 лайк