搜索天数但仍未解决。
我的情况
我正在使用此命令转储一个16 + Gb(不断增长的)数据库(除了2个表都是InnoDB)
转储每天通过cron运行一次,并且位于一个小的perl脚本中
mysqldump -uuser -pxxx --single-transaction --quick DBNAME > DBBACKUP.sql
现在网站有2个主表,读/写很重(但是当转储实际上是在早上发生时负载很低)
数据库有54个表(大多数低于10-20 MB)
表1 是7100万行(9GB)InnoDB表
表2 是2500万行(3GB)InnoDB表
现在当转储运行时,应用程序(whist访问表1或2 )没问题,直到我希望表1开始备份到转储大约3分钟时,网站提交数据时插入表1 挂起约9分钟,然后再次工作,然后表2 开始转储,使用表2的应用程序开始挂起。
- 单一事务不应锁定表
- 快速不应该在内存中缓冲
最后,当转储发生时,CPU和MEM%非常低。
所以有人看过这个并知道解决方案或者有任何建议吗?
系统规格
Processor: Dual Intel Xeon E5506 Quad Core
RAM: 12 Gb DDR3
HD1: 4 147 Gb SAS drives in a RAID 10 array
HD2: 500 Gb SATA Backup Drive
OS: Linux OS - CentOS 5 64-bit
的my.cnf
max_connections = 500
safe-show-database
skip-locking
key_buffer = 128M
max_allowed_packet = 16M
table_cache = 256
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 2M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 64M
thread_concurrency = 8
wait_timeout = 30
innodb_file_per_table
innodb_log_file_size = 10485760
open_files_limit = 8192
ft_min_word_len = 3
log-error=/var/log/mysql/mysql-error.log
log-slow-queries = /var/log/mysql/mysql-slow.log
long_query_time = 7
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[isamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
谢谢。
答案 0 :(得分:2)
好的,好像我发现了这个问题。
基本上,我的数据库有4个myiisam表和大约20个innodb表,myissam表的大小不超过2 Mb(总计),但导致锁定:(
所以我很幸运能够从myissam表中单独转储innodb表(如上所述,不包括myissam表)(并保持一致性),并且不再锁定:)
如果有人有其他解决方案随时发布。
答案 1 :(得分:0)
如上所述here你可以设置复制(主/从)和备份从属(有或没有锁定)并且不用担心更改,从而解决锁定问题。
您可以在此处找到设置复制的指南:
http://dev.mysql.com/doc/refman/5.0/en/replication-howto.html