För att kolla och reparera samt optimera alla mysql databaser så kör detta kommando :
mysqlcheck -u root -p –auto-repair –check –optimize –all-databases
Man kan sedan använda denna i cron för att få denna optimering dagligen.
Relaterade länkar om Optimera MySQL med mysqlcheck
Sökningar:
Nedan kommer ett verktyg som är perfekt för att optimera sin MySQL.
Installation av MySQLtuner.pl:
wget mysqltuner.pl/mysqltuner.pl.gz
gzip -d mysqltuner.pl.gz
chmod 0700 mysqltuner.pl
./mysqltuner.pl
Exempel på optimering:
XXX:~/tools# ./mysqltuner.pl
>> MySQLTuner 1.0.0 – Major Hayden
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with ‘–help’ for additional options and output filtering
Please enter your MySQL administrative login: —
Please enter your MySQL administrative password:
——– General Statistics ————————————————–
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.0.51a-24+lenny1
[OK] Operating on 32-bit architecture with less than 2GB RAM
——– Storage Engine Statistics ——————————————-
[--] Status: +Archive -BDB -Federated -InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables: 15M (Tables: 433)
[!!] Total fragmented tables: 43
——– Performance Metrics ————————————————-
[--] Up for: 2d 3h 40m 22s (1M q [10.118 qps], 83K conn, TX: 97M, RX: 350M)
[--] Reads / Writes: 92% / 8%
[--] Total buffers: 58.0M global + 2.6M per thread (100 max threads)
[OK] Maximum possible memory usage: 320.5M (31% of installed RAM)
[OK] Slow queries: 0% (7/1M)
[OK] Highest usage of available connections: 24% (24/100)
[OK] Key buffer size / total MyISAM indexes: 16.0M/7.1M
[OK] Key buffer hit rate: 99.4% (30M cached / 180K reads)
[OK] Query cache efficiency: 78.5% (1M cached / 1M selects)
[!!] Query cache prunes per day: 57655
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 71K sorts)
[!!] Temporary tables created on disk: 49% (25K on disk / 52K total)
[OK] Thread cache hit rate: 99% (76 created / 83K connections)
[!!] Table cache hit rate: 0% (64 open / 16K opened)
[OK] Open file limit used: 12% (128/1K)
[OK] Table locks acquired immediately: 99% (435K immediate / 435K locks)
——– Recommendations —————————————————–
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
Enable the slow query log to troubleshoot bad queries
When making adjustments, make tmp_table_size/max_heap_table_size equal
Reduce your SELECT DISTINCT queries without LIMIT clauses
Increase table_cache gradually to avoid file descriptor limits
Variables to adjust:
query_cache_size (> 16M)
tmp_table_size (> 32M)
max_heap_table_size (> 16M)
table_cache (> 64)
Men då har jag redan ändrat lite för att optimera, men det första man bör göra är att stänga av InnoDB om man inte använder det så har man tjänat ca 100mb i arbetsminne som den tar upp på default.
Lägger också upp en mirror här av mysql optimeraren:
MySQLtuner.pl.gz
Relaterade länkar om Optimera MySQL
Sökningar:
Här kommer en liten snippet för att ersätta text i mysql som ligger mellan två strängar.
update posts set `post_content` = replace(`post_content`,
substring(`post_content` from
locate(‘START’,`post_content`)
for
locate(”SLUT”,`post_content`) -
locate(”Ersätt med vad?”,`post_content`)+5 ),
”)
Sökningar:
Ett litet script som tar backup på dina databaser samt html filer, och komprimerar dom efteråt för enkel förvaring.
#!/bin/sh
#backup 0.1 gsoc
#dumps databases and all html
mkdir /root/tools/backups
cd /root/tools/backups
#Databas
mysqldump –all-databases -p | bzip2 -c > backup-`date +”%b_%d_%Y”`.sql.bz2
#HTML
tar –create –bzip2 –file=backup-`date +”%b_%d_%Y”`.tar.bz2 /var/www/sites
Jag har lite diffusa problem med minnesanvändningen av min VPS just nu, och en temporär(!) lösning kan vara att starta om servern en gång mitt i natten, det har löst det tillfälligt för mig, medans jag optimerar apache & mysql så får det vara så här.
Logga in som root och kör ‘crontab -e’ och lägg sedan in detta för att starta om en gång varje natt klockan 04:00, all output som kan tänkas komma från den kastas bort.
0 4 * * * shutdown -r now >/dev/null
Åter igen så vill jag poängtera att detta endast är en temporär lösning!
Kommentarer