mysql AB复制

AB复制又称主从复制,实现的是数据同步。如果要做MySQL AB复制,数据库版本尽量保持一致。如果版本不一致,从服务器版本高于主服务器,但是版本不一致不能做双向复制。MySQL AB复制有什么好处呢?有两点,第一是解决宕机带来的数据不一致,因为MySQL AB复制可以实时备份数据;第二点是减轻数据库服务器压力,这点很容易想到,多台服务器的性能一般比单台要好。但是MySQL AB复制不适用于大数据量,如果是大数据环境,推荐使用集群。

然后我们来看看MySQL复制的 3 个主要步骤:

1)主服务器把数据更改记录到二进制日志中,这个操作叫做二进制日志事件;

2)从服务器把主服务器的二进制日志事件拷贝到自己的中继日志(relay log)中;

3)从服务器执行中继日志中的事件,把更改应用到自己的数据上。

主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。 从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行。否则,你必须要小心,以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的

更新之间的冲突。

先用老版的mysql进行实验。

在server3(主机)上

#yum install mysql-server -y   //rhel6.5系统自带的时5.1.71的老版本

#service mysqld start  //mysql初始化

#vim /etc/my.cnf    //编辑mysql配置文件

在最后添加

server-id=1           //添加server-id,主从必须不同,如果设置多个从服务器,每个从服务器必须有一个唯一的 server-id 值,必须与主服务器的以及其它从服务器的不相同。可以认为 server-id 值类似于 IP 地址:这些 ID 值能唯一识别复制服务器群集中的每个服务器实例。

log-bin=mysql-bin     //开启日志二进制文件mysql-bin

#service mysql restart

#mysql_secure_installation

添加root密码redhat

#cd /var/lib/mysql

#mysqlbinlog msql-bin.000001   //查看日志信息

#mysql -predhat

grant replication slave on *.* to [email protected] identified by ‘redhat’;

show master status;

在server4(从机)上

#yum install -y mysql-server

#service mysql start

#vim /etc/my.cnf

添加server-id=2

#mysql_secure_installation

添加root密码为redhat

#change master to master_host=’172.25.0.2’;master_user=’AB’;master_password=’redhat’;master_log_file=’mysql-bin.000001’;mysql_log_pos=’254’;

start slave

show slave status\G;

出现2个YES则连接成功。

在server3上,创建库:create database redhat,能实时同步到server3上

添加表:use redhat;

create table usertb(username varchar(25) not null;password varchar(25) not null);

insert into usertb value (‘user1’,’123’);

server4上也能看到。

下面实现A-->B-->C复制

增加从机server5

在server4的my.cnf中,添加log-bin=mysql-bin

log-slave-updates,

然后执行上面的操作,只是将server4作为主机,server5作为从机。

AB复制只能实时复制,不能将之前的复制过去,为了将server3的之前数据复制到server5上,可以将server3的mysql-bin.000001复制到server5中,在server5上,执行

#mysqlbinlog mysql-bin.000001

查看起始pos id与结束pos id。

#mysqlbinlog mysql-bin.000001 --start-position=起始id --stop-position=结束id  //恢复这两id之间的数据

在对server3的mysql进行操作,在server5上能实时看到变化,

由于mysql是5.1的老版本,主机向从机发送数据时,从机是单线程接受的,速度很慢。新版本5.7能多线程接收,效率能提升80%。它不再通过二进制日志文件来匹配,而是通过gtid。

首先,移除所有老版本mysql。

#service mysqld stop

#rm -fr /var/lib/mysql/*

#rpm -e mysql

#yum remove mysql

直到#rpm -qa | grep mysql 下再无信息出现。

安装

#service mysqld start

#less /var/log/mysqld.log

查看临时root密码

#mysql -p临时密码

修改密码

在server3中

#vim /etc/my.cnf

在最后添加

gtid-mod=on

enforce-gtid-consistency=on  //开启gtid,并强制持续开启。

#service mysqld restart

在mysql中,grant replication slave on *.* to [email protected] identified by ‘redhat’;

在server4中,

进入mysql

change master to master host=’172.25.0.3’,master_user=’AB’,master_password=’redhat’;,master_auto_position=1;

在server3中,创建表usertb,添加值user1、123

在server4中

AB复制成功。

下面对新版本mysql的并行多线程进行实验。

在server4上的my.cnf中,添加

slave-parallel-type=LOGICAL CLOCK    //从机并行方式为逻辑时钟

slave-parallel-worker=16    //并行进程为16

进入mysql,在mysql中show slave\G可看到master uuid

为使实验明显,创建触发器add.sql实现大的数据库。代码为

在server3上

#mysql -p密码 redhat < add.sql

#mysql -p密码

use redhat;

call test1;

在server4上,因为一个表对应一个sql进程,由于采用并发多线程,进入mysql,在mysql中show slave\G可看到gtid增加很快,second_behind_master(延时)很小。

mysqlpump多线程备份:

mysqlpump相对于之前的逻辑备份工具mysqldump来说,优势如下:

  • 支持基于表的并行导出功能(参数–default-parallelism,默认为2,参数–parallel-schemas,控制并行导出的库)
  • 导出的时候带有进度条(参数–watch-progress,默认开启)
  • 支持直接压缩导出导入(参数–compress-output,支持ZLIB和LZ4)

mysqlpump的并行导出功能的架构为:队列+线程,允许有多个队列,每个队列下有多个线程,而一个队列可以绑定1个或者多个数据库。但是,对于每张表的导出只能是单个线程的, 这和mydumper工具是不一样的 ,因为mydumper支持一张表多个线程以chunk的方式批量导出,这在主键是随机的情况下,导出速度还能有提升。

#time mysqlpump -p密码 redhat > redhat.sql

几秒内很快备份完成

#time mysqlpump -p密码 --default-parallelism=2 --compress-out=lz4 redhat > redhat

默认双线程且压缩为lz4的格式

时间: 2024-10-06 05:19:00

mysql AB复制的相关文章

mysql AB复制理论

Mysql AB复制(主从复制)理论 MySQL 支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.即从Master复制到一个或多个Slave上. 实现整个主从复制需要由Master上的IO进程,和Slave上的sql进程和IO进程共同完成.首先打开Master上的 binary log (bin-log)功能(修改配置文件),因为整个复制实际就是slave从master端获取相应的二进制日志,然后在slave端按顺序执行日志中的各种操作.(二进制日志几乎

使用binlog日志, XtraBackup备份工具 ,MySQL AB复制

使用binlog日志 1.1 问题 利用binlog恢复库表,要求如下: 启用binlog日志 创建db1库tb1表,插入3条记录 删除tb1表中刚插入的3条记录 使用mysqlbinlog恢复删除的3条记录 1.2 步骤 实现此案例需要按照如下步骤进行. 步骤一:启用binlog日志 1)调整/etc/my.cnf配置,并重启服务 [[email protected] ~]# vim /etc/my.cnf [mysqld] .. .. log-bin-index=mysql-bin     

MySql ---- ab复制(主从复制)

ab复制(主从复制)可以让mysql实现:1.数据的备份(主服务器的数据全部同步到从服务器)2.可以负载均衡减小主服务器的压力3.真正实现mysql的读写分离 配置方法主服务器:1. 主服务器 my.cnf 配置cat /etc/my.cnf[mysqld]log-bin=mysql_binserver-id=1    不允许重复2. 授权,指定从服务器只能复制binlog,从服务器的ipgrant replication slave on *.* to 'slave'@'192.168.1.1

三、MySQL AB复制

环境:master   192.168.60.135slave    192.168.60.136MySQL版本:5.6OS:centOS6.5(最小化安装) MySQL安装:http://4708705.blog.51cto.com/4698705/1584073 原理:1.主库将更改记录到二进制日志中(bin-log)2.备库读取主库的bin-log日志,并复制到自己的中继日志(relay-log)  {#备库的I/O线程}3.备库读取中继日志(relay-log)中的事件,并恢复到备库  

MySQL5.7的AB复制以及 GTID多线程复制 配置

mysql AB复制: 三台主机:MASTER IP:172.25.35.21 SLAVE1 IP:172.25.35.22 SLAVE2 IP:172.25.35.19 MYSQL版本:mysql5.7 下载安装包 mysql-community-client-5.7.11-1.el6.x86_64.rpm mysql-community-common-5.7.11-1.el6.x86_64.rpm mysql-community-libs-5.7.11-1.el6.x86_64.rpm my

Mysql 异步复制

一:Mysql AB复制的原理:(异步复制)             1.MysqlAB 主机有三个线程相互联系mysql数据库,实施同步.Master主机(Binlog Dump线程):slave主机(IO线程与SQL线程).首先,由slave上执行startslave创建以个I/O线程,I/O线程链接到master上,并请求发送二进制日志文件里面的语句.Master创建一个线程(BinglogDump线程),slave创建一个I/O线程,读取master上的BinglogDump线程,将其拷

Mysql的ab复制

mysql复制在业界里有叫:mysql同步,ab复制等.专业名称就是叫:复制.复制是单向的异步复制,从一个Mysql(Master)复制到另一个Mysql(Slave).实现整个主从复制,需要由Master服务器上的IO进程,和Salve服务器上的Sql进程和IO进程共同完成. 要实现主从复制,首先必须打开Master端的二进制日志(bin-log)功能,因为整个Mysql复制过程实际上就是Slave从Master端获取相应的二进制日志文件,然后在根据相应的Position号在自己Slave端完

Mysql 主从复制(AB复制)

Mysql的主从复制又叫做AB复制,主要作用就是将主服务器上的数据及时复制到从服务器上,来实现数据的同步,这样做的好处有,在进行数据备份时,可以减轻主服务器的运行压力,另外即使主服务器宕机了,也能从从服务器上取得主服务器的数据,从而保证数据不会丢失.这对于一个企业来说是至关重要的.一般在实际生产环境中,由单台mysql作为独立的数据库是完全不能满足实际需要的,无论在安全性,高可用性以及高并发等方面,一般是通过主从复制(Master-Slave)的方式来同步数据,再通过keepalived组件或者

MYSQL 的 AB 复制(主从,双机热备)

MYSQL 的 AB 复制(主从,双机热备)     在实际的应用中,我们经常需要制作一个备份数据库.当我们的主数据库发生问题导致无法正常相应的时候,我们可以 把备用的从数据库街上来顶替主库,以达到不间断服务,热备的作用.在实际应用中从库和主库的数据必须同步,保持一致, 对主库的任何操作通要引发从库上的同样操作. 实现原理: 从库以一定的频率去读取主库的二进制日志文件,按照日志中记录对从库进行同样的操作,以达到同步效果. 注意版本影响: 实现双机的热备首先要了解主从数据库服务器的版本的需求.首先