我有一个数据库,由于一些问题,我需要将一些表从 MyISAM 转换为 InnoDB。
我基本上是这样做的:
set sql_log_bin = 0;
set sql_mode = 'STRICT_ALL_TABLES';
ALTER TABLE `table1` ENGINE = INNODB;
ALTER TABLE `table2` ENGINE = INNODB;
ALTER TABLE `table3` ENGINE = INNODB;
ALTER TABLE `table4` ENGINE = INNODB;
ALTER TABLE `table5` ENGINE = INNODB;
ALTER TABLE `table6` ENGINE = INNODB;
Run Code Online (Sandbox Code Playgroud)
它工作正常,但据我所知,我现在应该重新配置 my.cnf 然后重新启动 mysql 服务器,对吗?
如果服务器同时包含 MyISAM 和 InnoDB 表,我应该如何调整 my.cnf 文件?
在 MySQL 5.6.7 之前,官方 RPM附带这些文件:
/usr/share/mysql/my-innodb-heavy-4G.cnf
/usr/share/mysql/my-medium.cnf
/usr/share/mysql/my-huge.cnf
/usr/share/mysql/my-large.cnf
/usr/share/mysql/my-small.cnf
Run Code Online (Sandbox Code Playgroud)
在5.6.8中,这些文件都没有了,只剩下一个:
/usr/share/mysql/my-default.cnf
Run Code Online (Sandbox Code Playgroud)
我不是 MySQL 调优专家,过去总是以my-innodb-heavy-4G.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
Run Code Online (Sandbox Code Playgroud)
调整这个变量是大多数优化的关键,还是在安装新服务器时我应该调整其他相关参数?
在这种情况下,我在哪里可以找到等效的文件,该文件将包含仅 InnoDB 的 4GB RAM 专用 MySQL 服务器的合理默认值?
早上好,
我目前面临一个问题,即 CPU 使用率一直上升,直到服务器崩溃。
我已经尝试了在这个论坛和 Percona 上提出的多个最佳实践,已经重新安装了两次服务器。似乎没有任何效果。
该应用程序是一个小脚本,它以非常密集的方式对范围索引执行 SELECT、对主键执行更新以及对 UNIQUE 键执行批量插入。
99.9% 的查询在单个 InnoDB 表上运行。
以下是 mysqltuner.pl 输出(根本没有帮助我):
[--] Reads / Writes: 12% / 88%
[--] Total buffers: 4.2G global + 5.0M per thread (100 max threads)
[OK] Maximum possible memory usage: 4.7G (59% of installed RAM)
[OK] Slow queries: 0% (1/1M)
[OK] Highest usage of available connections: 42% (42/100)
[OK] Key buffer size / total MyISAM indexes: 128.0M/29.3M
[!!] Query cache is disabled
[OK] Sorts requiring temporary tables: 0% …
我刚刚在干净的 Snow Leopard MacBook 上安装了 MySQL Server 和 MySQL Workbench。我将 Workbench 与服务器连接起来,并能够从 Workbench 内启动 MySQL 服务器。我进入 MySQL Workbench 的管理菜单,它告诉我没有/etc/my.cnf
. 如果我单击Workbench 左侧的Option File,它会告诉我,它会my.cnf
在点击Apply
.
现在我看到了很多配置的可能性。有相关文件吗?我能找到的最好的是这个MySQL-Dev-Page,但它没有多大帮助。
更好的是一个解释性的默认文件,我可以调整它,因为我不是 MySQL 的专家,我只想将 python sqlalchemy 和 django 与 MySQL 服务器一起用作本地主机。
每一个提示都值得赞赏。
有谁知道用于 cnf 配置管理的任何好工具?通常情况下,我有一组具有非常相似配置的机器,除了一些差异(例如服务器 ID 或缓冲池以匹配其特定硬件)。
我正在寻找可以设置通用模板的东西,告诉它我想从该模板为该机器生成一些配置,让它提示我需要填写的变量并为我写出 .cnfs .
我在https://serverfault.com/questions/353888/mysql-full-text-search-cause-high-usage-cpu 上提出了一个问题一些用户建议在这里提问。
我们建立了一个新闻网站。每天我们都会从web api输入数以万计的数据。
为了提供精准的搜索服务,我们的表使用了MyISAM,建立了全文索引(标题、内容、日期)。我们的网站正在测试 Godaddy VDS,内存为 2GB,空间为 30GB(无交换,因为 VDS 不允许构建交换)。CPU是Intel(R) Xeon(R) CPU L5609 @ 1.87GHz
运行一个 ./mysqltuner.pl
我们得到一些结果:
-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.5.20
[OK] Operating on 32-bit architecture with less than 2GB RAM
-------- Storage Engine Statistics -------------------------------------------
[--] Status: -Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables: 396M (Tables: 39)
[--] Data in InnoDB tables: 208K (Tables: 8)
[!!] …
Run Code Online (Sandbox Code Playgroud) 我想运行一个半同步复制设置,为了简单起见,当从站提升为主站时,我不想安装和卸载插件。所以我想知道如果我将体验任何问题都安装并启用主机和从机插件(见这里)
看起来在安装第二个插件后,两个变量rpl_semi_sync_master_enabled
和rpl_semi_sync_slave_enabled
都被重置为关闭(非默认值)。当我将这些行包含在my.cnf
:
loose-rpl_semi_sync_master_enabled = 1
loose-rpl_semi_sync_slave_enabled = 1
Run Code Online (Sandbox Code Playgroud)
...并重新启动 MySQL,两个插件都已加载并启用。
这会给我带来任何问题吗?
这应该很容易,但是当我放上这些行时:
log_slow_queries = 1
long_query_time = 1
log-slow-queries = /var/log/mysql/slow_query.log
log_queries_not_using_indexes
Run Code Online (Sandbox Code Playgroud)
在 中[mysqld]
,MariaDB 无法重新启动。
我查看了文档,但无法弄清楚我的配置有什么问题。
另外,我已将文件权限设置为 /var/log/mysql/slow_query.log
# ls -al /var/log/mysql/slow_query.log
-rw-rw-r-- 1 mysql mysql 744682 Dec 4 23:46 /var/log/mysql/slow_query.log
Run Code Online (Sandbox Code Playgroud)
但是,我可以在命令行中设置参数:
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow_query.log';
SET GLOBAL LONG_QUERY_TIME = 1;
SET GLOBAL slow_query_log = 'ON';
Run Code Online (Sandbox Code Playgroud)
并看到它们已设置:
+---------------------+--------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+---------------------+--------------------------------------------------------------------------------------------------------------+
| log_slow_filter | admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk |
| log_slow_rate_limit | 1 |
| log_slow_verbosity | |
| slow_launch_time | 2 |
| slow_query_log | …
Run Code Online (Sandbox Code Playgroud) 我使用 MySQL 5.5.23-1~dotdeb.0 (Debian),这里是 my.cnf 的相关部分
default-storage-engine = innodb
innodb_buffer_pool_size = 3G
innodb_log_file_size = 256M
innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 4M
innodb_additional_mem_pool_size = 20M
Run Code Online (Sandbox Code Playgroud)
问题是,无论我为 innodb_buffer_pool_size 选择什么值(我也尝试过 4G 和 8G 以及 8000M)。我得到以下内容mysql> SHOW global VARIABLES;
| innodb_buffer_pool_size | 134217728
Run Code Online (Sandbox Code Playgroud)
调优入门脚本的结果:
INNODB STATUS
Current InnoDB index space = 621 M
Current InnoDB data space = 3.82 G
Current InnoDB buffer pool free = 0 %
Current innodb_buffer_pool_size = 128 M
Depending …
Run Code Online (Sandbox Code Playgroud) 我想要一个不同于全局 sql_mode 的默认会话 sql_mode。
我可以手动设置,但我想自动设置。
我以为我可以将它添加到.my.cnf
,但这不起作用。我尝试将它添加到 中的[mysql]
组中.my.cnf
,它没有抛出错误。
然而,当我连接会话 sql_mode 时,会话仍然继承全局 sql_mode。
我正在使用 MySQL 5.5.16。