mr1*_*086 8 mysql ubuntu ubuntu-10.04 ubuntu-11.10 my.cnf
我正在尝试修改我的生产服务器上的 my.cnf 值,但更改在 之后没有生效sudo service mysql restart,使用我的开发服务器上的 my.cnf(下载并替换原件)的精确副本,所做的更改是可见的从 mysql 命令行中的显示变量。
my.cnf 位于 /etc/mysql/my.cnf
sudo find / -name my.cnf
/etc/mysql/my.cnf
Run Code Online (Sandbox Code Playgroud)
所以整个系统上只存在一个文件..
生产是 ubuntu 10.04 LTS 64bit
开发是 ubuntu 11.10 32bit
Mysql 版本分别为 5.1.61 和 5.1.62。
更新2:
运行 mysql stop 和 mysql status 后返回 mysql stop/waiting,如果我运行 top -b | grep mysql
27652 root 20 0 4096 424 420 S 0 0.0 0:00.01 mysqld_safe
27769 mysql 20 0 392m 57m 7236 S 0 1.5 119116,08 mysqld
Run Code Online (Sandbox Code Playgroud)
看起来它仍在运行,时间对我来说不太好,但我现在担心如果我杀死这些/这个进程,我将无法再次运行 mysql,并且正在生产这很糟糕:S。
我意识到这可能不是可以回答的问题,而是杀死这些进程然后运行 service mysql start,这会让 mysql 再次运行吗?- 另外,上面的过程是否有正常的数字?
更新:
这是否意味着它从 my.cnf 获取设置...但不使用它?所以现在很迷茫。
最后它得到了 innodb_buffer.. 设置。
mysqld --print-defaults
mysqld would have been started with the following arguments:
--user=mysql --socket=/var/run/mysqld/mysqld.sock --port=3306 --basedir=/usr --datadir=/var/lib/mysql --tmpdir=/tmp --skip-external-locking --bind-address=127.0.0.1 --key_buffer=16M --max_allowed_packet=16M --thread_stack=192K --thread_cache_size=8 --myisam-recover=BACKUP --query_cache_limit=1M --query_cache_size=16M --log_error=/var/log/mysql/error.log --expire_logs_days=9 --max_binlog_size=100M --innodb_file_per_table=1 --innodb_buffer_pool_size=500M --innodb_buffer_pool_size=500M --user=mysql --socket=/var/run/mysqld/mysqld.sock --port=3306 --basedir=/usr --datadir=/var/lib/mysql --tmpdir=/tmp --skip-external-locking --bind-address=127.0.0.1 --key_buffer=16M --max_allowed_packet=16M --thread_stack=192K --thread_cache_size=8 --myisam-recover=BACKUP --query_cache_limit=1M --query_cache_size=16M --log_error=/var/log/mysql/error.log --expire_logs_days=9 --max_binlog_size=100M --innodb_file_per_table=1 --innodb_buffer_pool_size=500M --innodb_buffer_pool_size=500M
Run Code Online (Sandbox Code Playgroud)
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
user = mysql
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
bind-address = 127.0.0.1
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
myisam-recover = BACKUP
query_cache_limit = 1M
query_cache_size = 16M
log_error = /var/log/mysql/error.log
expire_logs_days = 10
max_binlog_size = 100M
innodb_file_per_table = 1
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
[isamchk]
key_buffer = 16M
!includedir /etc/mysql/conf.d/
Run Code Online (Sandbox Code Playgroud)
小智 10
如果你想在 linux 系统上知道你的 mysqld 是否真的在读取这个特定的文件,我会推荐 strace:
strace -e trace=open mysqld
Run Code Online (Sandbox Code Playgroud)
这将向您显示启动期间 mysqld 进程打开的所有文件。在我们的例子中:
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib64/libpthread.so.0", O_RDONLY) = 3
open("/lib64/libaio.so.1", O_RDONLY) = 3
open("/lib64/libm.so.6", O_RDONLY) = 3
open("/lib64/librt.so.1", O_RDONLY) = 3
open("/lib64/libcrypt.so.1", O_RDONLY) = 3
open("/lib64/libdl.so.2", O_RDONLY) = 3
open("/usr/lib64/libssl.so.10", O_RDONLY) = 3
open("/lib64/libcrypto.so.10", O_RDONLY) = 3
open("/lib64/libc.so.6", O_RDONLY) = 3
open("/usr/lib64/libfreebl3.so", O_RDONLY) = 3
open("/lib64/libgssapi_krb5.so.2", O_RDONLY) = 3
open("/lib64/libkrb5.so.3", O_RDONLY) = 3
open("/lib64/libcom_err.so.2", O_RDONLY) = 3
open("/lib64/libk5crypto.so.3", O_RDONLY) = 3
open("/lib64/libz.so.1", O_RDONLY) = 3
open("/lib64/libkrb5support.so.0", O_RDONLY) = 3
open("/lib64/libkeyutils.so.1", O_RDONLY) = 3
open("/lib64/libresolv.so.2", O_RDONLY) = 3
open("/usr/lib64/libselinux.so.1", O_RDONLY) = 3
open("/proc/filesystems", O_RDONLY) = 3
open("/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 3
open("/sys/devices/system/cpu", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
open("/etc/my.cnf", O_RDONLY) = 3
open("/etc/localtime", O_RDONLY) = 3
open("/dev/urandom", O_RDONLY|O_NOCTTY|O_NONBLOCK) = 3
open("/proc/sys/crypto/fips_enabled", O_RDONLY) = 3
Run Code Online (Sandbox Code Playgroud)
就我而言,事实证明,即使在 my.cnf 上定义了属性(query_cache_size),它也被忽略了。这发生在升级到 Percona-XtraDB-Cluster-server-55.x86_64 1:5.5.34-25.9.607.rhel6 之后。
最后我临时通过在命令行指定来解决:
/etc/init.d/mysql start --query_cache_size=0
Run Code Online (Sandbox Code Playgroud)
在 Percona 集群(基于 Galera)的情况下,您必须使用引导程序启动第一个节点:/etc/init.d/mysql bootstrap-pxc --query_cache_size=0
有什么有趣的/etc/mysql/conf.d/吗?my.cnf然后,您使用的 Mysql 版本应该/etc/mysql/conf.d/按照配置文件名的顺序进行解析。在以前的版本中,顺序可能有些不确定。
链中最后设置的任何值都应该获胜,这可能解释了为什么您的更改my.cnf没有更新服务器;如果以后的文件覆盖了您的设置。
如果没有任何内容,请/etc/mysql/conf.d/创建一个仅包含这两行的名为innodb.cnf(不会解析任何不以 结尾的文件)的文件,.cnf并查看您的 innodb 设置是否在重新启动后更新。
[mysqld]
innodb_buffer_pool_size = 500M
Run Code Online (Sandbox Code Playgroud)
[mysqld]
innodb_buffer_pool_size = 500M
Run Code Online (Sandbox Code Playgroud)
和详细信息在 MySQL Docs下查看Table 4.2
可以
!include在选项文件中使用指令来包含其他选项文件并!includedir在特定目录中搜索选项文件........ MySQL 不保证读取目录中选项文件的顺序...
在 Unix 操作系统上使用 !includedir 指令查找和包含的任何文件都必须具有以 .includedir 结尾的文件名
.cnf。在 Windows 上,此指令检查带有.ini或.cnf扩展名的文件。
| 归档时间: |
|
| 查看次数: |
16318 次 |
| 最近记录: |