我们刚刚遭遇了一场大灾难:有人对生产数据库进行了不受控制的更新,很明显,备份过程很长时间没有工作,所以我们丢失了重大数据。一个 4000 万行的表现在充满了垃圾。
有人有恢复数据的想法吗?例如,使用文件系统恢复的工具?
事实:
老实说,这不是我们公司的第一次重大灾难,但这很容易成为最后一次。我们通常会想出一些主意来挽救这一天,但这一次,我真的没有主意了。Clusterf*ck...
编辑:问题发生在没有 where 的更新语句之后。问题是,这个问题发生在星期一下午和星期二早上(法国时间)之间,今天才发现,因为各种原因(应用程序提供了一个同步工具,所以新数据插入了现在丢失的数据,但在另一张桌子现在完全坏了)。所以实际上,表中几乎所有行(新插入的除外)都包含相同的数据(id 列除外)。
关于 ibdata* 和 ib_logfile*,我停止了复制的服务器,所以它们保持现在的状态。我无法停止主服务器上的数据库来复制文件。
看来我在 mysql(运行 innodb)中有一个死锁,部分原因是 gen_clust_index 上的锁,但是,这不是我创建的表。
那么...... gen_clust_index 的简短而甜蜜的描述是什么,它在 mysql 中的用途和目的是什么。
我正在运行从 mysql.com 下载的 MySQL 5.5.9 x86_64 RPM。在 CentOS 5.5 Xen DomU 上运行。
我启用了 Query_cache 但是 MySQL 从不使用它。我所有的表都是 InnoDB。为什么 Qcache 从不命中?
更新 2:我发现这仅限于名称中带有 - 的模式。创建一个新架构,例如 new-db,查询缓存失败。不幸的是,我有 148 个现有的 Schama,它们的名字中都带有“-”。
更新这似乎仅限于从以前版本的 MySQL (5.0.32) 转储和导入的模式 创建新模式并在此查询缓存中查询表按预期工作。
这是我的 Qc 工作和不工作的设置和示例。
mysql> SHOW VARIABLES LIKE '%query_cache%';
+------------------------------+-----------+
| Variable_name | Value |
+------------------------------+-----------+
| have_query_cache | YES |
| query_cache_limit | 2097152 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 536870912 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
+------------------------------+-----------+ …Run Code Online (Sandbox Code Playgroud) 我在 CentOS 上运行 MySQL 5.1.47。如何检查 InnoDB 的二进制日志记录是否处于活动状态?如果未启用,如何启用二进制日志记录?赶紧跑?
mysqld --log-bin
我在“my.conf”中添加了以下几行:
query_cache_size=128M
innodb_buffer_pool_size=512M
innodb_flush_method=O_DIRECT
Run Code Online (Sandbox Code Playgroud)
之后磁盘利用率开始上升,达到 100% 并保持稳定,由于磁盘 I/O 相关任务,CPU 也有所上升,但物理内存仅使用了 50%。
我有点迷茫 这是怎么回事?
任何配置错误是否会导致 mysql..mysql 调谐器显示创建过多的临时表
Current max_heap_table_size = 200 M
Current tmp_table_size = 200 M
Of 17158 temp tables, 30% were created on disk
table_open_cache = 125 tables
table_definition_cache = 256 tables
You have a total of 97 tables
You have 125 open tables.
Current table_cache hit rate is 3%
Run Code Online (Sandbox Code Playgroud)
早些时候,临时表是of the 23725 temp tables 38% were created on disk,但我改变max_heap,并tmp_table从16米200米和它降低到30%..
engine myisam
group_concat_max_len = 32768
key_buffer_size = 3.7 GB,
thread_stack = 256k,
table_cache = 125
query_cache_limit …Run Code Online (Sandbox Code Playgroud) 我需要回收一些磁盘空间,所以我从我的服务器中删除了一个旧的 Magento 数据库。数据库大小约为 16 GB。我很惊讶一旦数据库被删除,它并没有真正释放磁盘空间。
我尝试重新启动 MySQL 服务器,但它仍在占用该空间。
如果重要的话,Magento 数据库会大量使用 innoDB。
我能做些什么来恢复这个磁盘空间吗?
当我在我的 unbuntu 服务器上启动 mysql 时,我会收到一条消息。
121122 17:39:37 [Note] Plugin 'FEDERATED' is disabled.
121122 17:39:37 InnoDB: The InnoDB memory heap is disabled
121122 17:39:37 InnoDB: Mutexes and rw_locks use GCC atomic builtins
121122 17:39:37 InnoDB: Compressed tables use zlib 1.2.3.4
121122 17:39:37 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
121122 17:39:37 InnoDB: Completed initialization of buffer pool
121122 17:39:37 InnoDB: Fatal error: cannot allocate memory for the buffer pool
121122 17:39:37 [ERROR] Plugin 'InnoDB' init …Run Code Online (Sandbox Code Playgroud) MySQL 版本:5.1.63。
我即将删除一个更大的 ~8 GB InnoDB 表。上周,我在另一台机器上放下了一个四倍大的表,一个全局锁启动了,让我们停了大约 90 秒。我怀疑这与table_cache锁定有关。任何人都对如何使这个 DROP 更顺利地提出意见?首先小批量删除,然后删除,TRUNCATE最后删除DROP TABLE?显然,如果可能的话,我想将此数据库保留在生产中。我也一直在考虑在下降之前缩小缓冲池。
我很想听听您的意见。
我已经阅读了很多帖子和手册,试图找出如何在 Ubuntu 上增加 MySQL 5.6 中的内存,其中说有 3 种方法:
我假设 2 和 3 会在 MySQL 重新启动时丢失,剩下 1。
问题是,我的 /etc/mysql/my.conf 中没有这样的设置。
conf 文件中不存在字符串“inno”,“buffer_size”或“buffer-size”也不存在(但“key_buffer”在那里)。
我通过以下方式安装它:
# apt-get install mysql-server-5.6
Run Code Online (Sandbox Code Playgroud)
我可以改变价值的任何想法?
我是否以某种方式在没有 InnoDB 引擎的情况下安装了 MySQL?
我在看错误的文件吗?
/etc/mysql 下还有一些其他的 .cnf 文件,但它们也没有 innodb 之类的东西。
mysql> show variables like 'inno%'
:
innodb_buffer_pool_size | 134217728 |
Run Code Online (Sandbox Code Playgroud)
所以看起来 InnoDB 已安装,我只是找不到它的配置文件在哪里。
任何帮助表示赞赏。