首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将巨大的分区My_ISAM表复制到单个innoDB表中

将巨大的分区My_ISAM表复制到单个innoDB表中
EN

Stack Overflow用户
提问于 2020-08-31 15:05:51
回答 1查看 28关注 0票数 0

我有一个巨大的My_ISAM表"msg_c_total“,它实际上被划分为"msg_c_1”到"msg_c_200“。我想用一个新名字做一个"msg_c_total“的innoDB拷贝。我仍然不能更改原始表(并将其更改为innoDB),因为一些存储过程仍然在分区表上工作。

我创建了一个新的innoDB表(只有一个索引,以避免插入时速度变慢)。然后,我使用了以下命令。30分钟后,查询仍在运行,新表中没有记录。MySQL也逐渐变得反应迟钝。

代码语言:javascript
复制
INSERT into msg_new SELECT * FROM msg_c_total

1- Percona工具是否提供了一些东西来制作副本(希望逐渐地做,以避免服务器上的严重减速)。

2-有没有一种方法可以逐渐运行上面的"insert into“(并且自动地不向select命令添加范围)。

谢谢。

服务器配置:

代码语言:javascript
复制
ft_min_word_len         =3

connect_timeout         =15
join_buffer_size        =4M
key_buffer_size         =6G
max_allowed_packet      =2M
max_connections         =2600
max_connect_errors      =30
myisam_sort_buffer_size =528M
read_buffer_size        =4M
read_rnd_buffer_size    =4M
sort_buffer_size        =4M
table_cache             =512
thread_cache_size       =256
thread_concurrency      =16
wait_timeout            =120
max_tmp_tables          =512
tmp_table_size          =512M
max_heap_table_size     =512M
interactive_timeout     =1800
query_cache_type        =1
query_cache_size        =512M
skip-external-locking
skip-name-resolve
myisam-recover          =FORCE,BACKUP
concurrent_insert       =2
open-files              =30000
event_scheduler=ON
innodb_file_per_table
innodb_data_home_dir            = /app/mysql
innodb_data_file_path           = ibdata1:10M:autoextend
innodb_buffer_pool_size         = 30G
innodb_additional_mem_pool_size = 256M
innodb_log_file_size            = 1256M
innodb_log_buffer_size          = 64M
innodb_flush_log_at_trx_commit  = 2
innodb_lock_wait_timeout        = 50
innodb_table_locks              = 0
innodb_support_xa               = 0
innodb_thread_concurrency       = 16
skip-innodb_doublewrite
innodb_buffer_pool_restore_at_startup = 1

long_query_time                 = 3
EN

回答 1

Stack Overflow用户

发布于 2020-09-01 08:16:23

MyISAM仅锁定整个表。该SELECT正在阻止所有写入。

您所说的分区是指“分区方式...”msg_c_1是一个分区名吗?或者是msg_c_1表名,并且您正在使用代码选择适当的表

请提供SHOW CREATE TABLE;有许多字幕可供选择。

这个“表”是由什么分区的?

200个分区是一个相当大的数量。

什么是PRIMARY KEY?有没有UNIQUE钥匙?

我可能会推荐像http://localhost/rjweb/mysql/doc.php/deletebig#deleting_in_chunks这样的工具来分块复制。(忽略'delete‘和'update';专注于分块。)但是,由于PK没有与MyISAM中的数据集群在一起,因此一些性能将不可用。

有多少内存?key_buffer_sizeinnodb_buffer_pool_size的设置是什么?有关使用这两个引擎时的操作,请参阅http://localhost/rjweb/mysql/doc.php/memory

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63666233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档