小编Ben*_*rel的帖子

每天在给定时间安排活动

我希望我的活动每天在 00:20 运行。我对时间安排感到困惑。我应该使用第一个选项还是第二个选项?

选项1

CREATE EVENT my_event
  ON SCHEDULE
    EVERY 1 DAY
    STARTS '2014-04-30 00:20:00' ON COMPLETION PRESERVE ENABLE 
  DO
    # My query
Run Code Online (Sandbox Code Playgroud)

选项 2

CREATE EVENT my_event
  ON SCHEDULE
    AT ('2014-04-30 00:20:00'+ INTERVAL 1 DAY) ON COMPLETION PRESERVE ENABLE 
  DO
    # My query
Run Code Online (Sandbox Code Playgroud)

mysql event

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

在 MySql 中记录/记录事件历史记录的位置?

我只是设置了一些存储过程以使用 CREATE EVENT 在事件调度程序中运行。

我试图找到它运行的历史存储在哪里(如果在某个地方)。我查看了文档,但找不到任何内容。

是否有一些表格或日志可以让我看到我的预定事件已成功运行?

mysql jobs event

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

MySQL 5.6.8 中的 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 服务器的合理默认值?

mysql my.cnf

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

如何处理大规模多租户/多模式环境的连接池

以下是情况的简要说明:

  • 我们每个客户有 1 个架构。
  • 我们有2000多个客户。
  • 我们有 50 多个数据库服务器(上述模式在它们之间分布不均)。

我们正在创建一个真正的无状态应用程序前端(即改进遗留软件)。这意味着我们可以有许多(100 多个)应用服务器来处理用户流量,每个应用服务器可能需要连接到 50 多个服务器中的任何一个来随时提取数据。

拥有这么多应用服务器的原因是代码的计算量非常大。也许最终我们可以转向使用更强大硬件的更少应用程序服务器,但我们还没有做到这一点。

我的问题: 如何管理这种环境中的连接池情况?
如果我们想象一个“好”的连接池大约有 64 个连接,那么让每个应用服务器为每个数据库服务器生成一个连接池似乎是不可行的。这将导致对每个数据库服务器建立100+x64 = 6400 个持久连接......这太多了吗?

可以做什么?是否有某种可以使用的连接池代理软件?

mysql multi-tenant connection-pooling

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

在 MySQL 5.7 中保留行大小 > 8126 的表有什么风险?

我刚刚从 MySQL 5.6 升级到 5.7,并且意外地发现一个 WordPress 插件表包含一个荒谬的 438 个字段,并且超过了 8126 字节的行大小限制。

这是我在运行时收到的警告mysql_upgrade

行大小太大 (> 8126)。将某些列更改为 TEXT 或 BLOB 或使用 ROW_FORMAT=DYNAMIC 或 ROW_FORMAT=COMPRESSED 可能会有所帮助。在当前行格式中,内联存储 768 字节的 BLOB 前缀。

不过,这只是一个警告,桌子还在那里。我无法创建具有相同结构的新表,但有趣的是,我可以保留旧表并使用它(至少,SELECT从它)。

我已经阅读了RolandoMySQLDBABill Karwin对类似主题回答,但没有任何解决方案可以帮助我:

  • 更改ROW_FORMAT=DYNAMIC为还不够,因为该表充满了内联 UTF-8VARCHAR字段,这些字段仅超过最大大小
  • 修改表的结构是不可能的,因为它是第三方软件的一部分,这就像打开一罐蠕虫

我已经向插件开发人员报告了这个错误,并希望他们能尽快修复该表,但与此同时,我被这个非法表困住了。

所以问题是:

  • 当 MySQL 不允许创建这样的表时,它如何处理不遵守 InnoDB 存储规则的表?
  • 将桌子保持在当前状态是否有任何风险?
  • 我可以在此表上运行的查询类型是否有限制?
  • 如果我将此服务器复制到另一台 MySQL 5.7 服务器,复制是否会因为此表而失败?

我从 MySQL 5.6 升级。我也尝试DYNAMICCOMPRESSED格式,但没有运气。我计算了 integer + varchar 字段的大小,它们总共有 17,059 个字节,所以我没有机会以这种方式成功。

该插件名为Photo …

mysql innodb mysql-5.7

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

锁定 MySQL 数据库以进行升级

我四处寻找锁定整个数据库的解决方案,到目前为止我发现的唯一一个是FLUSH TABLES WITH READ LOCK

这对于备份来说很好,但不幸的是,当我使用模式更改修补数据库时,我无法使用它来阻止对数据库的其他访问。如果我运行ALTER TABLEafter FLUSH TABLES WITH READ LOCK,我会收到以下消息:

无法执行查询,因为您有一个冲突的读锁

有没有办法在我修补数据库时暂时阻止其他数据库连接访问数据库?

我不想主动拒绝其他连接,我只想让它们“暂停”,直到修补完成(几秒钟)。

我怎样才能做到这一点?

mysql

5
推荐指数
1
解决办法
6099
查看次数

存储过程、binlog 和 SUPER 权限

我尝试在 Amazon RDS for MySQL 上创建此函数:

CREATE FUNCTION GetRootZoneId (zoneId INT) RETURNS INT READS SQL DATA
BEGIN
    DECLARE _id, _parentId INT;
    SELECT zoneId INTO _parentId;

    my_loop: LOOP
        SELECT id, parentId
        INTO _id,_parentId
        FROM Zone
        WHERE id = _parentId;

        IF _parentId IS NULL THEN
            LEAVE my_loop;
        END IF;
    END LOOP my_loop;

    RETURN _id;
END;
Run Code Online (Sandbox Code Playgroud)

这将仅用于一次性查询以更新现有数据库表。

运行它让我出现以下错误:

错误 1419 (HY000):您没有 SUPER 权限并且启用了二进制日志记录(您可能想要使用不太安全的 log_bin_trust_function_creators 变量)

此限制是否也适用于存储过程,还是仅适用于函数?

如果它也适用于存储过程,是否有任何替代方法可以在不设置的情况下执行等效代码log_bin_trust_function_creators=1请注意,我知道如何在 RDS 上更改此设置,如果可能,我只想避免这种情况

mysql amazon-rds

5
推荐指数
1
解决办法
6040
查看次数

InnoDB 主键效率

我已经阅读了许多关于取决于存储引擎的主键效率的文章,但我很困惑。

给定一个简单的多对多表,其中包含两个字段storeIdzoneId以下哪种设计对 InnoDB 最有效,为什么?

  • 使用两个字段作为复合主键:
CREATE TABLE store_zone(
    storeId INT(10) UNSIGNED NOT NULL,
    zoneId  INT(10) UNSIGNED NOT NULL,
    PRIMARY KEY(storeId, zoneId)
);
Run Code Online (Sandbox Code Playgroud)
  • 使用特定的自增主键:
CREATE TABLE store_zone(
    id      INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    storeId INT(10) UNSIGNED NOT NULL,
    zoneId  INT(10) UNSIGNED NOT NULL,
    PRIMARY KEY(id),
    UNIQUE KEY(storeId, zoneId)
);
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 无论如何storeId,我需要 ( , zoneId) 对上的唯一键
  • 我有外键的storezone桌子,在这里没有显示可读性,所以在这两种情况下有上一个额外的要求指标zoneId,以及

mysql innodb

5
推荐指数
1
解决办法
1403
查看次数

mysql-community-server 和 mysql-community-server-minimal 有什么区别?

我刚刚下载了 MySQL 5.7 的第一个 GA 版本,并注意到 RPM 包带有两个版本的 MySQL 服务器包:

  • mysql-community-server-5.7.9-1.el7.x86_64.rpm
  • mysql-community-server-minimal-5.7.9-1.el7.x86_64.rpm

普通服务器包和“最小”服务器包有什么区别?

我在 MySQL 网站上找不到此信息。

mysql mysql-5.7

5
推荐指数
1
解决办法
4904
查看次数

数据库重新启动时间太长,站点已关闭

我尝试通过WHM重新启动MySQL,现在重新启动时间太长,进度条仍然显示。

我能做些什么?

我仍然可以通过 SSH 访问服务器,但无法连接到 MySQL。这很紧急,因为我的在线商店现在已关闭。

重新启动 HTTP 服务器 (Apache) 会有帮助吗?

mysql process phpmyadmin shutdown

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