小编The*_*Guy的帖子

在 MySQL 中存档旧数据的最佳实践

我正在使用 MySQL 数据库来存储来自多个服务器的日志。数据库平均每天增长 50 GB。它的总大小现在是 1.7 TB。

它有IDdatetime列。

我想将超过一周的数据移动到同一台服务器上的另一个数据库。

这需要哪些步骤?

截至目前,我这样做:

  1. 创建存档数据库和表。
  2. Insert into ArchiveDB.table select * from old_tbl where datetime <= Archivedate
  3. 然后 DELETE FROM old_tbl WHERE datetime <= Archivedate

我想在以下条件下实现这一点:

  • 批量插入和删除。
  • 从旧数据库中删除后回收空间。
  • 无需停机即可更新统计信息。

...或者如果您知道任何最佳实践,请告诉我。

mysql innodb database-design

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

MySQL - 使用 IN 子句删除需要更多时间

在 MySQL 5.6 中,我有大约 6000 万行。我想根据 Id 删除行。这里的Id是主键。

我今天有一个奇怪的行为。

delete from tbl where id=1;
Run Code Online (Sandbox Code Playgroud)

它以毫秒为单位执行。

然后我就这样做了。

CREATE TEMPORARY TABLE DELETE_ID (ID int);
Insert into DELETE_ID select id from (subery1(subquery2(subquery3)));
Run Code Online (Sandbox Code Playgroud)

DELETE_ID 大约有 150 个 ID。

Delete from tbl where id in (select id from DELETE_ID);
Run Code Online (Sandbox Code Playgroud)

花费了 30 多分钟,但删除了一行。

没有锁或死锁。

在 innodb_trx 中,状态有时是fetching rows有时unlocking rows

谁能帮助我理解为什么会发生这种情况?

mysql innodb delete

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

Mariadb - 变量“innodb_log_file_size”是只读变量

我使用 mariadb 10.0.29,我需要将 innodb 文件大小更改为 256M,默认大小 50M,

我的配置文件位于

/etc/mysql/mariadb.conf.d/50-server.cnf
Run Code Online (Sandbox Code Playgroud)

我添加了以下行,但它不起作用。

[mysqld]
innodb_log_file_size=256M
Run Code Online (Sandbox Code Playgroud)

我也尝试过set innodb_log_file_size=5033164800;

但它表明

ERROR 1238 (HY000): Variable 'innodb_log_file_size' is a read only variable
Run Code Online (Sandbox Code Playgroud)

mysql innodb mariadb log

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

MySQL 崩溃 - InnoDB

我使用mysql 5.5

我的所有表都在innoDB中。

今天我的应用程序宕机了,mysql 无法启动。

这是我的发现。

The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
########information that should help you find out what is causing the crash.
170806 10:50:09 [Note] Plugin 'FEDERATED' is disabled.
170806 10:50:09 InnoDB: The InnoDB memory heap is disabled
170806 10:50:09 InnoDB: Mutexes and rw_locks use GCC atomic builtins
170806 10:50:09 InnoDB: Compressed tables use zlib 1.2.3
170806 10:50:09 InnoDB: Using Linux native AIO
170806 10:50:09 InnoDB: Initializing buffer pool, size = 4.0G
170806 10:50:09 InnoDB: …
Run Code Online (Sandbox Code Playgroud)

mysql innodb recovery crash

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

SQL Server 如何在删除表后重用保留页

我只是想知道:

  1. SQL Server 如何在删除 1GB 表后重用保留空间?(调用表T1)
  2. SQL Server 如何在截断表后重用保留空间?(称此表为 T2)

两者都是聚簇表(不是堆)。

sql-server database-internals disk-space

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

从表中分块删除

我想清理我的一张有 400 万的表。所以我准备这个查询来清理它。但它抛出了一个错误,有人可以帮我解决这个问题吗?

DELIMITER $$
DROP PROCEDURE IF EXISTS archive_table $$
create procedure archive_table () 
set @min=(select min(dob) from test
              where dob < DATE_SUB(CURDATE(), INTERVAL 30 day));
while @min is not null
begin   
    delete from test where dob = @min;
    commit ;
    select min(dob) from test
            where dob > @min
              and dob < DATE_SUB(CURDATE(), INTERVAL 30 day) );
END WHILE;
END$$
Run Code Online (Sandbox Code Playgroud)

错误:

    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your …
Run Code Online (Sandbox Code Playgroud)

mysql delete batch-processing

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

wal_level hot_standby 和logical

我有一个 PostgreSQL 设置,有一个主站和三个从站。它被配置为流式复制。

现在,我只想使用pglogical将几个表从主服务器复制到分析服务器。为此,我们需要启用逻辑wal_level. 那么如何在不破坏现有复制的情况下启用它呢?

postgresql replication configuration postgresql-9.6

0
推荐指数
1
解决办法
2190
查看次数

故障转移和故障恢复 SQL Server 具有不同版本的分布式可用性组

我知道SQL Server分布式可用性组可以在两个不同的主要版本之间同步数据,

比方说全球小学 - 2016

二级股份公司 - 2017

此同步将起作用,我也可以进行故障转移。但是我想恢复到 2016 年的故障转移后会发生什么?

  1. 这可能吗?
  2. 2017 年的所有增量数据都会与 2016 年同步吗?

sql-server availability-groups distributed-availability-groups

0
推荐指数
1
解决办法
565
查看次数