基于日志点的复制

前文讲过日志复制分为基于日志点的复制和基于GTID的复制。

本文就讲一下基于日志点的复制过程。

1.在主DB服务器上建立复制帐号。

create user ‘repl’@ip 段 identified by ‘pwd’;

create user [email protected]‘192.168.1.%‘ identified by ‘repl‘;

授权

grant replication slave on *.* to ‘repl’@ip 段;

grant replication slave on *.* to [email protected]‘192.168.1.%‘;

2.配置主数据库服务器。

bin_log=mysql-bin

启用二进制日志,并指定日志名字。

server_id =100

需要指定serverid,在复制集群中必须唯一。

3.从服务器配置。

bin_log=mysql-bin

server_id=101

# 中继日志

relay_log=mysql-relay-bin

# 可选参数,是否把中继日志记录到当前的二进制日志中,

#如果需要把当前从服务器,作为其他从服务器的复制源,则需要配置。

log_slave_update=on

# 安全配置参数,防止从写入

read_only=on

4.初始化从服务器的数据

mysqldump ,此方法需要加锁。

参数:

–single-transaction :保证数据事务一致性,需要对数据库加锁,会造成阻塞。

-master-data=2 : 记录主库二进制文件的偏移量信息。

xtrabackup –slave-info 热备工具。

使用innodb存储引擎是不会阻塞。

mysqldump -uroot -p -P3308 --single-transaction --master-data --triggers --routines --all-databases >> all.sql

从服务器导入数据

mysql -uroot -p -P3309 <all.sql

5.启动复制链路

需要在从服务器上操作。

change master to MASTER_HOST=’master_host_ip’,

MASTER_USER=’repl’,

MASTER_PASSWORD=’PWD’,

MASTER_LOG_FILE=’MYSQL_LOG_FILE_NAME’,

MASTER_LOG_POS=4;

change master to master_host=‘localhost‘,
    -> master_user=‘repl‘,
    -> master_password=‘repl‘,
    -> MASTER_LOG_FILE=‘mysql-bin.000005‘, MASTER_LOG_POS=2162;

这段可以在导出的文件中查找。

 

show slave status \G

查看复制链路状态。

启动复制链路

start slave;

 

使用show processlist 查看服务线程。

一个IO线程,一个SQL线程。

主服务器查看

 

启动了一个dump线程。

6.验证复制效果:

在节点A执行。

 

1.创建一个表。

2.插入两条记录。

在从服务器上查询。

 

发现数据同步了。

 

优点:

1.是mysql最早支持的复制技术,BUG相对较少。

2.对SQL查询没有任何限制。

3.故障处理比较容易。

缺点:

故障转移时重新获取新主的日志点信息比较困难。

时间: 2024-12-27 22:28:41

基于日志点的复制的相关文章

MySQL二进制日志格式对复制的影响

复制的分类 基于SQL语句的复制 - SBR 主库二进制日志格式使用STATEMENT 在MySQL 5.1之前仅存在SBR模式, 又称之为逻辑复制. 主库记录CUD操作的SQL语句, 从库会读取并重放. 优点 生成的日志量少, 节约网络传输IO 当主从的列的顺序不一致时, SBR依然可以正常工作. 如对大表进行结构修改时, 可以先修改从库, 然后再进行主从切换. 缺点 对不确定性函数无法保证主从数据的一致 对于procedure, trigger, function有可能在主从上表现不一致(S

MariaDB数据库主从复制、双主复制、半同步复制、基于SSL的安全复制实现及其功能特性介绍

一.复制概述 MariaDB/MySQL内建的复制功能是构建大型,高性能应用程序的基础.将MySQL的数据分布到多个系统上去,这种分布的机制,是通过将MySQL的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位

mysql复制原理/基于库的多线程复制原理/基于BLGC的多线程复制原理

单线程主从复制: 从库向主库请求binlog,并将binlog转存到自己的relaylog中,从库重做binlog里面的sql, 主要由以下三个线程完成. dump thread: 在主库上,发送binlog io thread: 在slave上,接收,转存,请求binlog sql thread :在slave 上,重做binlog 基于库的多线程复制原理: 从库向主库请求binlog,并将binlog转存到自己的relaylog中,从库重做binlog里面的sql, 主要由以下三个线程完成.

MySQL学习笔记06基于Binary Log的复制

1.1.1. 相关概念 (1)Binary Log 当变量log_bin的值为ON时,MySQL将启用Binary Log,这将在data目录下产生类似mysql-bin.00001, mysql-bin.00002的二进制日志文件,这些文件记录了数据库中执行的各种操作. binlog_format变量指定了MySQL的二进制日志的格式,支持三种类型的格式: ROW       使用数据表的行记录来记录日志.优点是避免了STATEMENT格式时SQL语句中自增字段的不良影响.缺点时一条更新大量记

MySQL5.6 基于db的并行复制

slave的几个类结构: Master_info:用于IO线程的参数,包括连接master实例的信息. Relay_log_info:用于sql线程,表示relay log相关的信息. Slave_worker:继承Relay_log_info,包括一个job队列,用于并行的worker线程. binlog event的类结构: slave启动的函数栈: dispatch_command start_slave start_slave_threads start_slave_thread sta

一步一步教你搭建基于docker的MongoDB复制集群环境

一步一步教你搭建基于docker的MongoDB复制集群环境 1.安装docker 2.创建MongoDB的Image 3.搭建MongoDB的集群 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中. 1.ubuntu14.04安装docker 参考文档 http://docs.docker.com/installation/ubuntulinux/ 参考文档 http://docs.docker.com/mac/started/ pc@pc-Th

mysql之 mysql 5.6不停机双主一从搭建(活跃双主一从基于日志点复制)

环境说明:版本 version 5.6.25-log 主1库ip: 10.219.24.25主2库ip: 10.219.24.22从1库ip:10.219.24.26os 版本: centos 6.7已安装热备软件:xtrabackup 防火墙已关 双主一从架构图 补充:主从复制原理: http://blog.csdn.net/zhang123456456/article/details/72972701mysql 5.6安装 :http://blog.csdn.net/zhang1234564

MySQL5.6.x 基于GTID的多线程复制-安装配置

操作系统: RHEL6 Or CentOS6 x86_64 mysql 版本: mysql-5.6.20 服务器IP: 10.57.1.131 MySQL-Master 10.57.1.132 MySQL-Slave 一.yum安装mysql # 下载mysql的rpm包 mkdir -pv /root/soft cd /root/soft #这里提供三个版本的官方64位rpm下载路径,根据自己的系统平台选择对应的rpm下载 # RHEL6 And CentOS6 x86_64 的rpm包 wg

如何基于日志,同步实现数据的一致性和实时抽取?

一.背景 事情是从公司前段时间的需求说起,大家知道宜信是一家金融科技公司,我们的很多数据与标准互联网企业不同,大致来说就是: 玩数据的人都知道数据是非常有价值的,然后这些数据是保存在各个系统的数据库中,如何让需要数据的使用方得到一致性.实时的数据呢? 过去的通用做法有几种,分别是: DBA开放各个系统的备库,在业务低峰期(比如夜间),使用方各自抽取所需数据.由于抽取时间不同,各个数据使用方数据不一致,数据发生冲突,而且重复抽取,相信不少DBA很头疼这个事情. 公司统一的大数据平台,通过Sqoop