Articles of mysql

为什么我的死锁不显示由SHOW引擎INNODB状态;?

我有一个由两个节点组成的MariaDB( 5.5.41 )群集被configuration为主从。 所有读取和写入都发送到同一个节点。 我几个星期以来一直在调查一些僵局问题。 定期,我的PHP应用程序返回Message: SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction. Message: SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction. 我以前可以运行SHOW ENGINE INNODB STATUS; 并会看到最后一个死锁,但由于某种原因,在一个小的无关configuration更改(将innodb_buffer_pool_instances从1更改为19)和重新启动两个节点之后,执行SHOW ENGINE INNODB STATUS; 不会出现任何僵局。 但是,如果我连接我的mysql客户端,并手动创build事务导致死锁,状态命令确实显示死锁。 我试图打开和closuresinnodb_print_all_deadlocks 。 mysql-error.log没有显示,除了我手动触发的死锁。 为什么我的PHP应用程序创build的死锁不再显示?

mysql复制,master_log_pos同步但表不更新

首先,我在Master上的复制configuration: server-id = 1 replicate-same-server-id = 0 auto-increment-increment = 1 auto-increment-offset = 1 log-bin = /var/log/mysql/mysql-bin.log expire_logs_days = 5 binlog_format = mixed max_connections=500 innodb_buffer_pool_size=5G tmpdir=/mnt/data_mysql/mysql_tmp slow_query_log_file = /var/log/mysql_log/slow_query.log slow_query_log = OFF long_query_time = 50 sync_binlog = 1 innodb_flush_method = O_DIRECT 在奴隶: server-id = 73 replicate-same-server-id = 0 replicate-do-db=rep_1624 auto-increment-increment = 1 auto-increment-offset = 1 #slave-skip-errors […]

在Ubuntu 16.04 LTS上全新安装MySQL 5.616-1〜exp1(Ubuntu)的性能问题

我最近开始了一个新的公司,我正在设置我的开发环境。 我们使用Ubuntu 16.04和MySQL 5.6 一切正常,直到我启动testing(使用mvn test )。 等待更多的棕褐色20分钟后,testing没有完成。 我和我的朋友评论说,他们告诉我说,对于他们来说,所有的testing结束通常不超过7分钟。 更重要的是,我们的CI机器(应该比我的笔记本电脑差),在大约6分钟内运行所有testing。 我甚至不知道需要多less时间,因为我尝试了不同的方法,并在15分钟后停止执行。 我完全迷失在这里 我开始认为这是有关缓冲区或类似的东西。 这是我的机器在mysqlworkbench上的服务器性能仪表板(注意性能高峰期,之后它继续每秒7次查询): 这是CI服务器的一个(注意每秒持续+500查询和22K InnoDB读取请求): 我的笔记本电脑是联想Z50与英特尔酷睿i7,8Gb内存和混合固态硬盘驱动器。 UPDATE 在对testing代码进行了一些修改之后,我发现如果仅在50%的testing中设置和拆卸数据集,则服务器会获得更好的结果(仍低于服务器上的结果)。 这可能表明缓冲区有问题? 编辑2 configuration没有,因为它是一个全新的安装。 现在/etc/mysql/my.cnf有以下(盲目尝试一些选项后): [mysqld] bind-address = 0.0.0.0 innodb_adaptive_flushing innodb_adaptive_hash_index innodb_checksums = off innodb_doublewrite innodb_use_native_aio 不知道我是否应该看看另一个configuration文件。

无法连接到在Fedora 25上运行的虚拟mySQL服务器

尝试在mySQL工作台上连接到我的虚拟MySQL服务器(VirtualBox Fedora 25)。 我正在使用root用户,是的,我知道这不是最安全的,但对于我的testing,这是好的。 网上有很多关于这方面的信息,但是我读的所有东西都不适合我。 在安装mySQL期间,我允许远程连接到root用户。 所以我已经授予root用户所有权限: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'my_password'; 之后,我冲洗了PRIVILEGES 我给我加了一条线 # vi /etc/my.cnf bind-address=0.0.0.0 我也开了一个端口 shell> iptables -A INPUT -m conntrack –ctstate NEW -m tcp -p tcp –dport 3306 -j ACCEPT shell> iptables-save 我正在键入inet ip地址,我看到在ifconfig下mysql工作台。 我做错了什么? 还是我错过了一个步骤? 我得到错误说“长时间暂停后无法连接到MySQL数据库(10060)。 虚拟服务器上的IP地址与连接设备路由器pipe理页面上的“未知”列表相同。

内部/外部开发服务器设置

我试图避免做假设和问错问题。 我要描述我所处的情况以及问题所在。 我目前有一个运行开发和testing数据库的开发服务器。 开发人员在本地运行Apache,但连接到testing服务器数据库,以便每个人都在同一页面上。 随着时间的推移,这个服务器的职责已经增长。 它经常被用作客户签署变更的中转区域。 同时,客户和数据库的数量也在增长。 今天,开发服务器地面停下来。 这对今天开发团队的工作stream程是一个真正的破坏。 testing期间设置的活动开发和CRON任务混合在一起,最终使服务器变得无法使用。 我相信服务器的磁盘访问是瓶颈。 我以前曾要求过硬件升级,可惜的是他们还没有从pipe理层那里获得。 硬件升级也只会做很多。 我想知道是否有更好的方法来实现我们想要的,并希望在到达时以正确的方式设置新的服务器。 理想情况下,我希望有一个系统可以很容易“停止”网站,包括他们的cron广告,当他们没有进行积极的开发时,他们的登台URL就无法访问。 同样重要的是,我需要一个简单的方法来再次“启动”它们,最好通过一个用户界面,这样我们的非技术人员就可以做到这一点。 我喜欢基于docker / vm的解决scheme,但我不能100%确定如何维护。 使用类似这样的最大障碍可能是我不知道如何能够将它们设置为临时环境。

非常高的CPU负载低到中VPS上的RAM使用率(超过100%的CPU)

我在VPS Virtuozzo服务器上使用: 8GB内存 6个CPU SSD硬盘 Debian 8.8 PHP 5.6.30 MySQL 5.5.55 只有一个网站是服务的。 它是一个带有SSLfunction的网站,大约有22000篇文章。 它获得中等stream量,大约8k用户,每天18k的综合浏览量。 由于网站的性质,我们得到了很多不好的机器人请求和黑客攻击。 fail2banconfiguration和报告良好。 顶部-i报告有时mysql的CPU%为200。 Virtuozzo报告 CPU使用率99.9% CPU负载平均7.13,7.42,6.97 内存42% 结果在某些时候apache暂停并重新启动。 my.cnf文件: [client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = […]

Dovecot邮箱encryption(扰码器) – pem_lib.c无法处理密钥

除了后面的post,Dovecot在从DB读取公钥时遇到了问题: Error: scrambler_pem_read_public_key: 139640300201616:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: PUBLIC KEY 按键格式似乎有问题,即使按照这个post在pem中被格式化。 我尝试了不同的列数据types(blob,text),并以这种方式将关键字插入到表user_keys中,但是没有解决问题: insert into user_keys (uid, enabled_encryp, public_key, private_key, private_key_salt) values (1, true,'—–BEGIN PUBLIC KEY—– mQENBFkdy48BCAC9FsBgeLEmkmr5UZcS/bnrQpAcewatETpkE3IAQFxu1lhErmtu nyioZ8Oa1e+Xc6KIGk690vMbEmApifIi2FIlnDkVh3Wh1mP3he6HGRs7BgLfl9fc m6QSvjuosmWGMyZ1LiuPtoulXDiHolwGUcLPr5YifazjwdB0pPeFUnpo6kbw4XdF … fBiRS4dBoKz1Jwp5EvGbM3oh9RtDz6qK69cHZ0nKy9ErYjHS0Kw/fKFaou2T3P71 sFuvxOHojGhmxQQRw2ZSOfRgLaG1lpohAF0KNlIsGV5WQSU —–END PUBLIC KEY—–','—–BEGIN PRIVATE KEY—– lQO+BFkdy48BCAC9FsBgeLEmkmr5UZcS/bnrQpAcewatETpkE3IAQFxu1lhErmtu nyioZ8Oa1e+Xc6KIGk690vMbEmApifIi2FIlnDkVh3Wh1mP3he6HGRs7BgLfl9fc m6QSvjuosmWGMyZ1LiuPtoulXDiHolwGUcLPr5YifazjwdB0pPeFUnpo6kbw4XdF … mzN6IfUbQ8+qiuvXB2dJysvRK2Ix0tCsP3yhWqLtk9z+9bBbr8Th6IxoZsUEEcNm Ujn0YC2htZaaIQBdCjZSLBleVkEl —–END PRIVATE KEY—–', 'wZDlM/BRQwCnOVcA'); 任何帮助,欢迎!

CentOS上的东西阻止远程MySQL连接

我在CentOS 7上运行MySQL,似乎无法远程连接MySQL。 我有: bind-address=0.0.0.0 当然不是#skip-networking但是如果我绑定到实际的公共/本地IP地址,则无关紧要。 我禁用了SELinux: [root@hostname ~]# sestatus SELinux status: disabled 并输出为iptables -L -v : Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 103K 21M ACCEPT all — any any anywhere anywhere ctstate RELATED,ESTABLISHED 13 880 ACCEPT all — lo any anywhere anywhere 21423 3952K […]

在MySQL中存储系统用户时,Apache无法启动

我正在pipe理6台服务器,其中3台在重启后无法启动Apache。 这三个共同之处在于它们都依赖于MySQL / MariaDB来存储系统用户(通过libnss-mysql-bg )。 Apache也被设置为mpm-itk ,导致网站在自己的系统用户下运行。 这使我相信,Apache启动时无法启动的原因是它在vHost文件( AssignUserID )中看到对系统用户的引用,它目前还找不到,因为MySQL尚未完成启动。 除非有人能build议我一个更好的解决scheme,我如何确保Apache只在 MySQL运行之后才启动? Apache也似乎没有自己的systemd服务文件。 服务器都运行Ubuntu 16.04.2 LTS systemd。

更改pureftpd mysql用户的默认权限

我想知道如何更改MySQL Pureftpd用户的默认权限。 我希望这样做,因为我希望我的用户可以访问属于其他unix用户的目录,而无需在其中写入权限。 所以MySQL用户的默认所有者和组是unix用户,但是可以在这个mysql-pureftpd用户上添加权限吗? 我看到我们可以为虚拟用户设置默认的SID和GID,这种解决scheme可以在我的情况下工作吗? 我尝试了vuser和ACL,但没有奏效。 感谢您的阅读,祝您有美好的一天