我需要更改具有 164M 行的 MySQL innodb 表中的列长度。这是我要运行的脚本: ALTER TABLE SESSION_DECISION CHANGE COLUMN NAME NAME VARCHAR(255);
当我尝试运行更改查询时,数据库搅动了一个小时并且没有完成任务。访问系统的用户(需要写入表的用户)被锁定。这是一个实时系统,因此我最终控制了请求以允许用户访问该站点。
(这是在半夜——使用量很少,但我感到紧张)。
我使用的是 MySQL 5.0.77。
关于如何以最短的停机时间更换色谱柱,您有什么建议吗?
我经常看到 Apache 被用作 Web 服务器,并且还使用 ruby on rails、php 等。总而言之,大多数大型社交网络公司都使用 unix 操作系统。
因为我还想开发一个小应用程序(不是那么大量的用户呵呵)我也想知道最好的方法以及我需要寻找什么点来为这样的应用程序获得最好的 linux 发行版。
让我们以推特为例。为什么是推特?因为它在图形用户界面上很容易,但它需要每秒处理数千个查询,缓存它们等等。
所以,请有人告诉我在选择最佳 linux 发行版时我需要注意哪些方面。内核中是否也经常进行自定义?最后一个问题:Mysql -> MyISAM 还是 InnoDB ?
非常非常感谢你!
祝你今天过得愉快。
再见,安德烈
我正在考虑将一些表从 MyISAM 转换为我的 mysql 服务器中的 InnoDB。表肯定会从变化中受益,因为很多写请求来到这些表,同时也有相当多的读请求。
但是,它们通常与一些几乎没有任何写入的表连接在一起。将 MyISAM 和 InnoDB 表连接在一起时是否会降低性能,或者一切正常?
第二个问题:在夜间备份期间,我将数据从 InnoDB 表复制到 MyISAM 表以进行归档。在这些备份中,发生了很多写请求,但是几乎没有从这些存档表中读取。这些表是否也会从使用 InnoDB 中受益,还是只是浪费空间和 RAM?
我们正在切换到新的 RAID 阵列,需要将我们的 MySQL InnoDB 数据库复制到新的 RAID 阵列,同时最大限度地减少停机时间(50GB 数据库)。我知道在正在运行的 MySQL 数据库上使用 rsync 不会生成数据库的可用副本。但是,我可以通过在正在运行的数据库上使用 rsync,然后完全关闭 mysqld 并运行最终的 rsync 来获得精确的副本吗?在这种情况下是否有任何数据损坏的可能性,如果我确保 mysql 没有在运行最终 rsync 的情况下运行?
我正在为使用 InnoDB 的 MySQL 5.6 寻找 ext3 文件系统块大小的建议。
在 VMware ESXi 5 中运行 CentOS 5.4 VM,在 NetApp FibreChannel LUN(具有 4k 块大小)上运行 VMFS 5 数据存储。使用 O_DIRECT,innodb_flush_log_at_trx_commit = 2,14G 缓冲池,并且 db 执行 OLTP,偶尔会处理一些处理大量数据的大型查询。有些表有几 GB 或更多,有些则很小。表和 ibdata 文件在一个文件系统上,binlogs 和 ib_logfiles 在另一个文件系统上,因此它们可以具有不同的块大小。
我知道 InnoDB 使用 16k 块大小,这不是用户可配置的,所以我想知道是否值得将 ext3 块大小设置为匹配,而不是 4k 默认值。
谢谢!
检查日志文件后,我发现某些数据库存在错误。
2017-05-16 08:52:48 7fc0cb8abb00 InnoDB: Assertion failure in thread 140466025315072 in file ha_innodb.cc line 21990
InnoDB: We intentionally generate a memory trap.
InnoDB: Submit a detailed bug report to http://bugs.mysql.com.
InnoDB: If you get repeated assertion failures or crashes, even
InnoDB: immediately after the mysqld startup, there may be
InnoDB: corruption in the InnoDB tablespace. Please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
170516 8:52:48 [ERROR] mysqld got signal 6 ;
This could be because you hit a bug. …Run Code Online (Sandbox Code Playgroud) 我的专用服务器上的内存使用率大约为 25%(交换通常为 1%),负载大约为 2-5。
我的主机建议我从 2GB 的内存升级到 4GB,这样我就可以将 innodb_buffer 从默认的 16MB 增加到 2GB。我的 innodb 表大小是 2GB。
我的问题是,鉴于 ram 使用率为 25%,升级 ram 是否有意义?查询有时会挂起,所以我认为更大的 innodb_buffer 可以减少数据库的负载,只是不确定我是否真的需要先升级我的 ram。
假设我有两台服务器同时使用 InnoDB 在 MySQL 5.5 数据库上启动事务。两个事务都做同样的事情:读取一行,然后根据其内容更新该行。我想确保两个事务一个接一个地运行。也就是说,在第一个事务完成之前,不应允许第二个事务读取该行。理想情况下,这意味着SELECT第二个事务中的语句将等到第一个事务提交后,然后返回更新后的值。
这可能吗?如果没有,是否有比 MySQL 更适合此任务的数据库?
如果是这样,一个相关的问题:假设第一台服务器在交易过程中崩溃,所以没有COMMIT收到任何消息。我将如何设置超时后事务将自动回滚,以便第二个事务不会永远延迟?(更新:我已经把它作为一个单独的问题分开了。)
我们的专用服务器正在运行一个大型 Magento 商店,其中有一个大约 250MB 的 MySQL 数据库。
服务器规格被列为具有 5 个 Xeon 2Ghz 处理器(4MB 缓存)和 12GB 内存。
我原以为上述规范足以非常快速地运行 Magento,但是尽管该站点并不慢,但它确实没有应有的那么快。
当前 MySQL my.cnf 文件如下:
skip-innodb
ft_min_word_len=3
query_cache_limit = 4M
query_cache_size = 16M ## 32MB for every 1GB of RAM
query_cache_type = 1
max_user_connections = 50
max_connections = 50
interactive_timeout = 300
wait_timeout = 200
connect_timeout = 200
thread_cache_size = 32
key_buffer_size = 64M ## 128MB for every 1GB of RAM
join_buffer_size = 1M
max_connect_errors = 20
max_allowed_packet = 12M
table_cache = 1024 …Run Code Online (Sandbox Code Playgroud) 我想知道是否可以即时更改innodb_buffer_pool_size。
看起来缓冲池已在我的服务器上过度分配,现在正在交换。我已经在从服务器上更改了这个值,重新启动了 MySQL 守护进程,现在一切看起来都很好 - 但是我不能让主服务器脱机
我不确定是否至少可以刷新 inndb 缓冲区以释放一些内存?
# ps aux --sort -vsz | head -n2
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
mysql 2064 14.6 93.8 17369060 15328044 ? Sl Jul22 7096:48 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysql/mysql-error.log --pid-file=/var/lib/mysql/mysql.pid --socket=/var/lib/mysql/mysql.sock --port=3306
# free -m
total used free shared buffers cached
Mem: 15949 15786 163 0 4 104
-/+ buffers/cache: 15677 272
Swap: 4095 346 3749
Run Code Online (Sandbox Code Playgroud) 我有一台带有 2 个 SSD 的服务器。我正在运行 LAMP 安装并有一个 innoDB 数据库。
我的问题是:
1) innoDB 会自动使用两个 SSD 还是只使用一个?2) 如果我使用 2 个 HDD 而不是 2 个 SSD,我会导致显着的性能下降吗?
谢谢