我正在使用 MySQL 数据库来存储来自多个服务器的日志。数据库平均每天增长 50 GB。它的总大小现在是 1.7 TB。
它有ID和datetime列。
我想将超过一周的数据移动到同一台服务器上的另一个数据库。
这需要哪些步骤?
截至目前,我这样做:
Insert into ArchiveDB.table select * from old_tbl where datetime
<= ArchivedateDELETE FROM old_tbl WHERE datetime <= Archivedate我想在以下条件下实现这一点:
...或者如果您知道任何最佳实践,请告诉我。
在 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。
谁能帮助我理解为什么会发生这种情况?
我使用 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 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) 我只是想知道:
两者都是聚簇表(不是堆)。
我想清理我的一张有 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) 我有一个 PostgreSQL 设置,有一个主站和三个从站。它被配置为流式复制。
现在,我只想使用pglogical将几个表从主服务器复制到分析服务器。为此,我们需要启用逻辑wal_level. 那么如何在不破坏现有复制的情况下启用它呢?
我知道SQL Server分布式可用性组可以在两个不同的主要版本之间同步数据,
比方说全球小学 - 2016
二级股份公司 - 2017
此同步将起作用,我也可以进行故障转移。但是我想恢复到 2016 年的故障转移后会发生什么?
sql-server availability-groups distributed-availability-groups
mysql ×5
innodb ×4
delete ×2
sql-server ×2
crash ×1
disk-space ×1
distributed-availability-groups ×1
log ×1
mariadb ×1
postgresql ×1
recovery ×1
replication ×1