MySQL richtig konfigurieren
Moin,
da viele User die MySQL-Dokumentation nicht, oder nur oberflächlich, lesen und sich über einen langsamen MySQLd wundern, stelle ich hier eine vollständige und bewährte Konfiguration (/etc/mysql/my.cnf) bereit. Diese ist für Server ab 2048MB RAM, auf denen neben MySQL 5.1 noch weitere Dienste, beispielsweise Web- und/oder Mailserver, betrieben werden, ausgelegt. Die Pfade sollten selbstverständlich an das jeweilige System angepasst werden und die Datenbanken in UTF-8 vorliegen. Ist Letzteres nicht möglich, weil eine Client-Applikation noch kein UTF-8 ünterstützt, so ist utf8 jeweils durch latin1 zu ersetzen. Desweiteren wird die InnoDB-Engine mit der Collation utf8_bin als Default gesetzt, sollte dies nicht gewünscht sein, so können die beiden entsprechenden Zeilen einfach kommentiert werden. Desweiteren ist zu beachten, dass vor dem Einspielen dieser Konfiguration ein mysqldump zwingend notwendig ist. Danach müssen auch die bisherigen InnoDB-Files gelöscht werden, diese werden beim nächsten Start automatisch neu angelegt:
my.cnf:
Datenbank-Backup zurückspielen:
Für das weitere Tuning, sofern noch nötig, sind die Scripte mysqltuner.pl und tuning-primer.sh sowie die offizielle MySQL 5.1 Dokumentation äusserst hilfreich.
Gruss,
Joe User
Letzte Aktualisierung: 03.08.2010
da viele User die MySQL-Dokumentation nicht, oder nur oberflächlich, lesen und sich über einen langsamen MySQLd wundern, stelle ich hier eine vollständige und bewährte Konfiguration (/etc/mysql/my.cnf) bereit. Diese ist für Server ab 2048MB RAM, auf denen neben MySQL 5.1 noch weitere Dienste, beispielsweise Web- und/oder Mailserver, betrieben werden, ausgelegt. Die Pfade sollten selbstverständlich an das jeweilige System angepasst werden und die Datenbanken in UTF-8 vorliegen. Ist Letzteres nicht möglich, weil eine Client-Applikation noch kein UTF-8 ünterstützt, so ist utf8 jeweils durch latin1 zu ersetzen. Desweiteren wird die InnoDB-Engine mit der Collation utf8_bin als Default gesetzt, sollte dies nicht gewünscht sein, so können die beiden entsprechenden Zeilen einfach kommentiert werden. Desweiteren ist zu beachten, dass vor dem Einspielen dieser Konfiguration ein mysqldump zwingend notwendig ist. Danach müssen auch die bisherigen InnoDB-Files gelöscht werden, diese werden beim nächsten Start automatisch neu angelegt:
- Code: Select all
# Zuerst ein Backup der Datenbanken anlegen
mysqldump --flush-logs --master-data --lock-all-tables --delete-master-logs --all-databases -uroot -p > /tmp/mysqldump.sql
# Danach die InnoDB-Files löschen
rm /var/lib/mysql/ibdata[0-9] /var/lib/mysql/ib_logfile[0-9]
my.cnf:
- Code: Select all
[client]
character-sets-dir = /usr/share/mysql/charsets
character-set-server = utf8
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysql]
character-sets-dir = /usr/share/mysql/charsets
character-set-server = utf8
prompt = \u@\h [\d]>\_
no_auto_rehash
[mysqladmin]
character-sets-dir = /usr/share/mysql/charsets
character-set-server = utf8
[mysqlcheck]
character-sets-dir = /usr/share/mysql/charsets
character-set-server = utf8
[mysqldump]
character-sets-dir = /usr/share/mysql/charsets
character-set-server = utf8
max_allowed_packet = 32M
quote_names
quick
[mysqlimport]
character-sets-dir = /usr/share/mysql/charsets
character-set-server = utf8
[mysqlshow]
character-sets-dir = /usr/share/mysql/charsets
character-set-server = utf8
[isamchk]
character-sets-dir = /usr/share/mysql/charsets
character-set-server = utf8
key_buffer_size = 256M
[myisamchk]
character-sets-dir = /usr/share/mysql/charsets
character-set-server = utf8
key_buffer_size = 256M
[myisampack]
character-sets-dir = /usr/share/mysql/charsets
character-set-server = utf8
[mysqld_safe]
err_log = /var/log/mysql/mysql.err
[mysqld]
user = mysql
port = 3306
bind-address = 127.0.0.1
socket = /var/run/mysqld/mysqld.sock
character-sets-dir = /usr/share/mysql/charsets
character-set-server = utf8
collation-server = utf8_bin
default-storage-engine = InnoDB
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /var/tmp
slave-load-tmpdir = /var/tmp
language = /usr/share/mysql/english
log-bin = /var/lib/mysql/mysql-bin
relay-log = /var/lib/mysql/relay.log
relay-log-index = /var/lib/mysql/relay.index
relay-log-info-file = /var/lib/mysql/relay.info
master-info-file = /var/lib/mysql/master.info
#master-host = <hostname>
#master-user = <username>
#master-password = <password>
#master-port = 3306
#auto_increment_increment = 10
#auto_increment_offset = 1
server-id = 1
back_log = 50
sync_binlog = 1
binlog_cache_size = 1M
max_binlog_size = 100M
binlog-format = MIXED
expire_logs_days = 7
slow-query-log = 1
slow-query-log-file = /var/lib/mysql/slow-query.log
slave_compressed_protocol = 1
lower_case_table_names = 1
safe-user-create = 1
delay-key-write = ALL
myisam-recover = FORCE,BACKUP
key_buffer_size = 256M
join_buffer_size = 2M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
max_allowed_packet = 32M
max_heap_table_size = 64M
tmp_table_size = 64M
table_cache = 1024
table_definition_cache = 1024
query_cache_type = 1
query_cache_size = 128M
query_cache_limit = 16M
thread_concurrency = 8
thread_cache_size = 24
max_connections = 24
ft_max_word_len = 20
ft_min_word_len = 3
long_query_time = 2
local-infile = 0
log-warnings = 2
log-slave-updates
log-queries-not-using-indexes
skip-external-locking
skip-character-set-client-handshake
#skip_innodb
innodb_thread_concurrency = 8
innodb_buffer_pool_size = 2G
innodb_additional_mem_pool_size = 128M
innodb_data_home_dir = /var/lib/mysql
innodb_log_group_home_dir = /var/lib/mysql
innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
innodb_flush_method = O_DIRECT
innodb_log_file_size = 256M
innodb_log_buffer_size = 64M
innodb_log_files_in_group = 2
innodb_flush_log_at_trx_commit = 2
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
innodb_file_per_table
[mysqlhotcopy]
interactive_timeout
Datenbank-Backup zurückspielen:
- Code: Select all
mysql -uroot -p < /tmp/mysqldump.sql
Für das weitere Tuning, sofern noch nötig, sind die Scripte mysqltuner.pl und tuning-primer.sh sowie die offizielle MySQL 5.1 Dokumentation äusserst hilfreich.
Gruss,
Joe User
Letzte Aktualisierung: 03.08.2010