Mysql将当前configuration导出到文件

我们失去了我们的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_safe开始设置的选项mysqld

选项3:直接询问服务器

 mysqld --help --verbose 

在'mysqld –help –verbose'显示的底部,你会看到当前的设置mysqld从my.cnf加载或默认。

这些说明是针对centos 7.1上的stock mariadb。

下面介绍如何将机器的当前设置备份或复制到现在或将来的新安装。

在我们想要复制设置的机器上,我们可以运行:

 /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。

indentend行只出现在第二个文件中,这里是/a/mysql_default_settings.txt。

现在我们知道所有设置,除了在启动mysqld的命令行中设置的一些设置外。 这些设置可能来自/etc/my.cnf或/etc/my.cnf.d/*文件,或者自定义脚本或别名等。无论如何,我们可以使用以下命令查看它们:

 ps -ef | grep mysqld 

现在我们知道在新安装中必须更改的很less的设置才能将其configuration为旧的。


这里遵循一些其他的细节。

在centos 7.1上,以下命令显示当前所有设置,除了在启动mysqld的命令行中设置的一些设置:

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

总的来说,它显示:

在第一部分中,当我们启动“mysqld”之后,我们可以用作第一个参数的设置;

第二部分是编译时设置的设置;

第三部分是当前的设置。

即使输出的最后一行显示:要查看正在运行的MySQL服务器正在使用的值,请input:

  mysqladmin variables -uroot -p 

即使我们在/etc/my.cnf中更改它,并重新启动mysql,该命令也不会显示fe,bind-address。

另外下面的命令显示了许多设置,但不是“bind-address”:

 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,这不起作用。

这将输出一个干净的variables日志,注释掉,准备导入到my.cnf中。

原始来源: http : //www.askapache.com/mysql/view-mysql-variables-my-cnf.html