nvm управляют не доступный в сценарии удара

Хорошо, не действительно знакомый с тем программным обеспечением, но:

  • Это - сценарий оболочки, таким образом, тривиальный (в теории) для редактирования. Конечно, это - ~2200 сценариев оболочки строки.
  • Я думаю - таблицы блокировки прибывают из - выбирают, который указан (от очень быстрого взгляда) наверху parse_configuration функция. Вы могли добавить --skip-lock-tables там.
  • Это использует mysql утилиты, таким образом, можно также смочь включить его Ваш .my.cnf нормальным способом.

В целом:

  • Вы не используете InnoDB, но используете MyISAM, таким образом, у Вас нет транзакций. Таким образом, Вы не можете использовать --single-transaction.
  • Таким образом необходимо заблокировать для обеспечения непротиворечивости. Даже с блокировкой, не гарантируемый (просто более вероятно). Но это так же, поскольку Вам гарантируют в нормальном функционировании. Рассмотрите InnoDB, серьезно (но прочитайте документы, и исследование сначала, и тест, чтобы удостовериться, что он не повредит Ваше приложение).
  • При отключении блокировки Вы можете иметь:
    1. Запустите резервное копирование
    2. Резервная таблица A.
    3. Удалите запись из A и также дочернюю запись в B.
    4. Резервная таблица B.
    5. Ваше резервное копирование теперь содержит запись в, который указывает на несуществующую запись в B. Другими словами, не последовательный.
  • Существуют more-widely-used решения для резервного копирования MySQL. Возможно, необходимо переключиться на одного из них. Его более легкое для нахождения справки с программным обеспечением, которое использует больше людей (и это также имеет тенденцию быть лучше протестированным).
  • Можно думать, что у Вас есть резервное копирование, но Вы не делаете, пока Вы на самом деле не сделали успешное восстановление, предпочтительно от чистого металла (недавно отформатированный жесткий диск). Идеально, Вы обычно делаете это и предпочтительно автоматизируете его. Это не характерно для MySQL, он относится ко всем резервным копиям.

Существует решение (помимо переключения на InnoDB): можно выполнить резервное копирование на ведомом сервере. Не имеет значения при блокировке всех таблиц, или SLAVE STOP SQL_THREAD во время резервного копирования, потому что это не будет иметь значения для основного устройства. Это - решение без времени простоя. У Вас должен быть этот сервер так или иначе как теплое / горячее резервирование в случае, если основное устройство перестало работать.

Существует другое решение, которое минимизирует время простоя: Поместите базу данных по объему LVM, сделайте a FLUSH TABLES WITH READ LOCK, возьмите снимок LVM и затем выпустите свою блокировку чтения (разъединение сделает это). Можно затем сделать резервное копирование от снимка. Это, "Я не могу позволить себе другую машину" решение.

41
12.02.2015, 19:25
4 ответа

Команда NVM - это функция оболочки, объявленной в ~ / .NVM / NVM.SH .

Вы можете истощать любой из следующих скриптов в начале ваших для создания NVM () :

. ~/.nvm/nvm.sh
. ~/.profile
. ~/.bashrc
. $(brew --prefix nvm)/nvm.sh  # if installed via Brew
74
27.01.2020, 19:35

Если вы установили его через brew в OSX, то вы можете загрузить полученный из brew скрипт в скрипт env, указав его как подробные сведения об установке.

У меня есть это в проектах для их начальной загрузки:

brew install nvm
. $(brew --prefix nvm)/nvm.sh
nvm install
...
2
27.01.2020, 19:35

Небольшая ремарка поверх ответа, предоставленного @webKnjaZ: мне пришлось создать функцию shell для каждой команды, чтобы она работала в моем сценарии bash. Что-то вроде этого:

. ~/.nvm/nvm.sh --version
. ~/.nvm/nvm.sh install 4.4.5
1
27.01.2020, 19:35

Из всех ответов здесь и в эта связанная с nvm проблема я создал этот скрипт (суть ), которую вы можете скопировать или клонировать (документация встроена):

# shellcheck shell=sh
# https://gist.github.com/karfau/dcf98c6eefc2f2132c160f5c14d2112f

# needs to be sourced as part of your script
# 1. tries to configure nvm and run `nvm install`
# 2. checks if the node version is correct based on./.nvmrc (`v` prefix not supported)
# if both doesn't work, exits with code 1 and some helpful messages

# https://unix.stackexchange.com/a/184512/194420
# https://github.com/nvm-sh/nvm/issues/1290
if [ -f ~/.nvm/nvm.sh ]; then
  echo 'sourcing nvm from ~/.nvm'
 . ~/.nvm/nvm.sh
elif command -v brew; then
  # https://docs.brew.sh/Manpage#--prefix-formula
  BREW_PREFIX=$(brew --prefix nvm)
  if [ -f "$BREW_PREFIX/nvm.sh" ]; then
    echo "sourcing nvm from brew ($BREW_PREFIX)"
   . $BREW_PREFIX/nvm.sh
  fi
fi

if command -v nvm ; then
  nvm i
else
  echo "WARN: not able to configure nvm"
fi

NODE_VERSION="v$(cat.nvmrc)"
which node
ACTIVE_VERSION=$(node --version)
GLOBAL_NPM=$(which npm || echo "not found on PATH")
#.nvmrc can contain only major or major.minor or full version
# so we replace active version with node version and anything afterwards
# if something is left, it's not a match
if [ "${ACTIVE_VERSION%%$NODE_VERSION*}" ] || [ ! -e "$GLOBAL_NPM" ]; then
  echo "expected node '$NODE_VERSION' and npm on path"
  echo "but was '$ACTIVE_VERSION' and npm:'$GLOBAL_NPM'"
  exit 1
fi

Надеюсь, это поможет Отзывы по сути или здесь приветствуются.

0
03.12.2020, 11:58

Теги

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