2011-10-24 4 views
1

J'ai un problème. Je lance un logiciel de jeu open source sur un de mes serveurs (eAthena) et ils utilisent MySQL comme base de données préférée. Cependant, chaque fois que je lance mysqldumpmysqldump se bloque serveur

mysqldump -u backup -p*** eathena > test-backup.sql

il finit par accrocher le serveur. Le logiciel eAthena se bloque et finit par s'éteindre une fois terminé. Est-ce un problème de taille? Voyant que la base de données est de 4,7 Go, je ne sais pas quoi reprocher. Y at-il un type d'alternative mon mysqldump?

Je cours CentOS 6 64bit, MySQL version 5.1.52.

+0

En supposant qu'il est un mysql 64bit, 4.7GB doit être un (long) blink-de-un-oeil à elle . Quel type sont les tables? S'il s'agit de myisam, vous pouvez essayer de vérifier la corruption avec 'check table' et' repair tables'. –

Répondre

2

Il semble que votre installation mysql manque de mémoire. Vérifiez /etc/my.cnf ou /etc/mysql/my.cnf (ou partout où il se trouve sur CentOS).

augmentez le paramètre table_cache et key_buffer_size. Voir les exemples de confs fournis avec l'installation mysql: my-huge.cnf’, my-large.cnf ', my-medium.cnf’, and my-small.cnf'. Comparez vos confs avec ceci:

[mysqld] 
# Reduced to 200 as memory will not be enough for 500 connections. 
# memory=key_buffer+sort_buffer_size+read_buffer_size)*max_connections 
# which is now: 64 + (1 + 1) * 200 = 464 MB 
# max_connections = approx. MaxClients setting in httpd.conf file 
# Default set to 100. 
max_connections = 100 
max_allowed_packet = 1M 
max_connect_errors = 10 
key_buffer = 512M # 128M for 1GB, 256M for 2GB, 512 for 4GB 
join_buffer_size = 4M # 1M for 1GB, 2M for 2GB, 4M for 4GB 
read_buffer_size = 4M # 1M for 1GB, 2M for 2GB, 4M for 4GB 
sort_buffer_size = 2M # 1M for 1GB, 2M for 2GB, 4M for 4GB 
# myisam_sort_buffer_size used for ALTER, OPTIMIZE, REPAIR TABLE commands. 
myisam_sort_buffer_size = 32M 
# Checked opened tables and adjusted accordingly after running for a while. 
table_cache = 1024 
# thread_concurrency = 2 * (no. of CPU) 
thread_concurrency=4 
thread_cache_size = 286 
# log slow queries is a must. Many queries that take more than 2 seconds. 
# If so, then your tables need enhancement. 
log_slow_queries=/var/log/mysqld.slow.log 
long_query_time=2 
# Reduced wait_timeout to prevent idle clients holding connections. 
wait_timeout = 10 
connect_timeout = 10 
interactive_timeout = 10 
# Enable it for vast improvement and it may be all you need to tweak. 
query_cache_limit = 1M 
query_cache_size = 128M 
query_cache_type = 1 
[mysqld_safe] 
open_files_limit = 8192 
[mysqldump] 
quick 
max_allowed_packet = 16M 
[myisamchk] 
key_buffer = 256M # 64M for 1GB, 128M for 2GB, 256 for 4GB 
sort_buffer = 256M # 64M for 1GB, 128M for 2GB, 256 for 4GB 
read_buffer = 64M # 16M for 1GB, 32M for 2GB, 64M for 4GB 
write_buffer = 64M # 16M for 1GB, 32M for 2GB, 64M for 4GB 
[mysqlhotcopy] 
interactive-timeout 

ne pas oublier de redémarrer le serveur mysql essayer avant de nouveau

+0

Cela a fonctionné, mais je pense que pour économiser de l'espace et de la bande passante, je ne sauvegarde pas les logs/tables inutiles (ce qui a également résolu mon problème). – Ivan