mysql知识盘点【叁】_主从复制

标签: mysql sql 主从复制 行复制 语句复制
8人阅读 评论(0) 收藏 举报
分类:

系列文章:

mysql知识盘点【壹】_SQL优化

mysql知识盘点【贰】_InnoDB引擎索引


本文内容部分整理自《高性能mysql》,链接如下:





两种复制方式


mysql支持两种复制方式:基于语句的复制和基于的复制。

基于语句的复制(逻辑复制)在mysql 3.23版本就已存在,基于行的版本在5.1版本引入。

两种方式都是通过在主库记录二进制日志,在备库重放日志的方式来实现异步的数据复制。
但是区别在于,基于语句复制时,日志中记录的是sql语句;基于行复制时,日志中记录的是变化了的数据。


复制的流程图如下:




复制三个步骤:


1.主库把数据更改记录到二进制日志(binarylog)中;

2.备库将主库上的日志复制到自己的中继日志(relay log)中;

3.备库读取中继日志中的事件,将其重放到备库数据之上;

而在复制的过程中,会有一定的延迟,原因在于主库更新数据是多线程操作,而从库更新数据是单线程。从库使用单线程更新是要考虑语句顺序问题。


语句复制和行复制相对比,各自特点如下:


基于语句复制:主库记录造成数据修改的语句,在从库上再执行一遍。好处实现简单,缺点必须串行实现。

基于行复制:将实际数据(变化了的数据)放在二进制日志中,好处是可以正确地复制每一行,缺点是当进行全表操作时复制代价大,时间点恢复也实现复杂。


配置主从


1.配置主库my.cnf文件


log_bin = mysql-bin
server_id = 10


2.配置授权账号及查看主库状态


grant replication slave on *.* to slave@192.168.1.11 identified by '123456' ;
show master status;



3.配置从库my.cnf


log_bin = mysql-bin
server_id = 12
relay_log = /var/lib/mysql/mysql-relay-bin
log_slave_updates = 1
read_only = 1


4.从库连接主库


change master to master_host='server1',
master_user = 'slave';
master_password = '123456',
master_log_file = 'mysql_bin.000001',
master_log_pos = 0;


5.查看复制状态


show slave status/G


正常状态为

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

6.开始复制


start slave;


主从不同步解决思路


1.先查看主库

show processlist;  --  查看下进程是否Sleep太多。发现很正常。

show master status;  -- 也正常。


+-------------------+----------+--------------+-------------------------------+
| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB              |
+-------------------+----------+--------------+-------------------------------+
| mysqld-bin.000001 |     3260 |              | mysql,test,information_schema |
+-------------------+----------+--------------+-------------------------------+
1 row in set (0.00 sec)


2.查看从库


show slave status\G 

                                             

Slave_IO_Running: Yes
Slave_SQL_Running: No -- 说明有错误


3.跳过错误


stop slave;

#表示跳过一步错误,后面的数字可变

set global sql_slave_skip_counter =1;

start slave;

show slave status\G;


Slave_IO_Running: Yes

Slave_SQL_Running: Yes



查看评论

redis知识盘点【叁】_持久化

上篇文章: redis知识盘点【贰】_五种类型 因为redis是内存数据库,其所有数据都是保存在内存中,那么当服务器进程挂掉,数据将丢失。为了解决这个问题,redis支持了将数据持久化到本地...
  • xinzun
  • xinzun
  • 2017-11-09 09:40:13
  • 78

MySQL 主从复制详解(详细)

目录: MySQL 主从原理MySQL 主从配置MySQL 主从一致性检查MySQL 主从错误处理参考链接 一、mysql主从原理 1. 基本介绍 MySQL 内建的复制功能是...
  • u010098331
  • u010098331
  • 2016-03-08 17:10:40
  • 9576

MySQL之——主从复制的一些参数配置

在上一篇博文《MySQL之——主从复制(读写分离)实现》中,向大家介绍了如何配置MySQL的主从复制,以及简要介绍了一些主从同步的简单管理操作。在这篇博文中,将向大家介绍如何对MySQL主从复制的一些...
  • l1028386804
  • l1028386804
  • 2016-10-06 18:27:16
  • 1500

mysql主从复制与读写分离

主从复制与读写分离如何一步步的
  • qinwunan
  • qinwunan
  • 2017-08-08 12:30:21
  • 548

MySQL实践备份恢复与主从复制

  • 2017年04月11日 14:35
  • 1.43MB
  • 下载

MySQL主从复制,双机热备实战

双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步。对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致。 这样做的好处多。 1. 可以做灾备,其中一个坏了可以切换到...
  • forever_young_
  • forever_young_
  • 2016-03-16 13:19:28
  • 1199

mysql5.7主从复制

mysql5.7主从复制(最简配置)
  • caicongyang
  • caicongyang
  • 2016-03-06 15:52:51
  • 2449

MySQL学习笔记--简单主从复制配置

一. 配置Master服务器 1.配置master的my.cnf文件 # vi /etc/my.cnf [mysqld] user=mysql pid_file               = /va...
  • lichangzai
  • lichangzai
  • 2015-12-29 09:34:16
  • 2598

MYSQL主从复制的几种方式

MySQL 主从复制主要有以下几种方式:  基于 SQL 语句的复制(statement-based replication, SBR); 基于行的复制(row-based replication...
  • ztianming
  • ztianming
  • 2017-06-06 11:41:56
  • 1444

高性能MySQL主从复制

温习《高性能MySQL》的复制篇.1 复制概述      Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机...
  • mr_raptor
  • mr_raptor
  • 2016-03-08 23:18:52
  • 2257
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 5418
    积分: 766
    排名: 6万+
    博客专栏
    文章存档
    最新评论