0

嗨,我们有 mysql 主从复制,master 是 mysql 5.6,slave 是 mysql 5.7,master 后面的秒数是 245000,我如何让它更快地赶上。现在复制 100 000 秒需要 6 个多小时。

我的从内存是 128 GB。下面是我的 my.cnf

    [mysqld]

    # Remove leading # and set to the amount of RAM for the most important data
    # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
    innodb_buffer_pool_size = 110G

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

# These are commonly set, remove the # and set as required.
basedir         = /usr/local/mysql
datadir         = /disk1/mysqldata
port = 3306
#server_id = 3
socket = /var/run/mysqld/mysqld.sock
user=mysql
log_error                = /var/log/mysql/error.log
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
join_buffer_size = 256M
sort_buffer_size = 128M
read_rnd_buffer_size = 2M 

#copied from old config
#key_buffer              = 16M
max_allowed_packet      = 256M
thread_stack            = 192K
thread_cache_size       = 8
query_cache_limit       = 1M
#disabling query_cache_size  and type, for replication purpose, need to enable it when going live
query_cache_size        = 0
#query_cache_size        = 64M
#query_cache_type = 1
query_cache_type = OFF
#GroupBy
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
enforce-gtid-consistency
gtid-mode = ON
log_slave_updates=0
slave_transaction_retries   = 100
#replication related changes
server-id               = 2
relay-log               = /disk1/mysqllog/mysql-relay-bin.log
log_bin                 = /disk1/mysqllog/binlog/mysql-bin.log
binlog_do_db            = brandmanagement
#replicate_wild_do_table=brandmanagement.%
replicate-wild-ignore-table=brandmanagement.t\_gnip\_data\_recent
replicate-wild-ignore-table=brandmanagement.t\_gnip\_data
replicate-wild-ignore-table=brandmanagement.t\_fb\_rt\_data
replicate-wild-ignore-table=brandmanagement.t\_keyword\_tweets
replicate-wild-ignore-table=brandmanagement.t\_gnip\_data\_old
replicate-wild-ignore-table=brandmanagement.t\_gnip\_data\_new
binlog_format=row
report-host=10.125.133.220
report-port=3306
#sync-master-info=1
read-only=1
net_read_timeout = 7200
net_write_timeout = 7200
innodb_flush_log_at_trx_commit = 2
sync_binlog=0
sync_relay_log_info=0
max_relay_log_size=268435456
4

1 回答 1

1

很多可能的解决方案。但我会选择最简单的。您是否有足够的网络带宽通过网络发送所有更改?您正在使用“行”二进制日志,这在随机、未索引更新的情况下可能会很好。但是,如果您仅使用索引更改大量数据,那么“混合”二进制日志可能会更好。

于 2016-08-04T06:21:09.963 回答