MySQL主从复制

Posted 南宫葬月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL主从复制相关的知识,希望对你有一定的参考价值。

简介:

   mysql主从复制也称主从同步,他是构建数据库高可用集群架构的基础,将一台主机的数据复制到多台主机,并重新应用日志中的SQL语句实现复制功能

MySQL支持单向,双向,链式级联,异步复制

5.5版本新增半同步复制  5.6新增GTID复制  5.7新增多源复制/并行复制/loss-less复制,复制过程中,一台服务器充当主库,另一个充当从库

常见主从模式:

1)   master------------->slave    单向主从

2)   master <-----------> master  双向主从

3)  master -------->slave1------>slave2  级联主从

4)  master ------->slave    一主多从

       |--------------->slave2

5)master------------>slave   多主一从

     master--------------|^

主从复制原理:

主库 :I/O-dump-thread

从库:I/O-thread  SQL-thread

从库的I/O-thread向主库请求binlog文件,主库I/O-dump-thread响应写入从库的relaylog文件

从库的SQL-thread从relaylog文件中读取语句,转成SQL语句,写入从库

主从复制的重点参数

log-bin 搭建主从复制,必须开启二进制日志

server-id :主从服务器的标识,主从服务器不能一致

server-uuid :  mysql5.6 新增  ,数据库启动自动生成,保存在数据目录下的auto.cnf中

read_only: 设置从库为只读状态      super_read_only: 所有账号包括管理员都会禁止写

binlog_format:   必须为row

log_slave_updates:  获取主服务器上的数据变更信息,写到从服务器的二进制日志中

binlog_error_action:  5.7新增    =ABORT_SERVER  不能写binlog时,mysql会退出(默认)

                =IGNORE_ERROR 不能写入binlog时,关闭binlog功能,会导致主从出现数据库数据不一致的情况

binlog-do-db:  (主库) 选择复制哪个数据库

binlog-ignore-db:  不复制哪个数据库

gtid_mode:决定是否开启gtid模式

enforce-gtid-consistency: 开启gtid模式,该参数也开启

gtid_next:  session级别的变量,下一个gtid,默认automatic

gtid_purged:丢掉的gtid

relay_log:记录从库的IO thread从主库读取来的binlog

replicate_do_table:(从库) 复制指定表

replicate_ignore_table:(从库) 不复制指定表

replicate_do_db:(从库)只复制指定库

replicate_ignore_db:(从库) 不复制指定库

replicate-wild-do-table:使用通配符复制指定表

replicate-wild-ignore-table:使用通配符不复制指定表

master-info-repository:=table  记录主从状态&配置

relay_log_info_repository:=table  记录斌binlog应用位置记录到relay.info中

relay_log_recovery:(从库)(默认关闭)(建议开启=1)

relay_log_purge:(从库)(建议开启)清除已执行的relaylog

slave_net_timeout :设置网络超时时间点

并行复制参数:

slave_parallel_type=‘LOGICAL_CLOCK‘

slave_parallel_workers = X  设置X线程执行relaylog中向主库提交的事务

 

以上是关于MySQL主从复制的主要内容,如果未能解决你的问题,请参考以下文章

MySQL中主从复制不同步?

MySQL主从复制和读写分离

MySQL主从复制和读写分离

Linux----------mysql主从复制和基于GTID主从复制

MySQL主从复制

mysql主从复制概述以及配置mysql5.7.10实现简单主从复制