主从服务器与gtid

主从服务器

一.什么是主从服务器

建立一个和主数据库完全一样的数据库环境,称为从数据库,主数据库一般是准实时的业务数据库。一台服务器充当主服务器,而另外一台服务器充当从服务器。

主服务器会将更新信息写入到一个特定的二进制文件(binlog)中,并会维护文件的一个索引(binlog.index)用来跟踪日志循环,这个日志(binlog)可以记录并发送到从服务器的更新中去。从服务器连接到主服务器之后,从服务器有一个 IO 线程,将主服务器的 binlog 日志拷贝到自己本地,写入一个 relay中继日志(relay log)中。接着从库中有一个SQL线程会从中继日志读取binlog,然后执行binlog日志中的内容,也就是在自己本地再次执行一遍SQL语句,从而使从服务器和主服务器的数据保持一致。
在这里插入图片描述
在这里插入图片描述
主从配置就是围绕这个原理配置,也就是说:从库会生成两个线程,一个I/O线程,一个SQL线程;I/O线程会去请求主库的binlog,并将得到的binlog写到本地的relay-log(中继日志)文件中;主库会生成一个log dump线程,用来给从库I/O线程传binlog;SQL线程,会读取relay log文件中的日志,并解析成sql语句逐一执行。

二.主从服务器的搭建

传统搭建方式

主服务器ip:192.168.77.131
从服务器ip:192.168.77.130
操作系统:centos7(虚拟机VMware)

1.在主从服务器上分别安装mysql5.7。
2.分别创建同步用户repl,并在主服务器上授予从服务器复制权限:

create user 'repl'@'192.168.77.130' identified by 'root$123';
grant replication slave on *.* to 'repl'@'192.168.77.130' identified by 'root$123';
flush privileges;

3.配置主服务器的mysql配置文件:/etc/my.cnf,在[mysqld]下插入:

[mysqld]
server-id = 1077131
binlog-do-db=repl  #需要同步的数据库,如果没有本行表示同步所有的数据库
binlog-ignore-db=mysql  #被忽略的数据库
#

(可以不执行这部分,采用默认同步的数据库,但是服务器id必须不同)

4.查看master状态:
在这里插入图片描述
并记录下binlog文件和文件内偏移量:mysql-bin.000001,4095。

5.回到从服务器,根据上面的记录设置主服务器信息:

change master to master_host='192.168.77.131', master_port=3306, master_user='repl', master_password='root$123', master_log_file='mysql-bin.000001', master_log_pos=4095;

6.开启同步:
在这里插入图片描述
并查看连接状态:
在这里插入图片描述
slave_io_running和slave_sql_running为yes则成功。

gtid搭建方式

1.什么是gtid:

Gtid由两部分组成,前面部分是由snowflake算法按照当前时间生成的uuid,即服务器的id,后面部分是序列号,即第几个事务。一个gtid代表一个事务,由于uuid的唯一性,一个gtid只会生成一次。

二.Gtid的作用:

1用于指代事务的编号
2简化复制,传统的主从服务器的搭建需要指定binlog文件和偏移量position,使用gtid的情况下只需要知道master的ip端口账号密码,就可以进行复制,mysql自动找点同步(MASTER_AUTO_POSITION=1)

三.gtid搭建:

1.将原来传统方式的my.cnf改动注释掉,在主从服务器的my.cnf中加入:

gtid-mode = ON
enforce-gtid-consistency = ON

2.重新同步:

stop slave; 
start slave;

3.查看当前已经执行到的gtid:
在这里插入图片描述
在这里插入图片描述
4.MySQL提供了选项可以控制跳过某些gtid事务。

mysql> stop slave; 
mysql> set @@global.gtid_purged='5b9728c1-aed4-11ea-ba44-000c29f5d996:4';
mysql> begin;
mysql> commit;
mysql> SET SESSION GTID_NEXT = AUTOMATIC;
mysql> start slave;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值