Мы потеряли наш файл my.cnf и задавались вопросом, есть ли способ экспортировать копию из текущего запущенного экземпляра mysql.
Спасибо!
Три (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 или установленные по умолчанию.
Эти инструкции предназначены для стандартного mariadb на 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.
Также следующая команда показывает множество настроек, но не «адрес привязки»:
mysql -uroot -p -e"SHOW VARIABLES;"
Обратите внимание, что в centos 7.1 mysqld отсутствует в $ PATH.
Вот мой любимый способ создания текущего 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