ฉันมีปัญหาร้ายแรงกับประสิทธิภาพการทำสำเนา MySQL 5.5 ระหว่างสองเครื่องส่วนใหญ่เป็นตาราง myISAM ที่มีการจำลองแบบตามคำสั่ง บันทึกไบนารีและไดเรกทอรีข้อมูล mysql อยู่ใน Fusion ioDrive เดียวกัน
ปัญหาเป็นปัญหาใหญ่เมื่อเร็ว ๆ นี้เมื่อเราต้องการหยุดการจำลองแบบชั่วคราว 3 ชั่วโมง. ใช้เวลาประมาณ 10 ชั่วโมงในการติดตามอีกครั้งโดยไม่มีโหลดอื่น ๆ
ฉันจะเพิ่มประสิทธิภาพของการจำลองแบบได้อย่างไร โดยทั่วไปแล้วเครื่อง B ไม่ได้ใช้งาน (น้อย, IO, 2 maxed out cores จาก 16, RAM ฟรีจำนวนมาก) เนื่องจากมีเพียง 1 mySQL thread เท่านั้นที่กำลังเขียนข้อมูล นี่คือความคิดของฉัน:
- สลับไปที่การจำลองแบบแถว ในการทดสอบนี่ให้ผลเพียง 10-20% เท่านั้น
- อัพเกรดเป็น mySQL 5.6 ด้วยการจำลองแบบหลายเธรด เราสามารถแบ่งข้อมูลของเราออกเป็นฐานข้อมูลแยกกันได้อย่างง่ายดายและการเปรียบเทียบดูเหมือนว่าบ่งชี้ว่าสิ่งนี้จะช่วยได้ แต่โค้ดดูเหมือนจะยังไม่พร้อมใช้งาน
- ตัวแปรการกำหนดค่าบางอย่างที่จะช่วยเร่งความเร็วการจำลองแบบ
ปัญหาหลักคือถ้าใช้เวลา 10 ชม. หลังจากหยุดชั่วคราวเป็นเวลา 3 ชั่วโมงหมายความว่าการจำลองข้อมูลกำลังเขียนข้อมูล 13 ชั่วโมงใน 10 ชม. หรือสามารถเขียนที่ความเร็ว 130% ของข้อมูลที่เข้ามาฉันกำลังมองหา อย่างน้อยสองครั้งที่การเขียนบนเครื่อง Master ในอนาคตอันใกล้ดังนั้นต้องการวิธีปรับปรุงประสิทธิภาพการจำลองแบบอย่างมาก
เครื่อง A:
- เจ้านาย
- 24GB ราม
- ฟิวชั่น 1.2TB ioDrive2
- 2x E5620
- กิกะบิตเชื่อมต่อระหว่างกัน
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
เครื่อง B:
- ทาส
- 36GB ราม
- ฟิวชั่น 1.2TB ioDrive2
- 2x E5620
- กิกะบิตเชื่อมต่อระหว่างกัน
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