MaxScale binlog server的搭建

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

官方手册:

https://mariadb.com/resources/blog/binlog-server


参考文章:

http://www.linuxidc.com/Linux/2016-12/137892.htm

http://www.sohu.com/a/120438391_487514


缺点:目前binlog server还不支持GTID的复制。

wKiom1lfuzTCdceWAADNVrhJq18091.png

实验拓扑图:


wKiom1lfuzXg5-WDAACBo37piV4775.png

步骤1

Node1上创建复制权限的账户:

> grant replication client,replication slave,select on *.* to 'rpl'@"192.168.2.%" identified by 'rpl';

这是给从库复制用的账号,同时也是maxscale拉取binlog的账户,它比常规的slave 账户多了一个select权限。

 

 

先把Node2挂到node1下,模拟没有binlog server之前的架构:

过程无非就是导出node1的全量数据,在node2上恢复并change master node1,具体步骤略过。

 


Node3 上安装maxscale:

rpm -ivh maxscale-2.1.4-1.rhel.6.x86_64.rpm


mkdir  /data/binlog/ -p

chown maxscale.maxscale /data/binlog/ -R

 

vim/etc/maxscale.conf 内容如下:

[maxscale]                                                                                                                 

threads=4   # 根据CPU核心数量来设置

 

## 连接到Master的信息

[Replication]

type=service

router=binlogrouter

version_string=5.6.36-log  

version_string 参数用于将主库的版本信息传递到从库,MaxScale sends server handshakepacket to clients


router_options=server-id=13,heartbeat=30,transaction_safety=1,rcompatibility=1,send_slave_heartbeat=1

 

binlogdir=/data/binlog   # 这个目录属主属组必须是maxscale

user=rpl

passwd=rpl

 

#说明:

#server-id 设置的是maxscaleid,不能与主库或者从库重名。

#heartbeat=30表示当maxscale30秒内没有接收到主库推送的binlog日志,发送心跳检查

#transaction_safety=1 用于启用binlog日志中的不完整事务检测。当MariaDBMaxScale启动时,如果当前binlog文件已损坏或找到不完整的事务,则可能会出现错误消息。在正常工作期间,binlog事件不会分配到从库,直到事务已经提交。默认值为off,设置transaction_safety= on以启用不完全事务检测。【类似relay_log_recovery = ON的作用】

#send_slave_heartbeat=1开启心跳检查

 

 

## 提供给slave连接的信息

[ReplicationListener]

type=listener

service=Replication

protocol=MySQLClient

port=5308

 

## maxscale后端管理端口

[MaxAdmin Service]

type=service

router=cli

 

[MaxAdmin Listener]

type=listener

service=MaxAdmin Service

protocol=maxscaled

socket=default

 

 

 

vim /data/binlog/master.ini 加上如下的内容:

[binlog_configuration]

master_host=192.168.2.11   # 主库地址

master_port=3306             #主库端口号

master_user=rpl              #master的复制账号

master_password=rpl       # master的复制密码

filestem=mysql    # 表示拉过来的binlog文件以mysql.***这种命名方式。我的主库也是mysql.*这种命名方式

添加这个master.ini文件,以便启动maxscale后自动去拉取主库的目前的全部binlog文件(即便后来主库的binlog过期后被自动purge掉了,maxscale服务器上的binlog还会保存着的)

 

然后,在node3上开启maxscale服务:

/etc/init.d/maxscale start

稍等片刻,node3会把主库的全部binlog都拉过来。

wKioL1lfu43TiG1eAAA9A9yYRFo483.png


日志记录在/var/log/maxscale/maxscale.log 里面。

 

ss -lnt|grep 5308 端口起来的话。

 

mysql -urpl -prpl -h 127.0.0.1 -P 5308 即可登陆到maxscale控制台,和mysql使用起来一样。

 

 

现在我们把node4这个新的从库加到node3binlog server 下面:

首先,将node1的全备份数据导入到node4

然后head -35 all.sql 全备份里面找到类似:

CHANGE MASTER TOMASTER_LOG_FILE='mysql.000004', MASTER_LOG_POS=2254 这样的记录。

 

node4上执行change master操作:

> CHANGE MASTER TO MASTER_HOST='192.168.2.13' ,

 MASTER_PORT=5308,

 MASTER_USER='rpl',

 MASTER_PASSWORD='rpl',

 MASTER_LOG_FILE='mysql.000004',

 MASTER_LOG_POS=2254 ;

注意上面的change master操作中,我们只改了下master的地址和端口、复制用的用户名、密码。

因为binlog server实际上和master的数据是一样的,它只直接把masterbinlog拖过来的。


 

同样的操作,我们可以把node2也挂到binlog server下面。

在node2上:

show slave status\G 记录下Exec_Master_Log_PosMaster_Log_File

stop slave;

reset slave all;

然后使用change master将上级指向binlog server即可。

 


其他maxscale的命令:

node3上,执行show slave hosts; 可以看到

wKioL1lfu6qh1WyQAAAmBw2TjsE858.png

还可以登陆maxscale控制台:

maxadmin -S /tmp/maxadmin.sock 

MaxScale> show services  等其他很多查看状态的命令,可使用help提示。这里不是重点。










本文转自 lirulei90 51CTO博客,原文链接:http://blog.51cto.com/lee90/1945438,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
关系型数据库 MySQL Java
Flink作业报错:Caused by: The connector is trying to read binlog starting at GTIDs ..., but this is no longer available on the server
Flink作业报错:Caused by: The connector is trying to read binlog starting at GTIDs ..., but this is no longer available on the server
Flink作业报错:Caused by: The connector is trying to read binlog starting at GTIDs ..., but this is no longer available on the server
|
5月前
|
数据采集 关系型数据库 MySQL
大数据-业务数据采集-FlinkCDC The MySQL server is not configured to use a ROW binlog_format
大数据-业务数据采集-FlinkCDC The MySQL server is not configured to use a ROW binlog_format
51 1
|
关系型数据库 MySQL
binlog server还是不靠谱吗?
1、背景 MySQL包含许多种日志,其中包括:redo log、undo log、error log、binlog等等,其中binlog是区别其他关系型数据库所独有的,也是MySQL中最重要的日志之一,其作用是用于主备复制、闪回、基于时间点恢复等等;本文基于公司产品需求,对比研究5.7版本下binlog server备份binlog的功能,以及该工具的优缺点。
997 0
|
监控 关系型数据库 大数据
|
Oracle 关系型数据库 MySQL
|
1月前
|
存储 SQL 关系型数据库
mysql 的ReLog和BinLog区别
MySQL中的重做日志和二进制日志是确保数据库稳定性和可靠性的关键组件。重做日志主要用于事务的持久性和原子性,通过记录数据页的物理修改信息来恢复未提交的事务;而二进制日志记录SQL语句的逻辑变化,支持数据复制、恢复和审计。两者在写入时机、存储方式及配置参数等方面存在显著差异。
|
4月前
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
944 4
|
5月前
|
SQL 关系型数据库 MySQL
【揭秘】MySQL binlog日志与GTID:如何让数据库备份恢复变得轻松简单?
【8月更文挑战第22天】MySQL的binlog日志记录数据变更,用于恢复、复制和点恢复;GTID为每笔事务分配唯一ID,简化复制和恢复流程。开启binlog和GTID后,可通过`mysqldump`进行逻辑备份,包含binlog位置信息,或用`xtrabackup`做物理备份。恢复时,使用`mysql`命令执行备份文件,或通过`innobackupex`恢复物理备份。GTID模式下的主从复制配置更简便。
673 2
|
5月前
|
SQL 关系型数据库 MySQL
【MySQL】根据binlog日志获取回滚sql的一个开发思路
【MySQL】根据binlog日志获取回滚sql的一个开发思路