MariaDB主从复制的逻辑与实现
一、关系型数据库的劣势
“关系型数据库:指采用了关系模型来组织数据的数据库,而关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。”——Wiki
关系型数据库有着庞大的用户群体,并且实现逻辑很符合人的理解,但它也同时存在一些劣势:1.关系型数据库中最大的瓶颈就是磁盘I/O。由于传统的关系型数据库在执行每一次执行增删改查时都会要用到磁盘I/O,当并发量很高时就会很明显的降低整个架构的性能。2.在关系型数据库中,导致性能欠佳的最主要原因是多表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询。
关系型数据库的主从复制与读写分离可以一定程度上缓解I/O压力,提高关系型数据库的并发性能。下面以MariaDB示例主从复制的原理与实现。
二、什么是主从复制
在整个系统架构中,数据库可能是最重要的环节之一,因为数据丢失造成的损失可以说是不可估量的。但由于MariaDB的天生属性,所以很难做到分布式存储,所以MariaDB在生产中是一定不允许存在单点的。另一方面,关系型数据库是有状态的,不能像其他一些无状态应用那样做HA,在数据库做HA时一定要考虑数据的同步,这里就需要将数据不停的向备用节点进行复制。过程如下图:

主节点将二进制日志通过API传输至从节点,从节点会启用两个进程:I/O thread进程和SQL进程。I/O thread进程将主节点的二进制日志存入从节点的中继日志,再生成二进制日志,最后通过SQL进程将二进制日志中的操作进行还原,这样就能保证主从节点数据的同步特性了。
三、MariaDB主从架构存在的问题
在上面的描述中,表面上似乎可以很完美的实现数据库的冗余,并且还能实现主节点和从节点的数据同步,但理想是美好的,显示是残酷的。在实际生产环境中因为种种原因,很有可能会出现主从节点的数据不一致的情况。对于这样的情况最好的办法就是预防,时刻监控主从节点的数据同步性,一旦发生不一致的现象,尽可能的将主节点的数据全部重新复制到从节点。
四、MariaDB主从复制配置示例
1.同步服务器时间。
2.确定从服务器从哪一点开始复制(从0开始或从指定位置开始)。
3.主节点配置:
vim /etc/my.cnf.d/server.cnf
[mysqld]
innodb_file_per_table=ON
skip_name_resolve=ON
server_id=1 #主节点id
log-bin=master-log #开启二进制日志
4.从节点配置:
vim /etc/my.cnf.d/server.cnf
[mysqld]
innodb_file_per_table=ON
skip_name_resolve=ON
server_id=11 #从节点id
relay_log=relay-log #开启中继日志
read_only=ON #只读
5.在主节点上创建拥有复制权限的账号:
mysql -uroot -p
Enter password:
MariaDB [(none)]> GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'slave'@'192*.* TO 'slave'@'192.168.29.103' IDENTIFIED BY '';
Query OK, rows affected (0.10 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, rows affected (0.00 sec)
MariaDB [(none)]> SHOW MASTER STATUS; #查看日志处在的位置
+-------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| master-log. | | | |
+-------------------+----------+--------------+------------------+
row in set (0.00 sec)
6.在从节点上配置主节点信息:
MariaDB [(none)]> CHANGE MASTER TO
MASTER_HOST='192.168.29.102',
MASTER_USER='slave',
MASTER_PASSWORD='',
MASTER_PORT=,
MASTER_LOG_FILE='master-log.000001', #复制的起始文件
MASTER_LOG_POS=; #起始点
MariaDB [(none)]> SHOW SLAVE STATUS \G #查看从节点信息
MariaDB [(none)]> START SLAVE; #启动从节点,可选项为(IO_THREAD | SQL_THREAD)不写默认都开启
以上就是MariaDB主从复制的配置过程,根据实际需求,还可以实现一主多从,多主多从等结构。
MariaDB主从复制的逻辑与实现的更多相关文章
- Linux-基础学习(五)-mariadb主从复制以及redis学习
开始今日份整理 1.mariadb的主从复制 主从复制大致图示: 1.1 mysql基本命令复习 linux下的操作 .启动mysql systemctl start mariadb .linux客户 ...
- mysql/mariadb主从复制
主从复制简介 MySQL数据库的主从复制方案,是其自带的功能,并且主从复制并不是复制磁盘上的数据库文件,而是通过binlog日志复制到需要同步的从服务器上. MySQL数据库支持单向.双向.链式级联, ...
- MariaDB主从复制,redis发布订阅,持久化,以及主从同步
一. MariaDB主从复制 mysql基本操作 1 连接数据库 mysql -u root -p -h 127.0.0.1 mysql -u root -p -h 192.168.12.60 2 ...
- 【MySQL】Mariadb主从复制
Mariadb主从复制 环境配置: Master : 172.30.200.200 Slave : 172.30.200.204 架构图,如下: Master的配置: 1.binlog配置 [root ...
- Mariadb主从复制
前戏: mysql的基本命令复习 .启动mysql systemctl start mariadb .linux客户端连接自己 mysql -uroot -p -h 127.0.0.1 .远程链接my ...
- MariaDB 主从复制
MySQL Replication:NySQL复制,MySQL的复制默认为异步工作模式 mysql的复制功能是mysql内置的,装上它之后就具备了这个功能,而mysql复制是mysql实现大规模 ...
- MySQL(mariadb)主从复制模式与复制过滤
在前一篇文章<mysql多实例与复制应用>中只对mysql的复制做了简单的介绍,本篇内容专门介绍一下mysql的复制. MySQL复制 mysql复制是指将主数据库的DDL和DML操作通过 ...
- MariaDB主从复制、主主复制
1.部署 10.0.0.21 MariaDB-21 10.0.0.22 MariaDB-22 cat /etc/yum.repos.d/mariadb.repo [mariadb] name=Ma ...
- MariaDB主从复制和读写分离
一.基础环境 二.配置MariaDB服务 1.安装MariaDB # yum install -y mariadb mariadb-server # systemctl start mariadb # ...
随机推荐
- vue实现二级联动效果
你如城市与省份间的二级联动效果 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...
- 【尺取法】Jurisdiction Disenchantment
[尺取法]Jurisdiction Disenchantment PROBLEM 时间限制: 1 Sec 内存限制: 128 MB 题目描述 The Super League of Paragons ...
- 电子科技大学实验中学PK赛(三)-期末测试比赛题解
比赛地址:http://qscoj.cn/contest/33/ A题 国家德比 分析:用b,d,B,D记录两场比赛两支球队的比分,先判断b+B与d+D的大小,如果先者大则拜仁胜,后者大则多特胜:相同 ...
- android颜色color.xml设置
XML Code 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 ...
- [Swift]LeetCode118. 杨辉三角 | Pascal's Triangle
Given a non-negative integer numRows, generate the first numRows of Pascal's triangle. In Pascal's t ...
- [Swift]LeetCode174. 地下城游戏 | Dungeon Game
The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. ...
- [Swift]LeetCode477. 汉明距离总和 | Total Hamming Distance
The Hamming distance between two integers is the number of positions at which the corresponding bits ...
- [Swift]LeetCode993. 二叉树的堂兄弟节点 | Cousins in Binary Tree
In a binary tree, the root node is at depth 0, and children of each depth k node are at depth k+1. T ...
- Ubuntu12.04下安装NS3.25
实验室项目的需求,要使用到NS3做仿真,使用实验室的电脑,Ubuntu12.04,版本比较低,建议大家使用16.04,这样安装依赖文件时不会出现版本过低的问题 (没管最后也安装成功了).下面就安装步骤 ...
- iOS学习——页面的传值方式
一.简述 在iOS开发过程中,页面跳转时在页面之间进行数据传递是很常见的事情,我们称这个过程为页面传值.页面跳转过程中,从主页面跳转到子页面的数据传递称之为正向传值:反之,从子页面返回主页面时的数据传 ...