1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

MySQL-Konfiguration auslesen

Dieses Thema im Forum "macOS & OS X Server" wurde erstellt von Sellighsphire, 14.02.07.

  1. 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
     
  2. dpetri

    dpetri Grahams Jubiläumsapfel

    Dabei seit:
    30.08.05
    Beiträge:
    104
    Würde sagen, dazu benutzt Du am Besten die PHP-Funktion "parse_ini_file" :)
     
  3. 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
     
  4. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    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
     
  5. 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
     
  6. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    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.
     
  7. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    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«
     
  8. Danke.

    Werde ich nachher gleich austesten

    Grüße
    Jens
     
  9. 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
     
  10. dpetri

    dpetri Grahams Jubiläumsapfel

    Dabei seit:
    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.
     
  11. 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
     
  12. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    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
     
  13. 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
     
  14. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    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
     
  15. dpetri

    dpetri Grahams Jubiläumsapfel

    Dabei seit:
    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.
     

Diese Seite empfehlen