这是之前做的笔记,整体有些凌乱,后续有时间再整理一下格式!!!!
异步复制:在主节点写入日志即返回成功,默认情况下MySQL5.5/5.6/5.7和mariaDB10.0/10.1的复制功能是异步的。异步复制可以实现最佳的性能,主库把binlog日志发送给从库,这一动作就结束了,并不验证从库,会造成主从库数据不一致。
半同步复制:一主多从模式下,有一个从节点返回成功,即成功,不必等待多个节点全部返回。
MySQL半同步,MySQL5.5由Google贡献的补丁才开始支持半同步复制(semi Replication)模式,该模式可以确保从服务器接收完主服务器发送的binlog日志文件并写入自己的中继日志(relay log)里,然后会给主服务器一个反馈,告诉对方已经接收到完毕,这时主库线程才返回当前session告知操作完成,当出现超时情况时,源主服务器会暂时切换到异步复制模式,直到至少有一台设置为半同步复制模式的从服务器及时收到信息为止。
半同步复制方式:(MySQL5.5版本时谷歌提供的补丁)
※主从同步可以同步多个数据库,也可以设置为一个数据库同步,如果设置一个数据库,在从服务器上其他数据可以写操作。
※半同步复制模式在主服务器和从服务器同时启用,否则主服务器默认使用异步复制模式。
MySQL异步复制的配置:
① master服务器
1、启用二进制日志
log-bin=master-bin.log
2、选择一个唯一的server-id
server-id=(0-2^31-1) 我要求配置的iP+port
3、创建一个具有复制权限的用户
CREATE USER 'slave_user'@'slave_host' IDENTIFIED BY 'slave_pass';
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'slave_host'
显示从服务器同步的状态:SHOW MASTER STATUS;
※连接至主服务器上通过SHOW MASTER STATUS 语句确定其当前的复制坐标。
执行这个命令显示File和Position的值,因为还需要用它们,以便能够把主服务器读取二进制位置时间的起始位置告知从服务器
② slave服务器
1、启用中继日志
relay-log=
2、选择一个唯一的server-id
server-id=(0-2^31-1)(必须唯一,避免冲突,我要求配置的iP+port)
3、连接至主服务器,进行复制
CHANGE MASTER TO
MASTER_HOST='',
MASTER_PORT='',--※主服务器没有使用默认端口需要端口命令指定
MASTER_USER='',
MASTER_PASSWORD='',
MASTER_LOG_FILE='',
MASTER_LOG_POS='';
4、从服务器开始复制,然后查看从服务运行状态
START SLAVE;show slave status\G;
========================================================================
半同步复制的安装配置半同步复制插件在(通用二进制方式安装)/usr/local/mysql/lib/plugin

1、在master和slave库首次启动时,安装插件,并开启半同步复制:mysql>