mysql-5.7.22 主从同步(读写分离) 性能优化方案

1. 因为主服务器要负责更新操作, 他对安全性的要求比从服务器高, 所有有些设置可以修改,比如sync_binlog=1,innodb_flush_log_at_trx_commit = 1 之类的设置,而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog,

innodb_flushlog, innodb_flush_log_at_trx_commit 也可以设置为0来提高sql的执行效率 这个能很大程度上提高效率。另外就是使用比主库更好的硬件设备作为slave。

增加从服务器喽,这个目的还是分散读的压力, 从而降低服务器负载。

2. 判断主从延迟的方法

    MySQL提供了从服务器状态命令,可以通过 show slave status 进行查看,  比如可以看看Seconds_Behind_Master参数的值来判断,是否有发生主从延时。
其值有这么几种:
NULL - 表示io_thread或是sql_thread有任何一个发生故障,也就是该线程的Running状态是No,而非Yes.
0 - 该值为零,是我们极为渴望看到的情况,表示主从复制状态正常

3、主服务器配置优化

找到my.ini配置文件设置:

[mysqld]  
# 开启log-bin日志  
log-bin=mysql-bin   
server-id=1  
# 我这里要复制名为test的数据库  
binlog-do-db=test

然后再找到参数或者添加参数设置如下(这两个参数控制着二进制日志刷新的速度,先按下不表):

innodb_flush_log_at_trx_commit=1  
sync_binlog=1

4、从服务器配置

找到my.ini配置文件设置:

server-id=2                                       #识别服务器的唯一值  
replicate-do-db=test                              #要同步的数据库  
replicate-do-table=test.bakeup_table              #要同步的表,改成自己的数据库和表  
replicate-do-table=test.user                      #要同步的第二个表</span>

在上面设置的参数之后紧随下面的参数:

skip-slave-start=true            #跳过slave线程启动  
read_only=ON                     #开启的只读模式  
relay-log=relay-bin  
relay-log-index=relay-bin.index

猜你喜欢

转载自my.oschina.net/glenxu/blog/1808661