Articles of mysql

MySQL可以在不同的物理存储设备上使用多个数据目录

我正在使用128Gb SSD上的数据目录运行MySQL。 我正在处理每周加载和处理的大数据集(〜20Gb),每个数据集都存储在一个单独的数据库中用于时间点比较。 把所有的数据放到一个单一的数据库中是不可行的,因为在这样的大型数据库上的性能已经成为一个问题。 但是,我无法一次在SSD上保存6个以上的数据集。 现在我每周都要手动将最旧的2Tb转盘转储到数据库中,为新的转换空间腾出空间。 但是,如果我需要一个“归档”数据库(半经常发生),我必须删除当前的(转储后),重新加载它,做我需要的,然后扭转结果。 有没有办法将MySQLconfiguration为使用多个数据目录,比如说一个在SSD上,另一个在2TB的旋转磁盘上,然后透明地“合并”它们? 如果我能做到这一点,那么归档不再意味着“完全移出数据库”,而是意味着“移到慢物理设备上”。 在旋转磁盘上执行查询所需的时间将less于完全转储,删除,加载,删除和重新加载两个整个数据库所需的时间,所以这是一个胜利。 我想使用像unionfs这样的东西,但我想不出一种方法来控制哪个数据库被存储在哪个物理驱动器上,因为它通过合并目录级别(从我所知道的)来工作,所以我仍然坚持使用多个目录。 任何帮助感谢,提前感谢

它是否可以在CephFS mount上的数据目录下运行mysql?

我们有一个使用Pacemaker + Corosync的DRBD上的MySQL的数据库集群,这非常棒。 我的问题是,是否有可能(以及是否有人成功)将CephFS驱动器挂载到/ var / lib / mysql并从那里运行MySQL。 优点是MySQL可以在任何集群节点上运行,而不会受到DRBD的2节点约束(或者更糟,DRBD上的DRBD的复杂性)。

为什么一个mysql查询,需要复制到tmp表,随机有时会在几秒钟内消耗100%的CPU?

我在我的PHP脚本中有一些疯狂的SQL查询,这很需要一些优化。 然而,问题不在于如何优化它们。 这些查询有很多“连接”和一些奇怪的“按顺序排列”,并且针对具有几万条logging的表进行。 lots_of_joins + crazy_order_by事物使他们需要“复制到tmp表”步骤。 现在奇怪的是,同样的查询有时会跑得快(不到一秒钟),有时需要几十年(几十秒)。 在这两种情况下,“解释”和configuration文件显示“复制到tmp表”步骤。 当查询花费时间时,99%的时间花在“复制到tmp表”阶段。 奇怪的是,在那个时候,mysql几乎消耗了100%的CPU。 所以,我知道tmp表有时会保存在内存中,有时会写入磁盘(取决于当前内存的可用性)。 因此,这完全可以解释为什么相同的查询有时可能很快,有时会花费很长时间。 但是,有两件事我不明白。 如果将临时表写入磁盘的瓶颈,这应该意味着在I / O上花费了大量的时间,但是在此期间的CPU负载平均值应该相对较低,肯定远远低于100%。 做这么多的I / O时,CPU如何忙? 我在my.cnf中增加了: max_heap_table_size = 1024M tmp_table_size = 1024M (我认为默认值是16M) 而且我真的不相信tmp表需要的是更多的内存。 据我所知,一个tmp表被写入到磁盘而不是内存:a-如果查询和表需要它,因为它们不满足某些标准b-如果它超过了max_heap_table_size和tmp_table_size之间的最小值 如果(a)是这种情况,那么它总会发生,而不是不时。 另一方面,(b)似乎不太可能,因为我已经增加了上述参数,没有任何明显的改变。 所需表格的大小在相同查询的出版物中应该不会有很大的变化(数据几乎相同)。 所以如果在增加内存大小之前偶尔会发生(这意味着所需的tmp表的大小只是在最大值附近),那么在这种剧烈增加之后,反常行为应该完全消失。 所以我的问题基本上是: 创build磁盘表真的是唯一的原因,可以使复制到tmp表的步骤需要很长时间? (或者,即使它是在记忆中完成,也可能需要很长时间?如果是这样,为什么?为什么随机?) 如果是,那么 怎么可能使用大量的CPU? 为什么即使不大于min(tmp_table_size,max_heap_table_size),tmp表也可以写入磁盘? 我真的不认为示例查询和configuration文件是必要的,但我可以发布,如果他们是。

apt-get清除mariadb留下的痕迹,停止mysql安装

我试图用我正在工作的网站来testing数据库问题。 我想看看mariadb和MySQL之间的切换是否解决了这个问题(不过不太可能)。 我认为这将是一个开发机器上的简单stream程(我没有任何数据担心/备份)。 我使用了这个命令 sudo apt-get purge mariadb* 然后我进入了 sudo apt-get install mysql-server 惊奇地收到这个可爱的错误。 invoke-rc.d: initscript mysql, action "start" failed. dpkg: error processing mysql-server-5.5 (–configure): subprocess installed post-installation script returned error exit status 1 dpkg: dependency problems prevent configuration of mysql-server: mysql-server depends on mysql-server-5.5; however: Package mysql-server-5.5 is not configured yet. dpkg: error processing […]

在centos中是否有debian-sys-maint等价物?

我使用debian-sys-maint作为实际的方式在我们的debian系统中执行数据库转储,如下所示: mysqldump -u debian-sys-maint -p`cat /etc/mysql/debian.cnf | grep password | tail -n 1 | cut -d' ' -f3` 我想知道在CentOS中是否有类似的用户,我只需要用户能够进行备份。 这样我就不必在每个系统上创build一个新用户。 这个有趣的部分是/etc/mysql/debian.cnf包含了debian-sys-maint的清除密码。

我无法连接到远程服务器上的MySQL

我正尝试使用mysql从Ubuntu服务器连接到RHEL6服务器。 我已经尝试telnet到服务器以及尝试连接到MySQL。 我已经试过评论绑定地址,但是也没有任何成功。 我没有得到一个错误代码或任何与telnet 。 一分钟左右就失败了 与MySQL,我得到这个错误代码ERROR 2003 (HY000): Can't connect to MySQL server on 'SERVER_IP' (111) 。 “SERVER_IP”当然是一个占位符,实际的错误会给出实际的IP。 我已经包含了我的my.cnf以及来自目标服务器的iptables。 在目标服务器上… my.cnf文件: [mysqld] bind-address=0.0.0.0 tmp_table_size=512M max_heap_table_size=512M sort_buffer_size=32M read_buffer_size=128K read_rnd_buffer_size=256K table_cache=2048 key_buffer_size=512M thread_cache_size=50 query_cache_type=1 query_cache_size=256M query_cache_limit=24M #query_alloc_block_size=128 #query_cache_min_res_unit=128 innodb_log_buffer_size=16M innodb_flush_log_at_trx_commit=2 innodb_file_per_table innodb_log_files_in_group=2 innodb_buffer_pool_size=32G innodb_log_file_size=512M innodb_additional_mem_pool_size=20M join_buffer_size=128K max_allowed_packet=100M max_connections=256 wait_timeout=28800 interactive_timeout=3600 # modify isolation method for faster […]

MySQL内存使用情况 – 定期需要运行FLUSH TABLES,或者打开大页面时内存使用量不断增加

在将我们的内存+物理内核丰富的数据库服务器切换到大页面之后,我们发现了一个小问题。 内存使用几乎看起来像是有某种内存泄漏。 但运行FLUSH TABLES清除大约10G内存(取决于当然我们运行的时间,以及我们等待的时间)。 附上的是一个显示这种内存使用情况的图表。 是什么原因导致我们每隔两天强制刷新表? 有关附表的说明: a)图表一开始就很好的平面内存使用情况是当我们运行(Oracle)MySQL 5.6时没有大页面。 b)10-11之间的内存使用倾向是当我们运行Percona 5.6的大页面时。 在11月底,我们从Percona切换到Oracle MySQL 5.6(但决定留下大页面)。 c)12-14.5之间的内存使用倾斜是我们回到(Oracle)MySQL 5.6启用了大页面的时候。 我们认为这种增加的内存使用是由于Percona内存泄漏造成的。 这就是为什么我们切换回(Oracle)MySQL 5.6。 保持大页面。 d)14.5左右的内存使用率下降是我们第一次尝试运行FLUSH TABLES(此时还在运行Oracle MySQL 5.6,不重启,只是做一个简单的FLUSH TABLES)。 经过这种来回切换,我们已经知道,原因不是percona 5.6,而是大页面。 所以,总结一下: 什么是迫使我们每隔2天运行一次FLUSH TABLES,以防止大页面启用内存不足? 我知道我们可以在非高峰时间安排一个FLUSH TABLES,但是想要正确地解决这个问题。 谢谢!

Zabbix:如何configuration一个触发器来检查过去10分钟内某个特定值是否已经改变?

我已经被赋予了监视某个MySQL服务器数据库中特定值的任务,如果在最后10分钟内没有更改该值,我需要发出通知。 我已经添加到UserParameter_mysql.conf下面一行: UserParameter=mysql.query, echo "select id from resolved_clicks order by id desc limit 1" | mysql -N -u zabbix -pPASSWORD aggregator 当从Zabbix服务器运行检查时,它会正确返回值: [root@zabbix ~]# zabbix_get -s IP -k mysql.query 7957178672 [root@zabbix ~]# 下一步是创build一个项目,我已经这样做了,现在我正在尝试configuration触发器。 如果该值在最近10分钟内没有更新,触发器应该会发出通知。 如何configuration触发器来反映这种情况? 谢谢! 编辑#1:这是我刚刚创build的触发器的最新数据: 我的问题是: 1. What's the meaning of change? 2. How can I know from looking on the Change row […]

减lessMyISAM表的大小

我有一个MyISAM表,目前包含约54万条logging,大小为20 GB。 这个数据库devise时做出的select不当。 我不是数据库专业人士,但是由于这张表经常被写入,而且很less被查询,所以看起来InnoDB将是一个更好的select。 问题是这张表几乎总是可以写入的。 其中一个字段是时间戳字段。 logging回溯5年 – 我只需要保留过去6个月。 我已经尝试了一些删除操作,大约需要20分钟时间来删除200,000行,在此期间表被locking,无法写入。 有没有人有如何减less这个表的大小,而不被locking几个小时的build议? 有没有更快的方法来删除不需要的行? 我从来没有将MyISAM表转换成InnoDB表。 这是一个漫长的过程?

AWS MySQL错误2026(HY000):SSL连接错误:

我试图用OSX El Captain上的terminal连接到我的AWS RDS MySQL实例,但是我一直得到这个错误: ERROR 2026 (HY000): SSL connection error: error:00000001:lib(0):func(0):reason(1) 这是一个新鲜的OSX安装,我用brew来安装mysql以及openssl,我可以连接到本地服务器。 另外它似乎MySQL的工作台完美的工作。 我的Ubuntu机器也通过terminal连接到RDS实例。