MySQL richtig konfigurieren

MySQL, PostgreSQL, SQLite
mediman
Posts: 13
Joined: 2006-05-24 13:58

Re: MySQL richtig konfigurieren

Post by mediman » 2006-05-30 01:51

BraveSurfer wrote:Ich habe o.g. Konfiguration auf mehreren Root-Servern P IV 3 GHZ, 1024 MB Speicher getestet. Die Serverlast geht hierdurch jedoch deutlich in die Höhe, weshalb ich wieder auf die "Standardwerte" meiner Linux Distrubtion (Suse 9.3 / MySQL 4.1) umgestellt habe, die bezüglich Speicherzuweisung in vielen Punkten deutlich unter den o.g. Werten liegt.

Konnte jemand ähnliche Erfahrungen machen?
Das liegt in der Natur der Sache.
Wenn man zu großzügige *_buffer_size Werte wählt, dann kommts zum Swapping, was die Serverlast erhöht.

Man muss die my.cnf im Kontext mit der Konfiguration des gesamten Servers sehen.

Am Besten, mal die relevanten Werte beobacbten:

Load averages
Current processes
Processes by CPU
Memory usage
Swap
Connections per second
Kilobytes received per second
Kilobytes sent per second
Queries per second
Percentage of slow queries
Opened vs. Open tables (<= 80)
Table cache usage (>= 0.5 <= 0.9)
Key buffer read hit rate (<= 0.01)
Key buffer write hit rate (<= 0.5)
Thread cache hit rate (<= 0.05)
Thread cache usage (>= 0.8 <= 0.9)
Temporary table disk usage (<= 0.5)
Sort merge pass rate (<= 0.001)
Query cache enabled (>= 1 and <= 1)
Query cache miss rate (<= 0.1)
Query cache prune rate (<= 0.05)

Das alles beobachten und dann kann man die hier vorgestellte hervorragede my.cnf feintunen.

Eine mysqlstatus.php kann ich gerne zur Verfügung stellen.

mediman

bravesurfer
Posts: 170
Joined: 2003-05-08 12:17
Location: Stuttgart

Re: MySQL richtig konfigurieren

Post by bravesurfer » 2006-05-30 19:53

mediman wrote: Eine mysqlstatus.php kann ich gerne zur Verfügung stellen.
@ mediman

das wäre prima! Solltest du es hier nicht posten können/wollen gerne auch via eMail an bravesurfer[at]gmx[dot]de

Werde mich im Anschluss und mit Hilfe deiner mysqlstatus.php mal ans Feintuning begeben, vielen Dank für den Hinweis und big Thx im Voraus


[EDIT by Joe User: eMaladresse maskiert]

mediman
Posts: 13
Joined: 2006-05-24 13:58

Re: MySQL richtig konfigurieren

Post by mediman » 2006-06-01 21:26

BraveSurfer wrote:
mediman wrote: Eine mysqlstatus.php kann ich gerne zur Verfügung stellen.
@ mediman

das wäre prima! Solltest du es hier nicht posten können/wollen gerne auch via eMail an bravesurfer[at]gmx[dot]de

Werde mich im Anschluss und mit Hilfe deiner mysqlstatus.php mal ans Feintuning begeben, vielen Dank für den Hinweis und big Thx im Voraus


[EDIT by Joe User: eMaladresse maskiert]
Ich überarbeite sie flink und dann kommt sie raus ...

mediman

bravesurfer
Posts: 170
Joined: 2003-05-08 12:17
Location: Stuttgart

Re: MySQL richtig konfigurieren

Post by bravesurfer » 2006-06-04 10:01

mediman wrote: Ich überarbeite sie flink und dann kommt sie raus ...
O.k das wäre fein, danke!

mecki0
Posts: 4
Joined: 2006-07-10 19:08
Location: Hessen

Probleme mit Ä Ü Ö etc.

Post by mecki0 » 2006-07-10 19:31

Hi,

ich habe einen Server bei Strato:
Plesk-Version psa v8.0.1_build80060618.11 os_SuSE 10.0
Betriebssystem Linux 2.6.13-15.10-default
PHP 4.4.0
MYSQL 4.1.13

Leider bekomme ich die charsets Einstellungen nicht hin:

Beispiel:

Code: Select all

Tabellenstruktur für Tabelle....
Was muss ich ändern damit die Selbstlaute richtig angezeigt werden.

LG
Mecki

Code: Select all

[client]
character_set = latin1
default-character-set = latin1

[mysqld]
character-set-server = latin1
default-character-set = latin1
collation-server = latin1_german1_ci

[mysqldump]
character-sets-dir = latin1
default-character-set = latin1

[mysql]
character-sets-dir = latin1
default-character-set = latin1

[isamchk]
character-sets-dir = latin1

[myisamchk]
character-sets-dir = latin1

[mysqladmin]
character-sets-dir = latin1
default-character-set = latin1

[mysqlcheck]
character-sets-dir = latin1
default-character-set = latin1

[mysqlimport]
character-sets-dir = latin1
default-character-set = latin1

[mysqlshow]
character-sets-dir = latin1
default-character-set = latin1

[myisampack]
character-sets-dir = latin1

Servervariablen und -einstellungen über phpmyadmin

Code: Select all

 Variable   	 Wert für diese Sitzung   	 Globaler Wert 

character set client 	        utf8 	        latin1
character set connection 	    latin1 	      latin1
character set database 	      latin1 	      latin1
character set results 	       utf8 	        latin1
character set server 	        latin1 	      latin1
character set system 	        utf8 	        utf8
character sets dir 	/usr/share/mysql/charsets/ 	/usr/share/mysql/charsets/
collation connection 	latin1_german1_ci 	latin1_german1_ci
collation database 	  latin1_german1_ci 	latin1_german1_ci
collation server 	    latin1_german1_ci 	latin1_german1_ci

mecki0
Posts: 4
Joined: 2006-07-10 19:08
Location: Hessen

Re: MySQL richtig konfigurieren

Post by mecki0 » 2006-07-11 05:07

PS

Es wäre toll, wenn mir das jemand vernünftig erklären könnte, mein englisch ist grottenschlecht und ich komme mit der Dokumentation nicht klar. Falls ich irgendwelche Befehle wegen php in der Konsole eingeben muss, wäre es schön, mir die Befehle zu posten. Ich denke mal, in der my.cnf ich alles richtig.

Der Mitarbeiter vom Support bei Strato konnte oder wollte mir nicht weiter helfen, aber er hat mir dieses Forum empfohlen :wink:

LG
Mecki

mecki0
Posts: 4
Joined: 2006-07-10 19:08
Location: Hessen

Re: MySQL richtig konfigurieren

Post by mecki0 » 2006-07-11 18:12

Hat sich erledigt :-D

Anonymous

Re: MySQL richtig konfigurieren

Post by Anonymous » 2006-07-13 16:59

Ich habe ein Strato Power Server S mit 512MB Ram
ich habe alles auf Standard vieleicht hat Jemand ein Tipp was ich
an der my.cnf noch verbessern könnte :lol:
# Example MySQL config file for medium systems.
#
# This is for a system with little memory (32M - 64M) where MySQL plays
# an important part, or systems up to 128M where MySQL is used together with
# other programs (such as a web server)
#
# You can copy this file to
# /etc/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options (in this
# installation this directory is /var/lib/mysql) or
# ~/.my.cnf to set user-specific options.
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.

# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /var/lib/mysql/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
old-passwords

# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking

# Replication Master Server (default)
# binary logging is required for replication
# log-bin

# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 1

# Replication Slave (comment out master section to use this)
#
# To configure this host as a replication slave, you can choose between
# two methods :
#
# 1) Use the CHANGE MASTER TO command (fully described in our manual) -
# the syntax is:
#
# CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,
# MASTER_USER=<user>, MASTER_PASSWORD=<password> ;
#
# where you replace <host>, <user>, <password> by quoted strings and
# <port> by the master's port number (3306 by default).
#
# Example:
#
# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
# MASTER_USER='joe', MASTER_PASSWORD='secret';
#
# OR
#
# 2) Set the variables below. However, in case you choose this method, then
# start replication for the first time (even unsuccessfully, for example
# if you mistyped the password in master-password and the slave fails to
# connect), the slave will create a master.info file, and any later
# change in this file to the variables' values below will be ignored and
# overridden by the content of the master.info file, unless you shutdown
# the slave server, delete master.info and restart the slaver server.
# For that reason, you may want to leave the lines below untouched
# (commented) and instead use CHANGE MASTER TO (see above)
#
# required unique id between 2 and 2^32 - 1
# (and different from the master)
# defaults to 2 if master-host is set
# but will not function as a slave if omitted
#server-id = 2
#
# The replication master for this slave - required
#master-host = <hostname>
#
# The username the slave will use for authentication when connecting
# to the master - required
#master-user = <username>
#
# The password the slave will authenticate with when connecting to
# the master - required
#master-password = <password>
#
# The port the master is listening on.
# optional - defaults to 3306
#master-port = <port>
#
# binary logging - not required for slaves, but recommended
#log-bin

# Point the following paths to different dedicated disks
#tmpdir = /tmp/
#log-update = /path-to-dedicated-directory/hostname

# Uncomment the following if you are using BDB tables
#bdb_cache_size = 4M
#bdb_max_lock = 10000

# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /var/lib/mysql/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql/
#innodb_log_arch_dir = /var/lib/mysql/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50

# The safe_mysqld script
[safe_mysqld]
err-log=/var/lib/mysql/mysqld.log

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

bravesurfer
Posts: 170
Joined: 2003-05-08 12:17
Location: Stuttgart

Re: MySQL richtig konfigurieren

Post by bravesurfer » 2006-07-13 20:12

Mecki0 wrote:Hat sich erledigt :-D
Hallo Mecki0,

das Forum lebt von den Erfahrungen anderer, deshalb wäre es nett, wenn du kurz die Problemstellung und Lösung schildern könntest.

Mfg

BraveSurfer

mecki0
Posts: 4
Joined: 2006-07-10 19:08
Location: Hessen

Re: MySQL richtig konfigurieren

Post by mecki0 » 2006-07-14 02:46

@BraveSurfer,

sorry stimmt :wink:

Naja MYSQL und PHP sind unschuldig*g Es lag am php-Editor. Das Mistding hat die Selbstlaute falsch angezeigt, aber da drauf muss man erst mal kommen*nerv Ich habe mir einen anderen gesaugt und das Problem ist gelöst.

Liebe Grüße
Mecki

bravesurfer
Posts: 170
Joined: 2003-05-08 12:17
Location: Stuttgart

Re: MySQL richtig konfigurieren

Post by bravesurfer » 2006-07-15 17:16

Mecki0 wrote: Naja MYSQL und PHP sind unschuldig*g Es lag am ..... p
@Mecki0,

big Thx

Mfg

BraveSurfer

don
Posts: 11
Joined: 2006-11-15 17:15

Re: MySQL richtig konfigurieren

Post by don » 2006-11-15 17:16

mediman wrote:
Eine mysqlstatus.php kann ich gerne zur Verfügung stellen.

mediman
Moin,

kann mir einer von Euch diese Datei zur Verfügung stellen?
Danke schon mal.

cu

st3fan
Posts: 10
Joined: 2005-07-11 10:34

Re: MySQL richtig konfigurieren

Post by st3fan » 2006-11-22 15:18

Seas, mich würde diese mysqlstatus.php auch sehr intressieren!

ciao

stefan2k1
Posts: 24
Joined: 2003-09-09 21:01

Re: MySQL richtig konfigurieren

Post by stefan2k1 » 2006-12-24 20:18

Jo die hätte ich auch mal gerne, kann sie mir mal bitte jemand schicken ?

Danke !

neodg
Posts: 38
Joined: 2005-10-19 08:50

mysql Script Laufzeit

Post by neodg » 2007-01-19 10:45

Frage:

wie kann ich bei mysql-Abfragen die maximale Laufzeit einstellen die eine Abfrage dauern darf und dann abgebrochen wird?

User avatar
isotopp
Posts: 471
Joined: 2003-08-21 10:21
Location: Berlin

Re: mysql Script Laufzeit

Post by isotopp » 2007-01-19 22:25

neodg wrote:Frage:

wie kann ich bei mysql-Abfragen die maximale Laufzeit einstellen die eine Abfrage dauern darf und dann abgebrochen wird?
Das kann man nicht.

simcen
Posts: 333
Joined: 2003-02-12 14:35
Location: Bern, Schweiz

Re: MySQL richtig konfigurieren

Post by simcen » 2007-01-22 08:13

Hallo Zusammen

Ich habe bei mir drei InnoDB-Tables auf dem MySQL.
Zuerst habe ich eine Standard-Konfiguration verwendet und wollte testerhalbe mal auf die getunte Config umsteigen.

Beim Starten des mysqld erhalte ich für alle Datenbanken folgende Meldung:

Code: Select all

070122  8:09:18 [ERROR] /usr/sbin/mysqld: Incorrect information in file: './wasp60a/trade_cl.frm'
So wie ich sehe, ist in der getunten Config an der Engine geschraubt worden, nur komme ich nicht drauf welcher Parameter es ist.

Auf http://bugs.mysql.com/bug.php?id=66 wird das Problem als Versions-Konflikt eingestuft. Bei mir blieb ich allerdings auf der gleichen Version und habe kein Dump nachträglich hineingezogen.

Code: Select all

$ mysql --version
mysql  Ver 14.12 Distrib 5.0.24a, for pc-linux-gnu (i486) using readline 5.1
Habt ihr mir einen Hint, welchen Parameter ich umstellen muss?

Danke für die Unterstützung!
Simon

Anonymous

Re: mysql Script Laufzeit

Post by Anonymous » 2007-01-30 21:40

neodg wrote:Frage:

wie kann ich bei mysql-Abfragen die maximale Laufzeit einstellen die eine Abfrage dauern darf und dann abgebrochen wird?
Nicht direkt.


Du kannst in der my.ini im Bereich folgende Zeile schreiben:


max_join_size=50000000


Damit unterbindet MySQL alle Abfragen die mehr als 50 Millionen Zeilen
zurückgeben würde, damit schützt den Server vor falschen Abfragen.

Ups... da fehlte doch ein ON statement :)


Richard

Anonymous

Re: MySQL richtig konfigurieren

Post by Anonymous » 2007-04-23 22:58

Hallo!
Nette Konfiguration, man sollte aber entweder max_connections einschränken oder read_buffer_size und sort_buffer_size heruntersetzen.
Letztere sind wirklich extrem hoch. Ich habe einen MySQL-Server mit 4GB RAM und aktuell etwa 17GB Daten, dort habe ich sort_buffer_size=512K und read_buffer_size=256K und fahre damit sehr gut.

Mit der vom TE geposteten Konfiguration verbraucht MySQL im Extremfall (falls ich mich nicht verrechnet habe...):

MyISAM:

Code: Select all

key_buffer_size(384M) + (read_buffer_size(8M) + sort_buffer_size(8M)) * max_connections(default ist 100) = 1984M
InnoDB:

Code: Select all

innodb_buffer_pool_size(384M) + innodb_log_buffer_size(8M) + innodb_additional_mem_pool_size(20M) + (innodb_buffer_pool_size(384M) / 20) + OS_THREADS(10000 wenn 8M < innodb_buffer_pool_size < 1000M) * 368 = ~434M
Macht zusammen 2418MB. Für Kisten mit 1-2GB also nicht umbedingt zu empfehlen. ;)

Viele Grüße

Salgar


PS: Für InnoDB-User ist es lohnenswert innodb_flush_method=O_DIRECT zu setzen (falls das Dateisystem/der Kernel das unterstützt). Damit nutzt InnoDB das (überflüssige) OS-Caching nicht mehr (InnoDB hat einen intern einen eigenen Cache dafür).

€: PPS: query_cache, u.a. fehlt in der Rechnung.

tomotom
Posts: 330
Joined: 2006-09-22 13:37

Re: MySQL richtig konfigurieren

Post by tomotom » 2007-08-03 00:26

Joe User wrote:... hier eine vollständige und bewährte Konfiguration (/etc/my.cnf) bereit. Diese ist für Server mit 1024MB bis 2048MB RAM, auf denen neben MySQL 4.1/5.0 auch noch weitere Dienste, beispielsweise Web- und/oder Mailserver, betrieben werden, ausgelegt.
Mich würden die Unterschieden in der Konfiguration zu kleineren Server (512MB) und größeren 4GB interesssieren. Habt Ihr da auch Erfahrungswerte?

paulo-
Posts: 29
Joined: 2004-06-13 12:55

Re: MySQL richtig konfigurieren

Post by paulo- » 2007-10-02 08:28

Was ist denn aus der mysqlstatus.php Datei geworden?

schüri
Posts: 94
Joined: 2009-01-09 10:01

Re: MySQL richtig konfigurieren

Post by schüri » 2009-02-28 17:45

Code: Select all

skip_show_database


diese Einstellung hat bei mir dazu geführt, dass ich im phpmyadmin keine Datenbanken sehen konnte

vllt sollte man das lieber auskommentieren?!?

Code: Select all

#skip_show_database

schüri
Posts: 94
Joined: 2009-01-09 10:01

Re: MySQL richtig konfigurieren

Post by schüri » 2009-02-28 21:28

matzewe01 wrote:Wenn Du Deine Datenbanken lennst, und andere nicht mit

"show databases"

nicht alle Datenbanken sehen können sollen, kann man es auch drinnen lassen.


hmm aber wie soll ich sie denn im phpMyAdmin bearbeiten können, wenn ich sie nicht sehen kann?

das Passwort fürs phpMyAdmin kenn ja nur ich :wink:

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: MySQL richtig konfigurieren

Post by Joe User » 2009-02-28 22:36

schüri wrote:

Code: Select all

skip_show_database


diese Einstellung hat bei mir dazu geführt, dass ich im phpmyadmin keine Datenbanken sehen konnte

vllt sollte man das lieber auskommentieren?!?

Die Konfiguration beinhaltet auch sicherheitsrelevante Optionen, diese gehört dazu. Wenn eine Applikation damit nicht klar kommt, dann ist der Einsatz dieser Applikation zu überdenken!
Was Dein PMA angeht, so ist PMA falsch konfiguriert, siehe PMA-Dokumntation...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

schüri
Posts: 94
Joined: 2009-01-09 10:01

Re: MySQL richtig konfigurieren

Post by schüri » 2009-03-01 19:21

ok werde ich mir mal anschauen