在Linux系统上搭建MariaDB(Mysql)集群,实现主从同步。

Linux 搭建 MariaDB Galera Cluster 高可用集群 MGC 集群 阅读详情

接上篇博客:https://blog.youkuaiyun.com/SpringCYB/article/details/90202949

mysql主从同步定义:

主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。

使用主从同步的好处:

  1. 通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整整个数据库的性能。
  2. 提高数据安全-因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而不破坏主服务器相应数据
  3. 在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能

注意,mysql是异步复制的,而MySQL Cluster是同步复制的。有很多种主从同步的方法,但核心的方法有两种,Statement Based Replication(SBR)基于SQL语句的复制,另一种是Row Based Replication(RBR)基于行的复制,也可以使用Mixed Based Replication(MBR)。在mysql5.6中,默认使用的是SBR。而mysql 5.6.5和往后的版本是基于global transaction identifiers(GTIDs)来进行事务复制。当使用GTIDs时可以大大简化复制过程,因为GTIDs完全基于事务,只要在主服务器上提交了事务,那么从服务器就一定会执行该事务。

通过设置服务器的系统变量binlog_format来指定要使用的格式:

1.SBR:当使用二进制日志时,主服务器会把SQL语句写入到日志中,然后从服务器会执行该日志,这就是SBR,在mysql5.1.4之前的版本都只能使用这种格式。使用SBR会有如下

长处:

  1. 日志文件更小
  2. 记录了所有的语句,可以用来日后审计

弊端:

  1. 使用如下函数的语句不能被正确地复制:load_file(); uuid(), uuid_short(); user(); found_rows(); sysdate(); get_lock(); is_free_lock(); is_used_lock(); master_pos_wait(); rand(); release_lock(); sleep(); version();
  2. 在日志中出现如下警告信息的不能正确地复制:[Warning] Statement is not safe to log in statement format.
  3. 或者在客户端中出现show warnings
  4. Insert … select语句会执行大量的行级锁表
  5. Update语句会执行大量的行级锁表来扫描整个表

2.RBR:主服务器把表的行变化作为事件写入到二进制日志中,主服务器把代表了行变化的事件复制到从服务中,使用RBR的

长处:

  1. 所有的数据变化都是被复制,这是最安全的复制方式
  2. 更少的行级锁表

弊端:

  1. 日志会很大
  2. 不能通过查看日志来审计执行过的sql语句,不过可以通过使用mysqlbinlog  
  3. --base64-output=decode-rows --verbose来查看数据的 变动

3.MBR:既使用SBR也使用RBR,默认使用SBR

 

主从同步机制

Mysql服务器之间的主从同步是基于二进制日志机制,主服务器使用二进制日志来记录数据库的变动情况,从服务器通过读取和执行该日志文件来保持和主服务器的数据一致。

在使用二进制日志时,主服务器的所有操作都会被记录下来,然后从服务器会接收到该日志的一个副本。从服务器可以指定执行该日志中的哪一类事件(譬如只插入数据或者只更新数据),默认会执行日志中的所有语句。

每一个从服务器会记录关于二进制日志的信息:文件名和已经处理过的语句,这样意味着不同的从服务器可以分别执行同一个二进制日志的不同部分,并且从服务器可以随时连接或者中断和服务器的连接。

主服务器和每一个从服务器都必须配置一个唯一的ID号(在my.cnf文件的[mysqld]模块下有一个server-id配置项),另外,每一个从服务器还需要通过CHANGE MASTER TO语句来配置它要连接的主服务器的ip地址,日志文件名称和该日志里面的位置(这些信息存储在主服务器的数据库里)

配置主从同步:

有很多种配置主从同步的方法,可以总结为如下的步骤:

1.在主服务器上,必须开启二进制日志机制和配置一个独立的ID

2.在每一个从服务器上,配置一个唯一的ID,创建一个用来专门复制主服务器数据的账号

3.在开始复制进程前,在主服务器上记录二进制文件的位置信息

4.如果在开始复制之前,数据库中已经有数据,就必须先创建一个数据快照(可以使用mysqldump导出数据库,或者直接复制数据文件)

5.配置从服务器要连接的主服务器的IP地址和登陆授权,二进制日志文件名和位置。

 

开始配置:

需要两台虚拟机,一主一从,直接克隆一个就可以。

1.通过 vi /etc/my.cnf  命令修改主服务器数据库的主要配置文件:

在第一个模块下加上开启binog

log-bin=命一个名称

添加标识符: server-id=1  声明是唯一的

2.重启数据库:

通过  systemctl restart mariadb  命令重启数据库:

3.进入mysql:

通过 mysql -uroot -proot 命令进入你的mysql,上篇博客我已经安装过了,u后面是你的账户名,p后面是你设置的密码

4.进入数据库的内部进行授权
通过  grant replication slave on *.* to 'root'@'192.168.1.126' identified by 'root';  命令进行授权:

出现ok表示成功

名词解释:

grant 授权
replication slave 数据库自带的同步权限
on代表同步哪个库
*.*是所有东西
to 后表示允许谁
‘用户名’@‘从库的IP地址’
identified by ‘密码’

5.进行进行完操作后进行刷新
通过  flush privileges;   命令刷新

ok表示成功

6.获取二进制日志的信息
通过  show master status;  命令获取信息:

打印出日志记录则表示成功,如果没有检查你的配置信息。或者重启服务再试

7.接下来配置从库配置信息

首先安装MariaDB

通过安装命令:yum -y install mariadb mariadb-server  安装

8.启动MariaDB

通过命令:systemctl start mariadb  启动

9.设置开机启动

通过命令:systemctl enable mariadb  设置为开机启动

10.接下来进行MariaDB的相关简单配置

通过命令:mysql_secure_installation  配置

首先是设置密码,会提示先输入密码

Enter current password for root (enter for none):<–初次运行直接回车

设置密码:

我设置的账号为root,密码为root,和主库一致的

Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码

其他配置

Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车

Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车,

Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车

Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车

11.和配置主库一样通过 vi /etc/my.cnf  命令修改从服务器数据库的主要配置文件:

12.通过  systemctl restart mariadb  命令重启数据库:

     通过 mysql -uroot -proot 命令进入你的mysql

13.配置与主库同步参数,输入如下信息:

输入  use mysql  命令

在输入:CHANGE MASTER TO 命令出现如下图所示:

 

-> MASTER_HOST='192.168.1.107',

-> MASTER_USER='root',

-> MASTER_PASSWORD='root',

-> MASTER_LOG_FILE='binlog.000002',
 MASTER_LOG_POS=472;

14.启动主从同步进程

通过 start slave; 命令启动:

15.检查状态

通过命令: show slave status \G 

如果出现如图的两个yes则表示成功。

16.连接mysql可视化工具测试

开启远程访问权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

进行进行完操作后进行刷新
flush privileges;

连接:

主从都连接上:

主服务里面建一个数据库

然后你就发现从库中也有这个库了,这就是主从同步

完成!

MariaDB集群开机自启动配置实战项目 MariaDB Galera集群通过写集复制(Write-Set Replication)实现多主同步,所有节点均可接受读写请求。事务在提交前会被封装为写集(包含变更数据和行级冲突检测信息),经组通信系统(GCS)广播至集群。-- 写集示例:事务产生的变更以行级别记录集群使用全局事务序号(GTID)确保顺序一致性,每个事务具备唯一标识UUID:seqno,并通过认证测试(Certification-Based Replication)在各节点验证写集冲突,避免脏写。 阅读详情

相关推荐

VMware ESXi +DELL虚拟化存储磁盘容量处于紧急状态问题的处理

1、环境介绍 exsi server两台(DELL R730 ): 192.168.3.206 VMware EXSi6.5 192.168.3.207 VMware EXSi6.5 磁盘存储柜一台(DELL SC2000): 192.168.3.208 2、故障处理 由于前期规划的卷空间过大,虚拟机文件逐年增大以后,造成卷的磁盘占用过与整个磁盘空间的容量,虚拟化平台可用容量爆掉,DELL SC2000自动切换到紧急状态,禁止所有磁盘I/O,exsi主机上的虚拟机无法开机 首先,安装

wolf1105的博客 3534

数据库编程之mariadb/mysql建立主从

这里介绍的是两节点主从,如果是集群模式,至少需要三个节点,因为偶数个节点是导致脑裂高发的原因(无法确定该同步谁的)。进入从节点的数据库,指定主库信息,完成主从关系建立(注意:下面命令中的【主节点 ip 地址】别忘记替换,使用。查看 slave 的状态,注意查看 slave 的进程状态,下面红色方框中圈起来的是两个。首先,你需要保证所有的节点数据一致,在升级过程中万一升级失败能及时的恢复数据。库和其下的表,如果要同步更多的库和表可以用逗号分隔,追加。,查看进程状态,确保没有额外的读写操作(

不二青春 250

今天出一个candence 17.4 allego的安装教程

7、安装完成,接下来进行补丁更新,找到Hotfix_SPB17.40.035_wint.iso软件 ,右击鼠标选择装载。6、因为之前选择的定制安装,这一步不知道具体要安装啥,因此都勾选,点击NECK,接下来等待安装完成。后面经过仔细对比,发现是前面更新补丁时选择了F盘,F盘是candence安装包,不是补丁。8、在破戒大师里选择安装更新补丁,并找到刚才装载的安装包里的程序,点击下一步。3、打开破戒大师,找到安装candence进行如下图选择,点击下一步。有耐心的人可以重新卸了再装一边,我就不卸了,直接装。

hcvinh的博客 2727

Mariadb数据库之主从复制同步配置实战

Mariadb数据库之主从复制同步配置实战

jks212454的博客 1544

配电网可靠性评估(一)—最小路法和非序贯蒙特卡洛模拟法的matlab实现

电力系统的可靠性研究是相关领域的热点问题。根据研究对象的不同,又可分为发电系统的可靠性,输电系统的可靠性和配电系统的可靠性。配电网在电力系统中处于最末端的位置,直接和用户相连,一旦出现故障情况,就会在用户侧表现为停电事故。因此对配电网的可靠性评估有着重大意义。......

配电网和matlab的博客 1万+

RAG——从0到1快速搭建RAG应用

本文介绍了基于LangChain框架构建RAG(检索增强生成)应用的技术方案,涵盖核心模块选型与实现流程。技术栈包括:LangChain应用框架、pypdf文档解析、RecursiveCharacterTextSplitter文本分块、bge-small-zh-v1.5向量模型、Faiss向量库和通义千问大模型。文章详细说明了开发环境配置步骤,包括虚拟环境创建、依赖库安装和模型下载。核心代码分为索引、检索、生成三大流程,索引流程完成PDF文档解析、分块和向量化存储;检索流程实现查询向量化和相似度匹配;生成流

小志的博客 596

mariadb实现服务器的数据分库-主从同步

mariadb实现服务器的数据主从同步1. 主从同步配置原理2. 使用mariadb实现主从同步 mariadb实现服务器的数据分库-主从同步 1. 主从同步配置原理 mariadb主从复制中: 第一步:master记录二进制日志。在每个事务更新数据完成之前,master在二日志记录这些改变。Mariadb将事务写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。 第二步:slave将master的binary log拷贝到.

m0_60627063的博客 1247

C#通过Aforge调用电脑摄像头(附代码)

C#标准库本身不带有能调用电脑摄像头的库,如果利用windows自身的API来实现的话,着实有些麻烦。Aforge这个第三方库能很好的实现调用、处理的功能。 PS:文末给大家分享了完整的项目源码,各位最好先下载下来,对照着来看 1、先看一下效果 2、Aforge介绍 AForge.NET是一个专门为开发者和研究者基于C#框架设计的,这个框架提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,机器人等领域。 3、我使用的开发环境 操作系统

weixin_44996090的博客 1万+

一台服务安装多个mysql/mariadb数据库

安装多个mysql/mariadb数据库

SmartYJC的博客 1702

广工计组f4b 8位12指令微程序CPU设计实验报告(内含可通过代码以及波形图)

实验目的:模型机是计算机的缩细模型,通过它可以理解计算机整机的结构和功能,理解CPU,存储器,中断控制器,接口的结构及实现逻辑和各部件之前的接口关系。本实验是设计一个8位模型计算机。:一条机器指令可以分解成一个微操作序列,这些微操作是计算机最基本的,不可再细分的操作。:在微程序控制的计算机中。将控制部件向执行部件发出的各种控制命令成为微命令,它是构成控制序列的最小单位。微命令和微操作是一一对应的。微命令是微操作的控制信号,微操作微命令的执行过程。2.:微指令是若干微命令的集合。

weixin_63692154的博客 4705

【ESP32设备通信】-LoRa通信

在本文中,我们将使用 Arduino IDE 将 ESP32 与 LoRa SX1278 (Ra-02) 模块连接起来。 我们将创建一个真实的示例项目,通过 LoRa 无线打开/关闭 LED 进行演示。

视觉与物联智能 1891

mariadb集群配置(主从和多主)

mariadb主从 主从多用于网站架构,因为主从的同步机制是异步的,数据的同步有一定延迟,也就是说有可能会造成数据的丢失,但是性能比较好,因此网站大多数用的是主从架构的数据库,读写分离必须基于主从架构来搭建 主从架构主的数据可以同步到从上,从也可以读写数据,但是从上修改数据,不能同步到主的 主从同步数据会重在延迟(可能延迟一两个小时),延迟并不完全就只是缺点,加入主的数据丢失了,有可能因为延...

weixin_30776273的博客 678

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Linux下MySQL/MariaDB Galera集群搭建过程

本博客的目的是对下述博客的补充,针对我自己出现的情况 Linux下MySQL/MariaDB Galera集群搭建过程 下载源的问题:由于原博客的下载源镜像不是国内镜像,导致速度非常的慢。现推荐以下两种: 第一种源: ## 使用这种源无需更改任何的内容,按照上面的链接内的内容直接安装即可 ## [mariadb] name = MariaDB baseurl =http://mirrors.us

轻庐踏雪 904

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

galera mysql ubuntu_Linux下MySQL/MariaDB Galera集群搭建过程【转】

MariaDB介绍MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。详细介绍请参考链接:Galera Cluster介绍Galera Cluster是基于MySQL/innodb二次开发而成的一个支持“多主同步”的数据库...

weixin_39663970的博客 250

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

mysql集群搭建步骤linux_Linux下MySQL/MariaDB Galera集群搭建过程

MariaDB介绍MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。详细介绍请参考链接:Galera Cluster介绍Galera Cluster是基于MySQL/innodb二次开发而成的一个支持“多主同步”的数据库...

weixin_30220707的博客 183

mysql cluster gp_Linux下MySQL/MariaDB Galera集群搭建过程

MariaDB介绍MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。详细介绍请参考链接:Galera Cluster介绍Galera Cluster是基于MySQL/innodb二次开发而成的一个支持“多主同步”的数据库...

weixin_35268264的博客 104

mysql galera集群搭建_Linux下MySQL/MariaDB Galera集群搭建过程

MariaDB介绍MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。详细介绍请参考链接:Galera Cluster介绍Galera Cluster是基于MySQL/innodb二次开发而成的一个支持“多主同步”的数据库...

weixin_39933895的博客 145

mysql keepl galera_Linux下MySQL/MariaDB Galera集群搭建过程

MariaDB介绍MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。详细介绍请参考链接:http://mariadb.org/(官网)http://baike.baidu.com/link?url=dFJ-My-I52Y...

weixin_36476970的博客 167

搭建MariaDB Galera 同步复制

搭建同步复制的数据库集群,使用MariaDB Galera 且至少需要预先搭建三台Linux服务器。 其中在上一篇博客中有一步是需要修改wsrep.cnf这个文件中的三个参数,其中wsrep_cluster_address="gcomm://192.168.131.145其中那个IP地址表示的是相对于本台Linux所表示的节点的上一个服务器节点的IP地址。如果本台Linux服务器是第一个节点,那

轻庐踏雪 915

搭建mysql8集群时问题

答:使用 xz -dk mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz,现将文件解压为tar包,而后再进行解压~6.某个节点在关闭后重启,ens33开启时也找不到网卡,报错:Failed to start LSB: Bring up/down。1.xz结尾的包的解压问题:mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz,如何解压?2.使用locate 查找my.cnf文件,需要安装哪些命令?5.查看某个数据库的用户。

weixin_45529733的博客 250
上一篇: 在Linux系统上安装MariaDB(Mysql)
下一篇: 在Linux系统上使用Mycat实现读写分离,基于MariaDB(Mysql)
听风动
博客等级 码龄8年 63粉丝 90原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听风动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值