MariaDB复制架构中应该注意的问题
一、复制架构中应该注意的问题:
1、限制从服务器只读
在从服务器上设置read_only=ON,此限制对拥有SUPPER权限的用户均无效;
阻止所有用户(在从服务器执行一下命令并保持此线程,也就是执行后不退出改终端):
mysql> FLUSH TABLES WITH READ LOCK;
2、如何保证主从复制的事务安全?
在master节点启用参数:
sync_binlog=ON
如果用到的为InnoDB存储引擎:
innodb_flush_logs_at_trx_commit=ON
innodb_support_xa=ON
sync_master_info
在slave节点:
skip_slave_start=ON(手动启动salve线程)
sync_relay_log
sync_relay_log_info
二、主主复制:
互为主从:
1、数据不一致;(只能二选其一)
2、自动增长id:
配置一个节点使用奇数id
auto_increment_offset=1
auto_increment_increment=2
另外一个节点使用偶数id
auto_increment_offset=2
auto_increment_increment=2
配置步骤:
1、各节点使用一个唯一server_id;
2、都启用binary_log和relay_log;
3、创建拥有复制权限的用户账号;
4、定义自动增长id字段的数值范围为奇偶;
5、均把对方指定为主节点,并启动复制线程;
三、半同步复制:
master:
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
mysql> SET GLOBAL VARIABLES rpl_semi_sync_master_enabled=1;
mysql> SHOW GLOBAL VARIABLES LIKE '%semi%';
mysql> SHOW GLOBAL STATUS LIKE '%semi%';
slave
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
mysql> SET GLOBAL VARIABLES rpl_semi_sync_master_enabled=1;
四、复制过滤器:
让从节点仅复制指定的数据库,或指定数据库的指定表;
有两种实现方式
1、主服务器仅向二进制日志中记录与特定数据库(特定表)相关的事件;
问题:时间还原无法实现:不建议使用
binlog_do_db= # 数据库白名单列表
binlog_ignore_db= # 数据库黑名单列表
2、从服务器SQL_THREAD在replay中继日志中的事件时,仅读取与特定数据库(特定表)相关的事件并应用于本地
问题:会造成网络及磁盘IO浪费
库级复制
replicate_do_db= # 复制库的白名单
replicate_ignore_db= # 复制库的黑名单
表级复制
replicate_do_table= # 复制表的白名单
replicate_ignore_table= # 复制表的黑名单
五、基于SSL复制:
前提:支持SSL
查看方式:SHOW GLOBAL VARIABLES LIKE '%ssl%';
1、master配置证书和私钥:并且创建一个要求必须使用SSL连接的复制账号;
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'fansik'@'192.168.1.1' IDENTIFIED BY 'fanjinbao' REQUIRE SSL;
2、slave端使用CHANGE MASTER TO命令时指明ssl相关选项;
MASTER_SSL = {0|1}
MASTER_SSL_CA = 'ca_file_name'
MASTER_SSL_CAPATH = 'ca_directory_name'
MASTER_SSL_CERT = 'cert_file_name'
MASTER_SSL_CRL = 'crl_file_name'
MASTER_SSL_CRLPATH = 'crl_directory_name'
MASTER_SSL_KEY = 'key_file_name'
MASTER_SSL_CIPHER = 'cipher_list'
MASTER_SSL_VERIFY_SERVER_CERT = {0|1}
MASTER_TLS_VERSION = 'protocol_list'
IGNORE_SERVER_IDS = (server_id_list)
六、与复制功能相关的文件:
master.info:用于保存slave连接至master时的相关信息,例如账号、密码、服务器地址等;
relay-log.info:保存在当前slave节点上已经复制的当前二进制日志和本地relay log日志的对应关系;
七、复制的监控和维护:
1、清理日志:
SHOW BINARY LOGS;
PURGE BINARY LOGS TO 'mysql-bin.000008'; # 清理8之前的日志
2、复制监控
SHOW MASTER STATUS;
SHOW BINLOG EVENTS;
SHOW BINARY LOGS;
SHOW SLAVE STATUS;
SHOW PROCESSLIST;
3、从服务器是否落后于主服务:
SHOW SLAVE STATUS\G;中查看一下选项
Seconds_Behind_Master: 0
4、如何确定主从节点数据是否一致:
percona-tools
5、数据不一致如何修复?
重新复制
MariaDB复制架构中应该注意的问题的更多相关文章
- mariadb主从架构
mariadb主从架构(异步)和集群 一般应用的场所是网站,主的机器是可以写可以读,从的机器可以读,也可以写,但不会同步.只有主的机器增删改,从的机器才会同步. 主从至少三个线程:dump.I/O t ...
- mariadb主从复制架构学习笔记
复制功用: 数据分布 负载均衡:读操作,适用于读密集型的应用 备份 高可用和故障切换 MySQL升级测试 在从服务器上有两个线程: I/O线程:从master请求二进制日志信息,并保存至中继日志 SQ ...
- Chris Richardson微服务翻译:微服务架构中的服务发现
Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现(本文) 微服务之事件驱动的数据管理 微服 ...
- mysql 架构篇系列 1 复制原理和复制架构
一. 复制概述 mysql 从3.23版本开始提供复制功能,复制是指将主数据库的ddl和dml操作通过二进制日志传到复制服务器(也叫从服务器)上,然后在从服务器上对这些日志重新执行(也叫重做),从而使 ...
- 配置percona mysql server 5.7基于gtid主主复制架构
配置mysql基于gtid主主复制架构 环境: 操作系统 centos7. x86_64 mysql版本:Percona-Server-- 测试环境: node1 10.11.0.210 node2 ...
- (9) MySQL主主复制架构使用方法
一. 回忆主从复制的一些缺点 上节说到主从复制的一些问题 我们再来回忆一下 主从复制,增加了一个数据库副本,从数据库和主数据库的数据最终会是一致的 之所以说是最终一致,因为mysql复制是异步的,正常 ...
- 搭建MySQL的主从、半同步、主主复制架构
复制其最终目的是让一台服务器的数据和另外的服务器的数据保持同步,已达到数据冗余或者服务的负载均衡.一台主服务器可以连接多台从服务器,并且从服务器也可以反过来作为主服务器.主从服务器可以位于不同的网络拓 ...
- 理解S12(X)架构中的地址映射方案
目录 1. 介绍 2. CPU 本地地址 3. 分页窗口 4. 内存页 5. 控制各个对象在内存中放置的位置 介绍 在一个S12或S12X架构中,很有必要分清楚两种类型的内存地址:banked和non ...
- Linux ALSA声卡驱动之七:ASoC架构中的Codec
1. Codec简介(ad/da) 在移动设备中,Codec的作用可以归结为4种,分别是: 对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号 对Mic.Linein或者其他输入源的模拟信 ...
随机推荐
- vim插件管理器的安装和配置-windows
# vim插件管理器的安装和配置-windows ### 前言------------------------------ vim做一框功能强大的编辑器,扩展功能令人称奇,插件机制非常灵活- 本篇推荐 ...
- linux学习笔记16--命令find
find是linux系统中用的比较多的一个命令,而且功能强大,特别是对各种查找方式的不确定位置的文件的查找. Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提 ...
- extjs,ComboReturn
package cn.edu.hbcf.common.vo; import java.io.Serializable; public class ComboReturn implements Seri ...
- 数据库设计(七)第三范式(3NF)
In our last tutorial, we learned about the second normal form and even normalized our Score table in ...
- poj3020 Antenna Placement 匈牙利算法求最小覆盖=最大匹配数(自身对应自身情况下要对半) 小圈圈圈点
/** 题目:poj3020 Antenna Placement 链接:http://poj.org/problem?id=3020 题意: 给一个由'*'或者'o'组成的n*m大小的图,你可以用一个 ...
- 关键字final 分别修饰一个类,一个方法,一个变量,各起什么作用
关键字final 分别修饰一个类,一个方法,一个变量,各起什么作用 解答:final修饰类是不能被继承 fianl修饰方法不能在子类中被覆盖 final修饰变量,称为常量,初始化以后不能改变值.
- java算法-数学之美一
巧用数学的思想来解决程序算法问题,这样的代码如诗般优美.通过数学思想来看问题,也能将程序简单化.“斐波那契数列”对于java程序员来说一定不陌生.当然这个问题的解决方案也有很多.用一个例子说明数学思想 ...
- HDU 4970(杭电多校#9 1011题)Killing Monsters(瞎搞)
题目地址:HDU 4970 先进行预处理.在每一个炮塔的火力范围边界标记一个点. 然后对每一个点的伤害值扫一遍就能算出来. 然后在算出每一个点到终点的总伤害值,并保存下来,也是扫一遍就可以. 最后在询 ...
- 蓝桥杯 第三届C/C++预赛真题(4) 奇怪的比赛(递归)
某电视台举办了低碳生活大奖赛.题目的计分规则相当奇怪: 每位选手需要回答10个问题(其编号为1到10),越后面越有难度.答对的,当前分数翻倍:答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错 ...
- 第6步:检查grid安装环境
6.1 检查系统包 grid 身份下校验安装环境(检测crs安装环境(sgdb1)) [root@node1 soft]#su – grid [grid@node1 ~]$ cd /soft/grid ...