• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

MySQL-Konfiguration auslesen

  • Ersteller Sellighsphire
  • Erstellt am

Sellighsphire

Gast
Hallo!

Wir betreiben hier einen Xserv als Webserver. Darauf läuft ein MAMP und nun möchte ich ein paar Einstellungen an MySQL vornehmen.
Dazu habe ich den Server nach einer cnf durchforstet, aber keine gefunden. Daher muss der Server momentan Standardeinstellungen verwenden. Wenn ich aber eine der vorhandenen cnf-Dateien (big, medium, large, ...) anpasse und als my.cnf in das korrekte Verzeichnis speichere und SQL neu starte, dann rauchen mir alle Webseiten ab, weil der Server scheinbar nicht meine Daten ändert, sondern nur (NUR) meine neue cnf-Datei verwendet, d.h. alle alten Einstellungen sind nicht vorhanden.
Wie kann ich nun die aktuelle Konfiguration herausbekommen, um diese in eine cnf zu speichern. Dann kann ich dort meine Werte anpassen. (Im wesentlichen nur der maximale Speicherbereich für MySQL).

Danke für eure Hilfe
Jens
 

Sellighsphire

Gast
Hallo!

Nette Idee. Blöd nur, dass es keine Datei zum einlesen gibt. Wenn ich diese wissen würde, hätte ich kein Problem. Außerdem könnte ich mir diese dann auch einfach auf der Konsole ansehen.
Ich brauche die aktuellen Einstellungen ohne vorhandene Datei.

Grüße
Jens
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Die von MAMP verwendete my.cnf befindet sich innerhalb des MAMP Verzeichnisses und nicht wie üblich in /etc. Ich hoffe, daß Dein WebServer mit MAMP nicht öffentlich zugänglich ist. MAMP ist sogar für eine Entwicklungsumgebung so dermaßen unsicher gebaut, daß einem schlecht werden könnte. Ein MAMP im Internet ist eine grob fahrlässige Lücke.

Außerdem weigern sich die MAMP Entwickler entgegen der entsprechenden Lizenzen (Apache und GPL) die Quellcodes und configure lines zu den OSS Teilen des Projektes zu veröffentlichen. Daher ist es im Prinzip unmöglich einen MAMP für den produktiven Hostingeinsatz sicher zu bekommen.
Gruß Pepi
 

Sellighsphire

Gast
Hi!

Ich bin wohl einem Irrtum aufgesessen.
Ich war der Meinung, dass ein MAMP lediglich bedeutet, dass ich einen Mac mit Apache, MySQL und PHP verwende.

Ich habe keine Software eines Drittanbieters laufen. Apache, MySQL und auch PHP wurden getrennt installiert und konfiguriert. Ich habe das System nämlich übernommen. Daher kann ich auch nicht sagen, wie die einzelnen Komponenten installiert wurden.
Der Kollege, der das gemacht hat, ist nicht mehr da und auch nicht zu erreichen.

Grüße
Jens
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Hi!

Ich bin wohl einem Irrtum aufgesessen.
Ich war der Meinung, dass ein MAMP lediglich bedeutet, dass ich einen Mac mit Apache, MySQL und PHP verwende.

Ich habe keine Software eines Drittanbieters laufen. Apache, MySQL und auch PHP wurden getrennt installiert und konfiguriert. Ich habe das System nämlich übernommen. Daher kann ich auch nicht sagen, wie die einzelnen Komponenten installiert wurden.
Der Kollege, der das gemacht hat, ist nicht mehr da und auch nicht zu erreichen.

Grüße
Jens

Hallo Jens,

Du kannst über das Terminal die komplette Konfiguration auslesen. Bedingung ist allerdings, dass Du Benutzernamen und Kennwort eines MySQL-Benutzers kennst. Der Super-User von MySQL heißt (auch hier) 'root' und hat in der Regel ein anderes Passwort als der Unix-Benutzer dieses Namens; denn beide haben nur den Namen gemeinsam, sind aber in unterschiedlichen Bereichen zuhause und daher getrennt zu betrachten.

Der Befehl zum auslesen heißt 'SHOW VARIABLES' und kann über die MySQL-Konsole eingegeben werden:

(Terminal):
Code:
[COLOR="Silver"]$[/COLOR] mysql -uroot -p
[COLOR="Silver"]Enter password: [/COLOR]DEINgeheimesPASSWORT

[COLOR="silver"]Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.22-standard

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> [/COLOR]SHOW VARIABLES;
... und dann kommt die Ausgabe der Einstellungen. Die grauen Zeichen sind Ausgaben, die schwarzen Zeichen Deine Eingaben. Bitte das Semikolon nach dem Befehl nicht vergessen.
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Die von MAMP verwendete my.cnf befindet sich innerhalb des MAMP Verzeichnisses und nicht wie üblich in /etc. Ich hoffe, daß Dein WebServer mit MAMP nicht öffentlich zugänglich ist. MAMP ist sogar für eine Entwicklungsumgebung so dermaßen unsicher gebaut, daß einem schlecht werden könnte. Ein MAMP im Internet ist eine grob fahrlässige Lücke.

Außerdem weigern sich die MAMP Entwickler entgegen der entsprechenden Lizenzen (Apache und GPL) die Quellcodes und configure lines zu den OSS Teilen des Projektes zu veröffentlichen. Daher ist es im Prinzip unmöglich einen MAMP für den produktiven Hostingeinsatz sicher zu bekommen.
Gruß Pepi

Ich kann Dir nur beipflichten, zudem man sich fragen muss, was mir MAMP gibt, was ich als normaler OS X-Benutzer nicht schon habe. Einzig MySQL ist noch nicht dabei, dies kann ich aber ohne Kosten und Registratur bei mysql.com herunterladen. Es ist sogar ein entspannender Doppel-Klick-Installierer dabei. Bei Problemen mit MAMP kann dir häufig nur noch ein anderer MAMPist helfen, ansonsten sind es deutlich mehr, die die nicht-proprietäre Zusammenstellung (häufig als LAMP bezeichnet, aber bitte nicht XAMPP) verwenden. Das ist ein bisschen so, als würde man die Fahrprüfung auf einem Auto mit Automatikgetriebe machen. Ergebnis wäre, dass man Schaltgetriebe nicht fahren kann (auch nicht darf). Vorteil? Ich denke, nicht.

Vielleicht eine Hilfe für Interessierte:

MySQL Query Browser läuft nicht :(

Beitrag in »Apache, PHP, MySQL - so läuft's«
 

Sellighsphire

Gast
Danke.

Werde ich nachher gleich austesten

Grüße
Jens
 

Sellighsphire

Gast
Hi!

Ich habe die Konfiguration ausgelesen und angepasst. Habe die my.cnf auf den Server geschaufelt und wollte mysql neustarten. Dazu verwende ich folgenden Befehl:

Code:
mysqladmin -shutdown
Danach bekam ich die Fehlermeldung:
error: Found option without preceding group in config file: /etc/my.cnf at line: 1

Danach habe ich [client] an den Anfang gestellt.
Dann gab's folgende Fehlermeldung:
mysqladmin: unknown variable 'back_log=50'

Nach dem Auskommentieren gabs den Mecker bei der nächsten Zeile und so weiter...

Jetzt steh ich schon wieder da, wie der Ochs vorm Berg. Was ist denn nun das Problem?

Grüße
Jens

P.S. Aktuelle My.cnf
Code:
[client]
back_log = 50
basedir = /Library/MySQL/
binlog_cache_size = 32768
bulk_insert_buffer_size = 8388608
character_set = latin1
character_sets = latin1 dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5
concurrent_insert = ON
connect_timeout = 5
convert_character_set
datadir = /Library/MySQL/var/
default_week_format = 0
delay_key_write = ON
delayed_insert_limit = 100
delayed_insert_timeout = 300
delayed_queue_size = 1000
flush = OFF
flush_time = 0
ft_boolean_syntax = + -><()~*:""&
ft_min_word_len = 4
ft_max_word_len = 254
ft_max_word_len_for_sort = 20
ft_stopword_file = (built-in)
have_bdb = NO
have_crypt = YES
have_innodb = YES
have_isam = YES
have_raid = NO
have_symlink = YES
have_openssl = YES
have_query_cache = YES
init_file
innodb_additional_mem_pool_size = 20971520
innodb_buffer_pool_size = 134217728
innodb_data_file_path = ibdata1:10M:autoextend
innodb_data_home_dir
innodb_file_io_threads = 4
innodb_force_recovery = 0
innodb_thread_concurrency = 8
innodb_flush_log_at_trx_commit = 1
innodb_fast_shutdown = ON
innodb_flush_method
innodb_lock_wait_timeout = 50
innodb_log_arch_dir = ./
innodb_log_archive = OFF
innodb_log_buffer_size = 8388608
innodb_log_file_size = 5242880
innodb_log_files_in_group = 2
innodb_log_group_home_dir = ./
innodb_mirrored_log_groups = 1
innodb_max_dirty_pages_pct = 90
interactive_timeout = 28800
join_buffer_size = 131072
key_buffer_size = 8388600
# neu
key_buffer = 1073741824
bdb_cache_size = 134217728
read_buffer = 2097152
write_buffer = 2097152
# ende
language = /Library/MySQL/share/mysql/english/
large_files_support = ON
license = GPL
local_infile = ON
locked_in_memory = OFF
log = OFF
log_update = OFF
log_bin = OFF
log_slave_updates = OFF
log_slow_queries = OFF
log_warnings = 1
long_query_time = 10
low_priority_updates = OFF
lower_case_file_system = ON
lower_case_table_names = 2
max_allowed_packet = 16777216
max_binlog_cache_size = 4294967295
max_binlog_size = 1073741824
max_connections = 100
max_connect_errors = 10
max_delayed_threads = 20
max_insert_delayed_threads = 20
max_heap_table_size = 16777216
max_join_size = 4294967295
max_relay_log_size = 0
max_seeks_for_key = 4294967295
max_sort_length = 1024
max_user_connections = 0
max_tmp_tables = 32
max_write_lock_count = 4294967295
myisam_max_extra_sort_file_size = 268435456
myisam_max_sort_file_size = 2147483647
myisam_repair_threads = 1
myisam_recover_options = OFF
myisam_sort_buffer_size = 67108864
net_buffer_length = 16384
net_read_timeout = 30
net_retry_count = 10
net_write_timeout = 60
new = OFF
open_files_limit = 510
pid_file = /Library/MySQL/var/xserv.pid
log_error
port = 3306
protocol_version = 10
query_alloc_block_size = 8192
query_cache_limit = 33554432
query_cache_size = 0
query_cache_type = 1
query_prealloc_size = 8192
range_alloc_block_size = 2048
read_buffer_size = 67108864
read_only = OFF
read_rnd_buffer_size = 262144
rpl_recovery_rank = 0
server_id = 0
slave_net_timeout = 3600
skip_external_locking = ON
skip_networking = OFF
skip_show_database = OFF
slow_launch_time = 2
socket = /tmp/mysql.sock
sort_buffer_size = 134217728
sql_mode = 0
table_cache = 512
table_type = MYISAM
thread_cache_size = 0
thread_stack = 196608
tx_isolation = REPEATABLE-READ
timezone = CET
tmp_table_size = 33554432
tmpdir = /var/tmp/
transaction_alloc_block_size = 8192
transaction_prealloc_size = 4096
version = 4.0.21 Complete MySQL by Server Logistics
version_comment = Source distribution
version_compile_os = apple-darwin7.5.0
wait_timeout = 28800
 

dpetri

Grahams Jubiläumsapfel
Registriert
30.08.05
Beiträge
104
Sieht so aus, als ob die MySQL-Version, die auf dem Server läuft, nicht alle von Dir angegebenen Parameter unterstützt.
Am Besten kuckst Du mal über PHP, welche Version genau läuft und schaust mal auf www.mysql.com, welche Konfigurationsparameter hier unterstützt werden.
 

Sellighsphire

Gast
Hallo und guten Morgen...

Das könnte ich ja verstehen, aber ich habe nur die Werte genommen, die ich mit "SHOW VARIABLES" ausgelesen habe.
Ich habe lediglich einige MB-Werte angepasst.
Von daher sollten die Angaben korrekt sein...

Grüße
Jens
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Sorry, daß mir das erst jetzt einfällt...
Warum wirfst Du nicht mal einen Blick in den kostenlosen mySQL Administrator oder die mySQL GUI Tools (wo der Administrator auch enthalten ist)?
Kann ich sehr empfehlen. Falls Du remote nicht so drankommst hilft immer noch ein SSH Tunnel oder auch die Änderungen an einer lokalen Testinstallation vorzunehmen und die my.cnf dann auf den Server zu übertragen.
Gruß Pepi
 

Sellighsphire

Gast
Hi!

Danke für das Tool. Das hat's gebracht. Jetzt konnte ich meine eigene cnf anlegen.
Danke.

Doch leider ist mein Ziel nicht erreicht worden.
Ich wollte die Anfragen schneller abarbeiten. Ich wollte nämlich erreichen, dass der Speicherbereich für die Datenbanken innerhalb des RAM vergrößert wird, da ja bekanntlich Leseoperation auf der HDD um ein zigfaches langsamer ist, als aus dem RAM.

Meine Idee war:

1. Wir haben hier nicht wirklich viele Tabellen und auch wenige Inhalte. Laut Festplattenbelegung ca. 500MB

2. Wenn ich den RAM-Bereich von MySQL wesentlich erhöhe (> 500MB) dann werden nacheinander alle Daten (sofern nicht geändert) aus dem RAM geladen (beim 2. Zugriff), da kein Datum den RAM verlassen muss.
3. Das erstmalige EInlesen wollte ich per Script auf allen vorhandenen Tabellen vornehmen, z.b. SELECT * FROM meine_tabelle
SELECT * FROM meine_tabelle2
...

Doch leider ändert sich an den Anfragen nichts. Ich kann kein Geschwindigkeitszuwachs erkennen. Liegt das vielleicht an der Anfrage, da meine sich wesentlich von den echten Anfragen unterscheidet. Dort sind es natürlich komplexere Anfragen ...
MySQL belegt definitiv mehr Speicher als vorher und beim Einlesen der Daten wächst der Speicherbereich zusätzlich.

Code:
PID COMMAND      %CPU   TIME   #TH #PRTS #MREGS RPRVT  RSHRD  RSIZE  VSIZE
21785 mysqld       0.0%  0:24.59  35    92   440  84.8M  2.87M  86.1M  1.77G
Wo muss ich eigenltlich diese Angaben machen (key_buffer_size, cache_size, irgendwo anders?)?

Wenn mir jemand bei diesem Gedankenspiel unter die Arme greifen könnte? Danke.

Grüße
Jens
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Netter Versuch, nur so haut das nicht hin. mySQL Cached nicht einfach so alles was es da so gesehen hat. Du kannst zwar die Cache Größe deutlich erhöhen und auch sagen, daß alle Queries außer "no cache" gemerkt werden sollen, aber damit alleine ist es nicht getan.

Rein Informativ ist mySQL auf PPC Rechnern aufgrund des langsamen Forkings im Vergleich zu x86 Rechnern langsamer.

uU bringt es Dir mehr wenn Du Deine Queries verbesserst anstatt die Engine ins RAM zwingen zu wollen, was Du sowieso nicht garantieren kannst. Reduziere die Anzahl der Anfragen die Notwendig sind um Deine Daten zu bekommen und nütze so Sachen wie LIMIT und SORT.
Gruß Pepi
 

dpetri

Grahams Jubiläumsapfel
Registriert
30.08.05
Beiträge
104
Schau vor allen Dingen mal, wie in den Tabellen Keys und Indizes gesetzt sind.
Indizes sollten sparsam auf wirklich wichtige Felder gesetzt sein. Ein Übermäßiges Verwenden führt nur dazu, dass alle Anfragen zäh werden.
Außerdem schadet nie eine Normalisierung... Auch redundante Daten (vor allem, wenn diese in Textfeldern gespeichert sind) verlangsamen die Queries.