小编Jos*_*osh的帖子

什么可能导致 PHP 和 MySQL 之间奇怪的查询超时?

我是许多不同客户使用的软件即服务应用程序的高级开发人员。我们的软件在由 MySQL 后端提供支持的 Apache / PHP 应用程序服务器集群上运行。在该软件的一个特定实例上,当客户的类别超过 29 个时,查询类别名称列表的 PHP 代码会超时。我知道这毫无意义;数字 30 没有什么特别之处会打破这一点,其他客户的类别超过 30 个,但是,当这个安装有 30 个或更多类别时,问题是 100% 可重现的,而当类别少于 30 个时,问题就会消失。

有问题的表是:

CREATE TABLE IF NOT EXISTS `categories` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `name` varchar(64) NOT NULL,
  `title` varchar(128) NOT NULL,
  `parent` int(10) unsigned NOT NULL,
  `keywords` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `status` enum('Active','Inactive','_Deleted','_New') NOT NULL default 'Active',
  `style` enum('_Unknown') default NULL COMMENT 'Autoenum;',
  `order` smallint(5) unsigned NOT NULL,
  `created_at` datetime NOT …
Run Code Online (Sandbox Code Playgroud)

mysql performance

13
推荐指数
2
解决办法
1万
查看次数

我可以在一个查询中重命名 MySQL ENUM 列中的值吗?

假设我有一个带有ENUM('value_one','value_two'). 我想将其更改为ENUM('First value','Second value'). 我目前这样做如下:

ALTER TABLE `table` MODIFY `column` ENUM('value_one','value_two','First value','Second value');
UPDATE `table` SET `column`='First Value' WHERE `column`='value_one';
UPDATE `table` SET `column`='Second Value' WHERE `column`='value_two';
ALTER TABLE `table` MODIFY `column` ENUM('First value','Second value');
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方式来做到这一点,例如,用一个做到这一点的方式 单一的 ALTER TABLE声明?

mysql alter-table

12
推荐指数
2
解决办法
1万
查看次数

MySQL 卡在“wsrep:为写集(-1)启动复制”

我最近遇到了以前从未见过的 MySQL 情况。我们有一个有 3 个节点的 Percona 集群。master 停止处理查询,我们托管的 PHP FPM Web 应用程序变得无响应。当我检查时SHOW PROCESSLIST,MySQL 进程卡在状态:wsrep: initiating replication for write set (-1)

PHP 将所有查询定向到的主数据库和两个辅助数据库之一都是这种情况。这是我看到的输出SHOW PROCESSLIST

mysql> show processlist;
+-------+-------------+--------------------+-----------------+---------+-------+--------------------------------------------------------+--------------------------------------------------------------------------------------+-----------+---------------+
| Id    | User        | Host               | db              | Command | Time  | State                                                  | Info                                                                                 | Rows_sent | Rows_examined |
+-------+-------------+--------------------+-----------------+---------+-------+--------------------------------------------------------+--------------------------------------------------------------------------------------+-----------+---------------+
|     1 | system user |                    | NULL            | Sleep   |  2171 | wsrep: committing write set (542480920)                | NULL                                                                                 |         0 |             0 |
| …
Run Code Online (Sandbox Code Playgroud)

mysql percona-server galera mysql-5.7

6
推荐指数
1
解决办法
3278
查看次数

如何将数据库从 Postgres 8.4 复制到 Postgres 9.1?

我的 trac 服务器最近开始出现问题。它运行的是一个非常过时的 Ubuntu 版本,我无法正确使用apt-get来纠正我遇到的问题。因此,我备份了机器并全新安装了 Ubuntu 12.04。

现在我有一个正确安装并运行 Postgres 9.1 的新服务器。我想从备份中复制我的旧 Postgres 8.4 数据库并在新安装上进行设置。我该怎么做?


什么是迄今为止我所做的是旧的Postgres 8.4数据和bin目录从备份(复制/var/lib/postgresql/8.4/main/usr/lib/postgresql/8.4/bin)来/tmp/postgres.old/tmp/postgres-bin.old上新安装。我停止使用 Postgres 9.1service postgres stop并运行以下命令:

sudo -u postgres /usr/lib/postgresql/9.1/bin/pg_upgrade \
  --old-datadir=/tmp/postgres.old/main/ \
  --new-datadir=/var/lib/postgresql/9.1/main/ \
  --old-bindir=/tmp/postgres-bin.old/postgresql/8.4/bin \
  --new-bindir=/usr/lib/postgresql/9.1/bin
Run Code Online (Sandbox Code Playgroud)

Postgres 文档中所述。这似乎很好用,除了我收到错误:

Performing Consistency Checks
-----------------------------
Checking current, bin, and data directories                 ok
Checking cluster versions                                   ok

connection to database failed: could not connect to server: No such file or directory
        Is the server …
Run Code Online (Sandbox Code Playgroud)

postgresql recovery upgrade

3
推荐指数
1
解决办法
1万
查看次数