我正在使用 FreeBSD 9.2 服务器,并已运行mysqltuner.pl
以检查 MySQL 的内存和缓存需求。现在我需要my.cnf
向 FreeBSD 添加一个文件,以便它使用该文件而不是该auto cnf
文件。
我可以通过my-default.cnf
以下方式复制:
cp /usr/local/share/mysql/my-default.cnf /usr/local/etc/my.cnf
然后my.cnf
就会加载。
该my-default.cnf
文件显示以下值(将延续到my.cnf
):
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# *the above innodb line I can set*
# *But where do I get the values below?*
# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# socket = .....
我从哪里获取上述值?我知道它们一定来自当前 MySQL 服务器,但如何找到这些设置?
答案1
您可以获得当前的通过登录 mysql 并运行查询进行配置
SHOW VARIABLES;
要搜索特定配置,可以使用 SQL 语法。例如,要了解当前数据目录,请使用:
SHOW VARIABLES LIKE '%datadir%';
参考:MySQL 官方文档
答案2
通常你不必定义这些参数,因为它们很难编译到作为 FreeBSD 端口构建的 mysql 中。你必须更改负责数据库引擎调整的参数。
例如,这是我的配置
[client]
port = *****
[mysqld]
port = *****
skip-external-locking
key_buffer_size = 128M
max_allowed_packet = 1M
table_open_cache = 512
join_buffer_size = 2M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 32M
query_cache_limit = 2M
query_cache_size = 32M
thread_cache_size = 4
thread_concurrency = 8
event-scheduler = ON
server-id = 1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
我所做的只是更改 tcp 端口,以避免愚蠢的 h4xor 敲击标准 3306
答案3
我知道这篇文章已经有好几年了,自 FreeBSD 9.2(实际上是 2017 年 11 月的 11.1 版)以来,很多东西都发生了变化,你可以在
/usr/local/etc/mysql