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