小编Rol*_*DBA的帖子

如何为给定用户设置默认会话 sql_mode?

我想要一个不同于全局 sql_mode 的默认会话 sql_mode。

我可以手动设置,但我想自动设置。

我以为我可以将它添加到.my.cnf,但这不起作用。我尝试将它添加到 中的[mysql]组中.my.cnf,它没有抛出错误。

然而,当我连接会话 sql_mode 时,会话仍然继承全局 sql_mode。

我正在使用 MySQL 5.5.16。

mysql my.cnf

4
推荐指数
1
解决办法
5338
查看次数

mysqldump 不生成 USE 语句

我有一个小脚本,它允许我选择一个数据库和一些表,然后通过mysqldump.

目前这不包括USE 'db_name'输出文件中的语句,这是我需要包含的内容。

这是我正在使用的转储命令示例:-

mysqldump -u root db_name tbl_1 tbl_2 tbl_3 > output.sql

我在这里找到了这个问题,它描述了我遇到的相同问题,但是提供的答案对我不起作用。该USE 'db_name'语句不会写入输出的 SQL 文件。

这是从我转储的 SQL 文件之一到它启动DROP/ CREATEtable 命令的所有内容:

-- MySQL dump 10.13  Distrib 5.5.16, for Win64 (x86)
--
-- Host: localhost    Database: db_name
-- ------------------------------------------------------
-- Server version   5.5.16-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' …
Run Code Online (Sandbox Code Playgroud)

mysql mysqldump backup

4
推荐指数
1
解决办法
1933
查看次数

mysqldump:刷新权限选项

我想澄清一下--flush-privilegesmysqldump的选项。

以下是MySQL 文档中该选项的描述:

--flush-privileges    
Send a FLUSH PRIVILEGES statement to the server after dumping the mysql database.
This option should be used any time the dump contains the mysql database and any other
database that depends on the data in the mysql database for proper restoration. 
Run Code Online (Sandbox Code Playgroud)

当它说它在转储数据库发送刷新语句时,我读到这意味着数据、模式等被转储到备份文件中,然后刷新语句被发送到刚刚转储的数据库(之后抛弃)。

我想知道什么转储数据等需要刷新特权,所以我开始寻找解释以确定何时以及为什么使用它。

当我阅读各种答案时,我想到如果将flush 语句包含在转储文件中是有意义的。然后在将文件内容加载到数据库中后,运行刷新权限语句以在导入新信息后更新设置。

那么它是怎样工作的?
A)将数据转储到文件刷新源数据库?如果是这样,为什么这是必要的?
B) 在导入转储文件的内容后刷新目标数据库?
C) 除了我所描述的可能性之外的其他东西?

mysql mysqldump backup permissions

4
推荐指数
2
解决办法
3674
查看次数

在 InnoDB 上显示表状态非常慢

最近我们一直在从 MyISAM 迁移到 InnoDB,我知道 MyISAM 使用针对每个表的元信息来跟踪信息等 - 但是,数据库大约 1.8GB,在 400 多个左右的表中有 1+ 百万条记录。

问题来自像 PHPMyAdmin 这样的软件运行“SHOW TABLE STATUS FROM dbase;” 执行该命令最多可能需要 50 秒。有没有办法优化这个?(MySQL 或 MariaDB)

谢谢!

mysql innodb mariadb

4
推荐指数
1
解决办法
5100
查看次数

MySQL 中的 BEFORE INSERT 触发器

我是 MySQL 的新手,我在创建BEFORE INSERT触发器时遇到了问题。

我收到一个unexpected END错误。

我有一个以verlof_aanvragen列命名的表datum(还有 6 列)。

我想要完成的只是日期介于now()+8和之间now()+365CURDATE() + INTERVAL 8 DAY AND CURDATE() + INTERVAL 365 DAY) 可以插入的行。日期超出该间隔的插入应该失败。

我使用的是 MySQL 5.5.24 版。

这是代码:

CREATE TRIGGER chk_dates  
BEFORE INSERT ON verlof_aanvragen  
FOR EACH ROW  
BEGIN  
  IF (NEW.datum < CURDATE() + INTERVAL 8 DAY OR NEW.datum > CURDATE() + INTERVAL 365 DAY) 
THEN  
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Any Message'

END IF  
END 
Run Code Online (Sandbox Code Playgroud)

mysql trigger mysql-5.5

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

加速 mysqldump / 重新加载

将大型模式转换为每个表文件,我将使用 --all-databases 执行 mysqldump/reload。我编辑了 my.cnf 并更改了“innod_flush_log_at_trx_commit=2”以加快加载速度。我计划“SET GLOBAL innodb_max_dirty_pages_pct=0;” 在转储之前的某个时刻。我很想知道哪种设置组合可以获得最快的转储和重新加载时间?

模式统计:

26 个 myisam 表 413 个 innodb ~240GB 数据

[--opt=--禁用键;--扩展插入;--快速等] --no-autocommit ??

与前置会话变量类似:“SET autocommit=0; SET unique_checks=0; SETforeign_key_checks=0;”

mysqldump 选项是否等效?

谢谢你的建议!

mysql mysqldump backup

4
推荐指数
1
解决办法
7885
查看次数

SSIS 中的条件数据流任务

简要架构:

我正在创建一个 SSIS 包来生成 Excel 报告。有不同类型的报告,所以我创建了一个表来跟踪每个用户对报告生成的请求并跟踪请求的状态。Sql 作业选择每个请求并在 FTP 服务器上生成 excel 文件。

问题:

  1. 在控制流中,我在“ReportRequests”表上执行选择并使用 For Each Container 迭代记录集。我创建了一个名为“ReportType”的变量来从数据库中获取列值。

  2. 在数据流任务中,基于“ReportType”变量,我想对不同的数据库执行不同的查询以生成报告。我将有 3 到 4 个不同的 ado.net 资源和不同的查询。但那些应该基于“ReportType”的值工作

如何在数据流任务中实现这个条件数据流?

ssis

4
推荐指数
1
解决办法
3274
查看次数

如何从远程主机使用 mysqltuner

我们无法通过操作系统控制台访问我们的服务器。我们的生产环境是Ubuntu 12。是否可以从远程主机使用mysqltuner?如果是,请提供指南。我们使用的是mysql5.6

mysql mysqltuner

4
推荐指数
1
解决办法
5690
查看次数

MySQL - 二进制日志文件大小增长超过最大限制

我在 Centos 6 上运行 MySQL 5.7。我启用了二进制日志记录,但没有为我的配置文件中的二进制日志的最大大小提供任何自定义值。默认情况下,参数max_binlog_size = 1073741824相当于 1GB。这意味着,一旦二进制日志达到 1GB 的大小,就应该创建一个新文件。

我在我的服务器中观察到所有二进制日志文件的大小都不同,并且有很多对比,例如 200GB、165GB、4GB 等......

为什么当二进制日志文件的最大大小为 1GB 时会发生这种情况?是否有必要在配置文件中明确提及默认的最大大小?

mysql binlog mysql-5.7

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

AWS Aurora 中的表锁过时?

我们有一个 AWS Aurora(MySQL 引擎,r3.large)用于测试迁移。

我们注意到几个查询似乎根本无法运行。当我跑

show engine innodb status;
Run Code Online (Sandbox Code Playgroud)

它报告有一个表被锁定:

2017-06-21 18:20:49 2aea8928a700 Transaction:
TRANSACTION 6093969, ACTIVE 0 sec updating or deleting
mysql tables in use 1, locked 1
16 lock struct(s), heap size 376, 6164 row lock(s), undo log entries 1
MySQL thread id 12219, OS thread handle 0x2aea8928a700, query id 8842803 10.127.0.24 root updating
delete from <tablename> where id=<id>
Foreign key constraint fails for table `mydb`.`<otherTable>`:
Run Code Online (Sandbox Code Playgroud)

这是一个java应用程序。我已经停止了 tomcat 实例,并验证了没有活动连接,但锁没有清除。

我查看了 information_schema(INNODB_LOCKS、INNODB_LOCK_WAITS 和 INNODB_TRX)中的几个表,但有 0 条记录。

这是极光问题吗?除了 AWS Support …

mysql innodb transaction aws aurora

4
推荐指数
1
解决办法
5394
查看次数