天天看点

MySQL主从复制技术之常用配置参数

1、基本参数

      bind-address=192.168.1.151

      server_id=513306

      #(主从不相同,规范建议:后IP+端口)

      skip_name_resolve=off

      #(跳过主机名/域名解析)

      transaction-isolation=read-committed

2、关于binlog二进制日志参数

      log_bin=/mysql/log/3306/binlog/itpuxdb-binlog #(必需)

      log_bin_index=/mysql/log/3306/binlog/itpuxdb-binlog.index #(必需)

      binlog_format=row #(必需)

      binlog_rows_query_log_events=on #二进制日志中记录更详细的SQL操作 #(必需)

      sync_binlog = 1 #默认,MySQL每次提交事务之前会将二进制同步到磁盘上,保证服务器崩溃时不会丢失事件

      innodb_flush_log_at_trx_commit=1  #默认,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去。

      --------------------------------------------------------------------------------------------------------------------

      log_bin_trust_function_creators = 1 #默认为0,同步函数和存储过程

      max_binlog_size = 2048M #默认为1024M

      expire_logs_days = 7 # binlog保留多少天,看具体安排

      binlog_cache_size = 1M #默认是32K,binlog缓存的大小,设置要当心,建议1~4M,根据业务繁忙情况

      innodb_support_xa = 1 #这个参数是在主库上设置的,默认是自动开启的。

      看到XA首先想到的就是分布式事务了,这个参数确保事务日志写入bin-log的顺序是事务的time-line是一致的。

      这样在系统崩溃的时候,启用日志恢复,可以严格按照时间线来恢复数据库。

3、关于relay_log中断日志参数

     relay_log = /mysql/log/3306/relaylog/itpuxdb-relay.log

     relay-log-recover = 1

     #I/O thread crash safe -IO线程安全

     打开replication中继日志崩溃恢复模式,replication支持中继日志的自我修复功能。

     当slave丛库宕机后,如果replay-log发送损坏,导致一部分中继日志没有处理,就自动放弃未执行的replay-log,

     重新从master上获取日志,完成了中继日志的恢复,该参数表示当前接收到的relay-log全部删除,

     然后从SQL线程回放到位置重新拉取)

     relay_log_info_repository = table

     # SQL thread crash safe  -SQL线程安全

     默认是file,SQL线程的数据回放是写数据库操作,relay-info是写文件操作,这两个操作很难保证一致性,

     relay-info将写入到mysql.slave_relay_log_info 这张表中)

     master_info_repository = table

     #默认是file,IO线程也是接收一个个的event,将接收到的event,

     通过设置参数master_info_repository 可以将master-info信息写到什么位置,性能上比设置为FILE有很高的提升; 

     可靠性也得到保证,设置为TABLE后,master-info将信息保存到mysql.slave_master_info

4、关于同步方式的参数

      loose_rpl_semi_sync_master_enabled = 1

      #MySQL 5.6开启主的半同步复制(rpl_semi_sync_master_enabled)

      loose_rpl_semi_sync_slave_enabled = 1

      #MySQL 5.6开启从的半同步复制(rpl_semi_sync_slave_enabled)

      loose_rpl_semi_sync_master_timeout = 5000 #超时5秒,切回异步

      rpl_semi_sync_master_wait_for_slave_conut = 1 #至少收到1个slave发回的ack

      rpl_semi_sync_master_wait_point=AFTER_SYNC #MySQL5.7的方法;开启无损复制

      rpl_semi_sync_master_wait_point=AFTER_COMMIT #MySQL5.7的方法;开启半同步复制

5、关于GTID的参数

      gtid_mode = on

      log_slave_updates = 1

      enforce_gtid_consistency = 1

      gtid_mode:

      - on :产生GTID,slave只接收带GTID的事务

      -ON_PERMISSIVE:产生GTID,slave接受不带GTID事务也接受带GTID的事务

      -OFF:不产生GTID,slave只接受不带参GTID的事务

      -OFF_PERMISSIVE:不产生GTID,slave接受不带GTID事务也接受带GTID的事务

      enforce-gtid-consistency:

      -on:当发现语句/事务不支持GTID时,返回错误信息

      -WARN:当发现不支持语句/事务,返回警告,并在日志中记录警告信息

       -OFF:不检查是否有GTID不支持的语句/事务

        log-slave-updates:

        当从库log_slave_updates参数没有开启时,从库的binlog不会记录来源于主库的操作记录。