我有一个关于同时使用 MyISAM 和 InnoDB 的 MySQL 数据库的逻辑备份的问题。
该mysqldump实用程序支持以下两个选项:
--single-transaction - 通过在单个事务中转储所有表来创建一致的快照。仅适用于存储在支持多版本的存储引擎中的表(目前只有 InnoDB 支持)[...] 选项自动关闭 --lock-tables。
-x, --lock-all-tables - 锁定所有数据库中的所有表。这是通过在整个转储期间获取全局读锁来实现的。自动关闭 --single-transaction 和 --lock-tables 。
对于 InnoDB,我们需要 --single-transaction
对于 MyISAM,我们需要 - 锁定表或锁定所有表(以防我们需要跨数据库一致性)。
那么,混合数据库(同时使用 MyISAM 和 InnoDB 引擎的数据库)应该如何备份?
编辑:
为了澄清,这个问题可以重新表述如下:
lock-[all-]tables 选项是否保证 InnoDB 表的一致备份?
我在 SQL 2008 中有一份工作,它运行一个存储过程来备份所有数据库。这通过 sql server 代理作业每天运行。
它每天都成功退出,但有时只有在备份了几个数据库后才成功退出。每次可以是不同数量的数据库。大多数情况下,它会成功备份所有数据库,但有时会成功备份 2 次,有时会成功备份 5 次,等等。
我在作业历史记录、事件查看器或 sql server 日志中没有看到任何错误。
备份是在本地磁盘上进行的,尽管该文件夹是可扩展存储卷上文件夹的“连接点”。
操作系统是 Windows 2003 64 位运行 Sql Server 2008 网络版 64 位作为在 Vmware ESXi 5 主机上运行的虚拟机。
存储过程:
ALTER PROCEDURE [dbo].[backup_all_databases]
@path VARCHAR(255)='c:\backups\'
AS
DECLARE @name VARCHAR(50) -- database name
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
DECLARE @dbIsReadOnly sql_variant -- is database read_only?
DECLARE @dbIsOffline sql_variant -- is database offline?
DECLARE db_cursor CURSOR FOR
SELECT name …Run Code Online (Sandbox Code Playgroud) 我有一个很大的 .sql 文件,里面有很大的 insert into ... values ... 语句。其中许多语句在执行期间会生成警告。如何让 mysql 打印警告?
如果它击中 control-C,则导入停止,我将返回 OS 命令行。
以下是运行 SQL 的示例输出:
Query OK, 9827 rows affected, 5403 warnings (0.20 sec)
Records: 9827 Duplicates: 0 Warnings: 5403
Query OK, 9859 rows affected, 5247 warnings (0.20 sec)
Records: 9859 Duplicates: 0 Warnings: 5247
Run Code Online (Sandbox Code Playgroud) 我有一个包含多个视图的模式。我需要检查执行计划以确保适当的索引到位并被使用。
我该怎么做呢?
我宁愿不必将输出复制并粘贴show create view <viewname>到 中explain,尤其是当某些视图构建在其他视图之上时,这将非常痛苦。
更新表中多行的最简单方法是什么?我有一个如下所示的 csv 文件:
|primary_key |value|
| 1 | xyz|
| 2 | abc|
| 3 | def|
...
Run Code Online (Sandbox Code Playgroud)
目标表中已存在具有这些主键的行
我想用这些值更新目标表。是否有语法,以便我可以编写如下内容:
update mytable set value = ('xyz', 'abc', 'def') where primary key = (1,2,3);
Run Code Online (Sandbox Code Playgroud)
查看MySQL 更新参考、本站点(MySQL-csv 更新)、SO(更新多行、多个数据库更新、更新多行),我怀疑答案是“否”,但我想确认这一点是真的。
我有一个 MySQL 表,其中包含有关公司发票的信息。但是,这家公司有两个分公司,每个分公司都有独特的开票顺序;可以说是“意甲”和“意甲”。但是,这是一家公司,我不想创建两个发票表。相反,我想为一张表设置两个不同的自动增量。我知道这在技术上是不可能的,但我想这是其他人以前解决过的一个问题,所以我想知道这个问题是否有一个众所周知的“解决方案”?
我现在正在做的不是使用主键作为发票编号(这将是理想的),而是使用带有发票 ID 的辅助列,该列是手动递增的(嗯,使用 PHP 脚本,但它仍然不是自动的),通过检查该特定系列的最新发票。
这是我目前的设置:
CREATE TABLE `invoices` (
`id` mediumint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
`invoicenumber` mediumint unsigned NOT NULL,
`branch` enum('A','B') NOT NULL,
`date` date NOT NULL,
`client` varchar(100) NOT NULL
) COMMENT='' ENGINE='InnoDB';
Run Code Online (Sandbox Code Playgroud)
要检查延迟发票,我运行:
SELECT MAX(invoicenumber+1) AS new_invoice_number FROM invoices WHERE branch = 'A'
在 Debian Linux 服务器上,托管许多 PHP/MySQL 网站(图片库),有时我有“很多”文件,例如/tmp/#sql_6405_58.MYD.
例如今天:
[2012-12-15 15:18:11] /tmp/#sql_6405_6.MYD : 88MB
[2012-12-15 15:18:11] /tmp/#sql_6405_3.MYD : 22MB
[2012-12-15 15:18:11] /tmp/#sql_6405_4.MYD : 138MB
[2012-12-15 15:18:11] /tmp/#sql_6405_10.MYD : 88MB
...
[2012-12-15 15:18:11] /tmp/#sql_6405_9.MYD : 15MB
[2012-12-15 15:18:11] /tmp/#sql_6405_65.MYD : 49MB
[2012-12-15 15:18:11] /tmp/#sql_6405_44.MYD : 69MB
Run Code Online (Sandbox Code Playgroud)
(同时 59 个文件,超过 6GB...是的,我在 /tmp 中监控大文件)
不幸的是,/tmp它在同一个分区上/,它暂时中断了 Web 服务器,因为/我想是满的。然后文件消失,服务器恢复正常。
所有文件名都遵循该#sql_6405_*.MYD模式。我想了解哪个 MySQL 操作意味着这么多临时文件。我在这台服务器上有大约 2000 个数据库。是否有可能知道涉及哪个数据库?
有没有办法跳过二进制日志中的特定表?
我已将二进制日志配置为每晚备份之间的增量备份策略。但是我们有一个巨大的参考表,我们将每晚从批处理(70GB 表)中更新。此表仅供读取,并且每晚使用mysqlimport.
在这个仅供参考的表的更新过程中,二进制日志导致了相当严重的延迟(尤其是当我进行完整的 70GB 更新时)。基本上它必须做两次 70GB。糟糕。
参考表当前正在使用 MyISAM(我阻止 InnoDB 尝试加载它,因此尝试使用 MyISAM)。
我的数据库速度变慢了。phpMyAdmin 中的分析器建议我OPTIMIZE TABLE在我的表上运行。
但在这样做之前,我(当然)想知道表中的数据是否会发生任何事情,或者此操作是否完全无害。
使用时我应该考虑利弊OPTIMIZE TABLE吗?索引和主键会保持不变吗?数据库中是否有优化后会变慢的区域?
我们有一个 cron 任务使用来备份我们的数据库mysqldump- 我主要担心的是损坏,没有每次手动导入和检查备份,检查/验证备份是否无损坏的最佳方法是什么?
背景:我们正在运行 mysql 5.5.* 和 InnoDB。我们mysqldump直接从服务器运行。我们目前没有使用主/从或主/主,但如果有帮助,可以更改。DB 目前小于 1mb,在可预见的未来将小于 50mb,因此在这种情况下确实不需要考虑规模。
mysql ×9
backup ×3
innodb ×3
myisam ×3
mysqldump ×3
binlog ×1
logs ×1
optimization ×1
performance ×1
replace ×1
restore ×1
sql-server ×1
update ×1
view ×1