mariadb multi-source replication(mariadb多主复制)

下文一起来看看mariadb multi-source replication(mariadb多主复制)例子,希望对各位有帮助。

mariadb multi-source replication(mariadb多主复制)
在mariadb-10.0里面加入了多主复制功能.

修改过的语法:
针对每个复制线程会有一个对应的connection_name,而connection_name是default_master_connection变量的值,如果你要操作对应的复制线程,需要将这个变量设置为对应的复制线程的名字。
connection_name的值是长度小于64的任何字符串,并且对大小写不敏感。你需要尽量让连接名固定,因为它会被作为文件名的一部分。

以下是新增加的一些语法:
关注点主要在connection_name,也就是在以前的语法上增加了connection_name,如果没加connection_name,那么默认的就是空(”).
CHANGE MASTER [‘connection_name‘] …
FLUSH RELAY LOGS [‘connection_name‘]
MASTER_POS_WAIT(….,[‘connection_name‘])
RESET SLAVE [‘connection_name‘]
SHOW RELAYLOG [‘connection_name‘] EVENTS
SHOW SLAVE [‘connection_name‘] STATUS
SHOW ALL SLAVES STATUS
START SLAVE [‘connection_name‘...]]
START ALL SLAVES …
STOP SLAVE [‘connection_name‘] …
STOP ALL SLAVES …

原来的老式的连接是一个空字符串 ”,如果你不想用的话可以不用这个连接。
你可以使用change master创建一个新的master 连接。
你可以使用reset slave ‘connect_name’ ALL;完全的删除一个连接。

多源复制的变量
新复制变量 @@default_master_connection 指定了如果你不指定一个连接的话那个链接将会被命令和变量使用。
默认这个值是 ” (默认连接名)。下面的复制变量是针对局部的连接的(换句话说,他们显示了 @@default_master_connection 的值)。
我们正致力于将重要的对于连接局部化。
类型  名称  描述
变量 Max_relay_log_size  relay log的最大值. 如果是0的话,那么在启动的时候就会被设置成 max_binlog_size 的大小
状态 Slave_heartbeat_period  多久从master请求一个心跳包 (以秒计算).
状态 Slave_received_heartbeats  我们从master收到了多少个心跳包.
状态 Slave_running  显示slave是否正在运行。YESS表示 sql 和 IO 线程是活动的。No表示其中任意一个没在运行中。”"表示 @@default_master_connection 不存在。
变量 Sql_slave_skip_counter  复制日志要忽略多少个条目(主要用在日志中有错误的情况下)。
你可以用 SESSION 或者是 GLOBAL 访问以上所有的变量。
注意,和MySQL形成对比的是,所有的变量总是显示正确的有效的值!
例如:
set @@default_master_connection=”;
show status like ‘Slave_running’;
set @@default_master_connection=’other_connection’;
show status like ‘Slave_running’;

如果 @@default_master_connection 包含一个不存在的名称,你将收到一个警告.
所有其他的master相关的变量都是全局的,并且影响 “” 连接或者是所有的连接。例如, Slave_retried_transactions 现在显示所有的slave的重试事务次数。

新添加的状态变量:
名称  描述
Com_start_all_slaves 执行 START ALL SLAVES 命令的次数。
Com_start_slave  执行 START SLAVE 命令的次数。取代了 Com_slave_start.
Com_stop_slave  执行 STOP SLAVE 命令的次数。取代了 Com_slave_stop.
Com_stop_all_slaves  执行 STOP ALL SLAVES 命令的次数

SHOW ALL SLAVES STATUS 有以下的新的列:
名称  描述
Connection_name  master的连接名。 这是第一个变量
Slave_SQL_State  SQL 线程的状态
Retried_transactions 这个连接重试事务的次数。
Max_relay_log_size  这个连接的最大的relay日志的大小。
Executed_log_entries slave已经指向了多少个日志条目。
Slave_received_heartbeats 从master获得了多少个心跳。
Slave_heartbeat_period 多久从master请求一个心跳包(以秒计算)。

新文件
被多源复制使用的新文件的基本准则是:他们有在扩展名前被冠以 连接名 前缀的和原来的中继日志文件类似的名字。
主要的例外是,保存所有连接名字的 文件master-info-file 被简单的命名为带有 multi- 前缀的 master-info-file 。

当你使用多源复制的时候,下面的文件将被创建:
名称  描述
multi-master-info-file  master-info-file (一般是 master.info) 带上了 multi- 前缀。这里面是所有使用中的master连接信息。
master-info-file-connection_name.extension 包含了当前master应用到slave的位置。扩展名一般是 .info
relay-log-connection_name.xxxxx relay-log 有了一个 connection_name 的前缀. xxxxx 是 relay log 的编号。这里面保存的是从master读取的复制数据。
relay-log-index-connection_name.extension 包含可用的 relay-log-connection_name.xxxxx 文件的名字。扩展名一般是 .index
relay-log-info-file-connection_name.extension 包含relay日志中的当前master的位置。扩展名一般是 .info

当创建这些文件的时候,连接名被转化成小写的,并且其中所有的特殊字符都被转化了,就和mysql表名中的特殊字符被转化一样。这样做是为了方便文件名可以在不同系统上移植。
提示:
你只需要指定 –log-base-name ,所有的其他变量将会使用这个作为前缀,而不用为mysqld指定 –relay-log, –relay-log-index,–general-log, –slow-log, –log-bin, –log-bin-index 这些的名字。

其他事项
所有slave的错误信息都会加上connection name,然后被写入到error log.
ER_MASTER_INFO和WARN_NO_MASTER_INFO现在会加上connection_name
这里没有冲突的解决方案,我们假设所有的master之间没有冲突.
所有执行的命令都被存储在正常的binary log里面。
如果你server variable log_warnings>1,那么你就会收到一些multi-master-info文件更新的信息
show slave status;看见的第一行是增加的,叫做connection_name.
reset slave命令现在会删除所有的relay-log文件。

典型的使用案例
将多个master的数据整合到一个slave上,方面查询分析。
将多个mariadb/mysql服务器的数据整合到一个slave,方便备份。

受限的事项
一个slave最多可以有64个master
每个活跃的连接会创建两个线程(和mariadb复制相同)
你需要确认所有的master需要有不同的server-id。
max_relay_log_size在启动后修改是不能生效的。
innodb-recovery-update-relay-log值对默认的复制连接生效,这个参数是xtradb的特新用来存储relay log的位置号。但是这个方案存在安全隐患,我们不推荐使用
Slave_net_timeout对所有参数有效,我们不检查它是否小于Slave_heartbeat_period,因为对多主复制来说没有特别意义。

将要完成的功能
multi-source现在还不支持semisync,我们将在下个release版本中解决。
所有关于multi-source的bugs可以在这里找到https://mariadb.atlassian.net/secure/IssueNavigator.jspa?mode=hide&requestId=11400
允许多线程复制

与mariadb/mysql 5.5不兼容的地方
max_relay_log_size is now (almost) a normal variable and not automatically changed if max_binlog_size is changed. To keep things compatible with old config files, we set it to max_binlog_size at startup if its value is 0.
You can now access replication variables that depend on the active connection with either GLOBAL or SESSION.
We only write information about relay log positions for recovery if innodb-recovery-update-relay-log is set.
Slave_retried_transaction now shows the total count of retried transactions over all slaves.
The status variable Com_slave_start is replaced with Com_start_slave.
The status variable Com_slave_stop is replaced with Com_stop_slave.
FLUSH RELAY LOGS are not replicated anymore. This is not safe as connection names may be different on the slave.

TIPS:
mysql库需要过滤掉,不能复制.
半同步(Semi-sync)暂时无法使用。
如果需要sql_slave_skip_counter,需要先制定一个通道 set @@default_master_connection=’connection_name’

时间: 2024-12-13 16:09:23

mariadb multi-source replication(mariadb多主复制)的相关文章

mariadb多源复制 muiltil source replication

环境:centos-6.5      Mariadb:10.1.13-MariaDB 多源复制:企业数据库中写的需求较大,以至于I/O负载比较大,那么就必须把写的操作分摊到多台主服务器上进行,然后在将主服务器上的数据汇总到从服务器上去进行数据分析.或者是将异地数据库的数据汇总到一起.注意:每台主服务上的库是不能相同的. proxy-mysql:192.168.88.139 master1:192.168.88.147 master2:192.168.88.148 slave1:192.168.8

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

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

Keepalived+LVS+MariaDB Galera Cluster10.0高可用负载均衡多主复制

一.概述 1.简述: MariaDB Galera Cluster 是一套在mysql innodb存储引擎上面实现multi-master及数据实时同步的系统架构,业务层面无需做读写分离工作,数据库读写压力都能按照既定的规则分发到各个节点上去.在数据方面完全兼容 MariaDB.Percona Server和MySQL. 2.特性: (1).同步复制 Synchronous replication (2).Active-active multi-master 拓扑逻辑 (3).可对集群中任一节

MariaDB 10 (MySQL DB) 多主复制并实现读写分离

MMM 即Master-Master Replication Manager for MySQL(mysql主主复制管理器)关于mysql主主复制配置的监控.故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写 入),这个套件也能对居于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实 现数据备份.节点之间重新同步功能的脚本.MySQL本身没有提供replication failover的解决方案,通过MMM方

MariaDB多主复制配置文档

mariadb介绍 Mariadb是mysql的一个分支版,mariadb最大的特点就是用来代替myisam的aria引擎和多主复制功能等等.在本文档中我们主要是介绍多主复制. 多主复制(multi-master)功能介绍 多主复制就是将多个master通过replication同步到单个slave上.如下所示: 主库可以是mysql也可以是mariadb,从库必须为mariadb,因为只有mariadb有多主复制功能.原理是mariadb为每一个主库启用一个io线程和一个sql线程.多个mas

Mariadb主从复制,半同步复制,主主复制

文章内容概览 主从复制介绍 主从复制的作用 复制工作流程 复制时应该注意的问题 主从复制配置 半同步复制配置 复制过滤器方法说明和配置 双主(主主复制)配置 文章环境说明 操作系统: [[email protected] ~]# cat/etc/redhat-release CentOS release 6.6 (Final) [[email protected] ~]# uname -r 2.6.32-504.el6.x86_64 [[email protected] ~]# uname -m

利用MariaDB Galera Cluster实现mariadb的多主复制

利用MariaDB Galera Cluster实现mariadb的多主复制 时间:2014年01月08日 | 分类:MariaDB | 评论:0 条 | 浏览:870 次 一.MariaDB Galera Cluster概要: 1.简述: MariaDB Galera Cluster 是一套在mysql innodb存储引擎上面实现multi-master及数据实时同步的系统架构,业务层面无需做读写分离工作,数据库读写压力都能按照既定的规则分发到 各个节点上去.在数据方面完全兼容 MariaD

MariaDB Galera Cluster实现mariadb的多主复制

一.MariaDB Galera Cluster概要: 1.简述: MariaDB Galera Cluster 是一套在mysql innodb存储引擎上面实现multi-master及数据实时同步的系统架构,业务层面无需做读写分离工作,数据库读写压力都能按照既定的规则分发到各个节点上去.在数据方面完全兼容 MariaDB 和 MySQL. 2.特性: (1).同步复制 Synchronous replication (2).Active-active multi-master 拓扑逻辑 (3

centos7上mariadb主主复制

mariadb1: 192.168.11.247 mariadb2: 192.168.11.246 1 mariadb1配置vi /etc/my.cnf.d/server.cnf [mysqld] server-id = 1 log-bin = master-log relay-log = slave-log auto_increment_offset = 1 auto_increment_increment = 2 2 mariadb2配置vi /etc/my.cnf.d/server.cnf