MySQL 5.5 çoğaltma performansı ile iki makine, çoğunlukla deyim tabanlı çoğaltma ile myISAM tabloları arasında ciddi bir sorun yaşıyorum. İkili günlükler ve mysql veri dizininin her ikisi de aynı Fusion ioDrive'da bulunur.
Çoğaltmayı yaklaşık olarak duraklatmamız gerektiğinde sorun son zamanlarda büyük bir sorundu. 3 saat. Başka bir yük olmadan tekrar yakalamak yaklaşık 10 saat sürdü.
Çoğaltmanın performansını nasıl artırabilirim? Sadece 1 mySQL iş parçacığı veri yazarken, B makinesi temelde boştadır (küçük, IO, 16 üzerinden maksimum 2 çekirdek, çok fazla RAM). İşte sahip olduğum bazı fikirler:
- Satır tabanlı çoğaltmaya geçin. Testlerde bu sadece% 10-20 performans artışı sağladı
- Çok iş parçacıklı çoğaltma ile mySQL 5.6 sürümüne geçin. Verilerimizi kolayca ayrı veritabanlarına bölebiliriz ve karşılaştırmalar bunun yardımcı olacağını gösteriyor, ancak kod üretime hazır görünmüyor.
- Çoğaltmayı hızlandırmaya yardımcı olacak bazı yapılandırma değişkenleri
Birincil sorun, 3 saat durakladıktan sonra yakalamak için 10 saat gerekiyorsa, çoğaltmanın 10 saat içinde 13 saat veri yazdığı veya gelen veri hızının% 130'unda yazabileceği anlamına gelir. Master makineye yakın gelecekte en az iki kez yazar, bu yüzden umutsuzca çoğaltma performansını iyileştirmek için bir yola ihtiyaç duyar.
Makine A:
- Usta
- 24GB RAM
- 1.2 TB Fusion ioDrive2
- 2x E5620
- Gigabit ara bağlantısı
my.cnf
:
[mysqld]
server-id=71
datadir=/data_fio/mysqldata
socket=/var/lib/mysql/mysql.sock
tmpdir=/data_fio/mysqltmp
log-error = /data/logs/mysql/error.log
log-slow-queries = /data/logs/mysql/stats03-slowquery.log
long_query_time = 2
port=3306
log-bin=/data_fio/mysqlbinlog/mysql-bin.log
binlog-format=STATEMENT
replicate-ignore-db=mysql
log-slave-updates = true
# Performance Tuning
max_allowed_packet=16M
max_connections=500
table_open_cache = 2048
max_connect_errors=1000
open-files-limit=5000
# mem = key_buffer + ( sort_buffer_size + read_buffer_size ) * max_connections
key_buffer=4G
max_heap_table_size = 1G
tmp_table_size = 4G
myisam_sort_buffer_size = 256M
sort_buffer_size=4M
read_buffer_size=2M
query_cache_size=16M
query_cache_type=2
thread_concurrency=32
user=mysql
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql]
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock
Makine B:
- Köle
- 36GB RAM
- 1.2 TB Fusion ioDrive2
- 2x E5620
- Gigabit ara bağlantısı
my.cnf
:
[mysqld]
server-id=72
datadir=/data_fio/mysqldata
socket=/var/lib/mysql/mysql.sock
tmpdir=/data_fio/mysqltmp
log-error = /data/logs/mysql/error.log
log-slow-queries = /data/logs/mysql/stats03-slowquery.log
long_query_time = 2
port=3306
# Performance Tuning
max_allowed_packet=16M
max_connections=500
table_open_cache = 2048
max_connect_errors=1000
open-files-limit=5000
# mem = key_buffer + ( sort_buffer_size + read_buffer_size ) * max_connections
key_buffer=4G
max_heap_table_size = 1G
tmp_table_size = 4G
myisam_sort_buffer_size = 256M
sort_buffer_size=4M
read_buffer_size=2M
query_cache_size=16M
query_cache_type=2
thread_concurrency=32
user=mysql
symbolic-links=0
plugin-load=archive=ha_archive.so;blackhole=ha_blackhole.so
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql]
socket=/var/lib/mysql/mysql.sock
[client]
socket=/var/lib/mysql/mysql.sock