首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL复制性能

MySQL复制性能
EN

Server Fault用户
提问于 2012-07-17 20:16:30
回答 2查看 7.3K关注 0票数 15

对于两台机器之间的MySQL 5.5复制性能,我遇到了严重的问题,主要是基于语句的复制的myISAM表。二进制日志和mysql数据目录都位于同一个融合ioDrive上。

这个问题是一个大问题,最近我们需要暂停复制大约。三个小时。它花了大约10个小时才再次赶上,没有其他负载。

如何提高复制的性能?机器B基本上是空闲的(小,IO,16个内核中有2个最大,空闲内存很多),因为只有一个mySQL线程在写数据。以下是我的一些想法:

  • 切换到基于行的复制。在测试中,这只会提高10-20%的性能。
  • 使用多线程复制升级到mySQL 5.6 .我们可以轻松地将数据分成不同的数据库,基准测试似乎表明这会有所帮助,但代码似乎还没有准备好生产。
  • 一些有助于加速复制的配置变量

主要的问题是,如果停顿3h后需要10h才能赶上,这意味着复制将在10h内写入13h的数据,或能够以130%的速度写入进来的数据。我希望在不久的将来至少双写主计算机,因此迫切需要一种改进复制性能的方法。

机A:

  • 主控
  • 24 Ram
  • 1.2TB融合ioDrive2
  • 2x E5620
  • 千兆互连

my.cnf

代码语言:javascript
运行
复制
[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:

  • 从站
  • 36 Ram
  • 1.2TB融合ioDrive2
  • 2x E5620
  • 千兆互连

my.cnf

代码语言:javascript
运行
复制
[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
EN

回答 2

Server Fault用户

发布于 2012-07-17 20:34:15

这不是一个答案,但您可以考虑钨复制器及其商业产品,以获得更大的灵活性。瓶颈是单核的cpu使用率是100%吗?

票数 4
EN

Server Fault用户

发布于 2012-07-17 20:36:03

所以如果你对奴隶做备份..。你用我的桌子..。您正在锁定表以进行备份以防止损坏。所以,在备份完成之前,复制是无法工作的。然后它就追上来了。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/408631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档