Mysql主从复制(基于Log)

Master(主)操作

实验机:两台

IP:192.168.1.5      192.168.1.10

操作系统:Linux RedHat 6.5

Mysql版本:5.6.31

#  vim /etc/my.cnf
#log_slave_updates  注释掉这行
server-id=1         将id号改为1

Slave(从)操作

#:vim /etc/my.cnf  
#log_slave_updates  注释掉这行
server-id=2     #将server_id改为2

主从(操作):
mysql>reset master;
mysql>reset slave all;
~~~~~~~~~~~~~192.168.1.5~~~~~~~~~~~~~~~~
做主:
grant replication slave on *.* to ‘losnau‘@‘192.168.1.%‘ identified by ‘losnau‘;  #给13slave进行授权复制
mysql>flush tables with read lock;
mysql>show master status;
mysql>unlock tables;
做从
change master to master_host=‘192.168.1.5‘,master_user=‘losnau‘,master_password=‘losnau‘, master_log_file=‘mysql-bin.000001‘,master_log_pos=120;
mysql>start slave;
mysql>show slave status\G;

~~~~~~~~~~~~~~192.168.1。10~~~~~~~~~~~~~~~~~~~
做主
grant replication slave on *.* to ‘losnau‘@‘192.168.1.%‘ identified by ‘losnau‘;  #给13slave进行授权复制
mysql>flush tables with read lock;
mysql>show master status;
mysql>unlock tables;
做从
change master to master_host=‘192.168.1.10‘,master_user=‘losnau‘,master_password=‘losnau‘, master_log_file=‘mysql-bin.000001‘,master_log_pos=120;
mysql>start slave;
mysql>show slave status\G;

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

常见故障解决

1. 一般的异常只需要跳过一步即可恢复
模拟故障,创建主从复制之前.在主上创建一个CC库,
在开启主从复制,从的IO都是为YES后,在主上创建一个gongda库,看看从库是否同步成功?
如果成功,接下来模拟故障.在主上将CC删除掉.在从看slave状态是不是就开始报错了??
解决方法如下:
> stop slave;
>SET GLOBAL sql_slave_skip_counter = 1;  遇到错误直接跳过,继续恢复
> start slave;

2.断电导致主从不能同步时,通主库的最后一个bin-log日志进行恢复
在主库服务器上,mysqlbinlog mysql-bin.xxxx > binxxxx.txt
tail -n 100000 binxxxx.txt > tail-binxxxx.txt
vim tail-binxxxx.txt 打开tail-binxxxx.txt文件找到最后一个postion值
然后在从库上,change host to 相应正确的值
>stop slave;
>change master to master_host=‘ip‘, master_user=‘username‘, master_password=‘password‘, master_log_file=‘mysql-bin.xxxx‘, master_log_pos=xxxx;
>start slave;
>show slave status\G;

3.主键冲突、表已存在等错误代码如1062,1032,1060等,可以在mysql主配置文件指定
略过此类异常并继续下条sql同步,这样也可以避免很多主从同步的异常中断
[mysqld]
slave-skip-errors = 1062,1032,1060

时间: 2024-10-07 18:12:26

Mysql主从复制(基于Log)的相关文章

MySQL主从复制 - 基于二进制日志(理论篇)

mysql日志类型 1    二进制日志 2    事务日志 3    一般查询日志 4    中继日志 5    慢查询日志 二进制日志 二进制日志通常记录的是可能潜在引起数据库发生改变的操作,每一个操作我们称为一个event. 二进制日志记录一个event的时候,通常还会记录timestamp,position(偏移量offset),server-id,event本身. 二进制日志的数据存储形式,形如mysql-bin.xxxxxx这种,二进制日志除了mysql-bin.xxxxxx之外,还

[mysql] mysql主从复制(基于日志点)

怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作:  1.1.版本一致  1.2.初始化表,并在后台启动mysql  1.3.修改root的密码 2.修改主服务器master:   #vi /etc/my.cnf       [mysqld]       log-bin=mysql-bin   //[必须]启用二进制日志       server-id=222      //[必须]服务器唯一ID,默认是1,一般取IP最后一段 3.修改从服务器sl

mysql主从复制基于5.6版本

主库IP:192.168.77.238  用户名:root 密码:kocla@2018 my.cnf配置文件,所在目录/etc/my.cnf 从库IP:192.168.77.223  用户名:root 密码:kocla@2019 my.cnf配置文件 主库和从库要在my.cnf中将log-bin开启,即配置log-bin文件的名称. 主库使用 show variables like '%log_bin%' ;查看二进制日志是否开启 在使用show binary logs;查看二进制日志文件,二进

青蛙学Linux—MySQL主从复制

MySQL主从复制基于MySQL官方提供的MySQL Replication技术,实现了数据从一个主服务器向一个或多个从服务器的同步.主从复制不仅是一种备份方式,更为MySQL高可用提供了数据同步的基础. 1.MySQL Replication原理 在MySQL Replication中,主服务器称为Master,从服务器称为Slave.Slave会从Master上拉取MySQL的二进制日志文件(Binary Log),然后将该日志解析为SQL语句并完全顺序的执行这些SQL语句以达到与Maste

MySQL主从复制——MySQL-5.6基于GTID及多线程的复制

一.Mysql 5.6 新特性 .... 复制功能的改进 ⒈支持多线程复制,(slave-parallel-workers=0     0: 表示禁用多线程功能:)事实上是针对每个database开启相应的独立线程.即每个库有一个单独的(sql thread),如果线上业务中,只有一个database或者绝大多数压力集中在个别database的话,多线程并发复制特性就没有意义了. ⒉支持启用GTID,对运维人员来说应该是一件令人高兴的事情,在配置主从复制,传统的方式里,你需要找到binlog和P

Mysql主从复制、二进制日志、基于GTID的主从复制、双主复制

 一.主从复制的工作原理   Mysql在Master与slave之间实现整个复制的过程由3个线程来完成的,   其中两个线程(SQL线程和IO线程)在 Slave端,   另外一个线程(IO)在Master端   要实现Mysql的复制必须首先打开Master端的binary log(也就是二进制日志)否则无法实现. Mysql复制基本过程如下:   (1)Slave上面的IO 线程链接上Master,并且请求指定日志文件的位置(或者 从开始的日志之后的日志内容)   (2)Master接收到

基于Docker的MySQL主从复制搭建及原理

为什么基于Docker搭建? 资源有限 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docker容器之间相互独立,有独立ip,互不冲突 Docker使用步骤简便,启动容器在秒级别 利用Docker搭建主从服务器 首先拉取docker镜像,我们这里使用5.7版本的mysql: docker pull mysql:5.7 然后使用此镜像启动容器,这里需要分别启动主从两个容器 Master(主): docker run -p 3339:3306 --

基于Centos 7搭建MySQL主从复制及读写分离

博文目录一.MySQL主从复制原理二.MySQL读写分离原理三.搭建MySQL主从复制四.配置MySQL读写分离 在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性.高可用性还是高并发等各个方面都是完全不能满足实际需求的.因此,一般来说实际生产环境中都是通过主从复制(Master--Slave)的方式来同步数据,再通过读写分离来提升数据库的并发负载能力这样的方案来进行部署与实施的. 如下图所示,一台MySQL主服务器带两台MySQL从服务器做数据复制,前端应用在进

基于SSL的Mysql主从复制

一.实验目的: 1.跨越互联网加密复制 mysql基于SSL加密连接,为安全从服配置证书,从服拿账号到主服复制时,必须得到主服验证.双方建立SSL会话. 二.实验架构 在分布式架构中,时间必须同步 主节点: station20:192.168.1.20 从节点: station21:192.168.1.21 三.实验步骤 1.建立ssh互信 [[email protected] ~]# echo -e"192.168.1.21\tstation21\tstation21.example.com&

mysql主从复制实现(基于mysql5.5版本)

一,mysql主从复制原理介绍: mysql的复制是基于二进制日志实现的,二进制日志记录的是一切可能引起数据库发生改变的操作,因此,二进制日志对mysql十分重要,利用它可以实现数据库的即时点还原,对于备份恢复数据库意义重大. mysql复制中,主服务器的事务操作提交后,会将事件记录到二进制日中去,这时从服务器会启动IO_Thread来与主服务器通信,将主服务器中的二进制日志中的事件复制到本地并保存在本地的中继日志中,而后,从服务器会通过SQL_Thread将中继日志中的事件提取出来在数据库中进