Вопрос: Mysql Экспортировать текущую конфигурацию в файл


Мы потеряли файл my.cnf и задались вопросом, есть ли способ экспортировать копию из текущего исполняемого экземпляра mysql.

Благодаря!


8
2017-08-12 20:05


Источник




Ответы:


Три (3) варианта

ВАРИАНТ 1: изнутри клиента mysql

mysql -uroot -A -e"SHOW GLOBAL VARIABLES;" > MySQLCurrentSettings.txt

Это запишет все параметры в текстовый файл.

ВАРИАНТ 2: из командной строки Linux

ps -ef | grep mysqld | grep -v grep

Здесь будут показаны параметры mysqld, начиная с набора из mysqld_safe

ВАРИАНТ 3: спросите сервер напрямую

mysqld --help --verbose

В нижней части экрана «mysqld --help --verbose» вы увидите текущие настройки mysqld, загруженные из my.cnf или по умолчанию.


14
2017-08-12 20:12



-1 Извините, но это не имеет смысла. Почему вы сбрасываете SHOW VARIABLES в текстовый файл, затем сглаживаете список процессов и ничего не делаете с его результатами, а затем говорите, что прочитайте флаг справки mysqld? - Coops
@Coops - Это три разные вещи. Первый захватывает SHOW VARIABLES в текстовом файле. Второй способ позволяет узнать, какие параметры заданы /etc/init.d/mysql при запуске mysql. Третий позволяет увидеть в нижней половине дисплея то, с чем работает mysqld. Это зависит от того, как выполнить работу над настройкой этих параметров в файле /etc/my.cnf с этих дисплеев. Должен ли я написать что-то для автоматизации и восстановления /etc/my.cnf? - RolandoMySQLDBA
Ваша начальная строка «сделайте все следующие», предлагая вам дать пошаговое руководство для ответа на вопрос. Вы также не объясняете, что делает каждый шаг, или как он отвечает на вопрос, добавляя к путанице! :-) - Coops
Извините за любую путаницу, вызванную тем, как я написал свой ответ изначально. - RolandoMySQLDBA
Хотя восстановление my.cnf было бы лучшим (я надеялся, что mysql может это сделать), это действительно отличная информация для нас, чтобы восстановиться. Я пробовал искать эту информацию, но все, что я мог найти, это статьи о поддержке базы данных. Благодаря! - samspot


Эти инструкции предназначены для инвентаря mariadb on centos 7.1.

Ниже описано, как выполнить резервное копирование или репликацию текущих настроек машины на новую установку, настоящую или будущую.

На машине, с которой мы хотим скопировать настройки, мы можем запустить:

/usr/libexec/mysqld --help --verbose > mysql_current_settings.txt

На другой машине мы можем установить mariadb-server и запустить:

/usr/libexec/mysqld --help --verbose > mysql_default_settings.txt

Затем мы помещаем оба файла в один каталог, который в этом примере является «/ a /».

Затем мы запускаем:

comm -3 <(sort /a/mysql_current_settings.txt) <(sort /a/mysql_default_settings.txt)

Если выход отсутствует, то два файла идентичны. Это означает, что все настройки на обеих машинах находятся по умолчанию.

Если есть какой-то вывод, тогда некоторые строки не будут отступать, а некоторые строки будут отступать.

Неизогнутые строки присутствуют только в первом файле, который находится здесь /a/mysql_current_settings.txt.

Строки с отступами присутствуют только во втором файле, который находится здесь /a/mysql_default_settings.txt.

Теперь мы знаем все настройки, за исключением некоторых параметров, которые установлены в командной строке, которая запустила mysqld. Эти настройки могут быть получены из файлов /etc/my.cnf или /etc/my.cnf.d/* или пользовательского сценария или псевдонима и т. Д. В любом случае мы можем увидеть их с помощью следующей команды:

ps -ef | grep mysqld

Теперь мы знаем очень немногие настройки, которые мы должны изменить на новой установке, чтобы настроить ее как старую.


Ниже приведены некоторые другие подробности.

На centos 7.1 следующая команда показывает все текущие настройки, за исключением некоторых параметров, которые установлены в командной строке, которая запустила mysqld:

/usr/libexec/mysqld --help --verbose

В целом, это показывает:

в первой части - параметры, которые мы можем использовать в качестве первого параметра после «mysqld» при его запуске;

во второй части - настройки, установленные во время компиляции;

в третьей части - текущие настройки.

Даже если последняя строка его вывода говорит:     чтобы узнать, какие значения использует используемый сервер MySQL, введите:

    mysqladmin variables -uroot -p

эта команда не показывает, т. е. связывание, даже если мы изменим его в /etc/my.cnf и перезапустим mysql.

Также следующая команда показывает множество настроек, но не «bind-address»:

mysql -uroot -p -e"SHOW VARIABLES;"

Обратите внимание, что на centos 7.1 mysqld не находится в $ PATH.


3
2017-10-28 11:47





Вот мой любимый способ генерации текущего my.cnf:

{ echo -e "# MYSQL VARIABLES {{{1\n##\n# MYSQL `mysql -V|sed 's,^.*\(V.*\)\, for.*,\1,'` - By: `logname`@`hostname -f` on `date +%c`\n##"; for l in {a..z}; do echo '#'; mysql -NBe "SHOW GLOBAL VARIABLES LIKE '${l}%'" | sed 's,\t,^= ,' | column -ts^ | tr "\n" '@' | eval $(echo "sed '" "s,@\("{a..u}{a..z}"\),\n\n\1,;" "'") | eval $(echo "sed '" "s,@\(innodb_"{a..z}{a..z}"\),\n\n\1,;" "'") | tr '@' "\n" | sed 's,^,# ,g'; done; echo -e "#\n##\n# MYSQL VARIABLES }}}1"; } | tee ~/mysql-variables.log

Однако это не работает надежно для Mac OS X.

Это выведет чистый журнал переменных, закомментированный, готовый для импорта в ваш my.cnf.

Исходный источник: http://www.askapache.com/mysql/view-mysql-variables-my-cnf.html


1
2017-07-20 17:28



Некоторые примечания: 1. bsdmainutils необходимо установить. 2. Предупреждение: он пишет версию клиента mysql, а не сервера. - gadelat