Mysql-数据库集群的搭建以及数据库的维护

一、数据库的维护

1.数据库的备份与恢复

1)备份指定数据库

#mysqldump -u root -p zx > ./zx.dump

2)备份所有库

#mysqldump -u root -p --all-databases > ./all.dump

3)恢复所有库

#mysql -u root -p < ./all.dump

4)恢复指定数据库

#mysql -u root -p test <./test.dump(*******)

注:要恢复指定数据库,实际上是恢复该数据库下所有的表。因此,该数据库必须存在

2.执行数据库维护

1)ANALYZE TABLE 用来检查表的键是否正确:(用于维护索引)

 analyze table orders;

2)CHECK TABLE 用来检查表的各种问题 check table orders;

3)REPAIR TABLE 用来修复表 repair table orders;

3.检查日志文件

1)MariaDB 日志文件 /var/log/mariadb

2)DBMS 内部日志

binlog:二进制日志,记录的 DBMS 上所有的 DDL 和 DML 语句

errlog:错误日志,记录 DBMS 上发生的错误慢查询日志

3)MariaDB 配置文件所在路径:/etc/my.cnf.d

MariaDB 配置文件模板所在路径:/usr/share/mysql

MariaDB 数据库文件所在路径:/var/lib/mysql

4.性能提升

查看数据库相关参数的设定

show variables;

二、三种常见的 MariaDB 集群2.3 用的比较多

1.DRBD+Keepalived+MariaDB

DRBD 为块同步复制技术,采用主从双机(一主一备)配置。备机会从主机同步主机数据。缺点是会发生脑裂

2.Haproxy+Galera+MariaDB Galera 为多主多活

注:Galera 同步复制与其他方式同步复制的区别其他集群的节点同步方式为辅节点读取主节点的事务日志,将日志解析为代码再在本机上执行。

Galera 集群是主节点上的事务处理封装为一个单元,并将该单元发往各节点,经过验证后各节点各自执行该事务,完成数据或事务的同步。

工作原理:a:备份一个节点的数据库内容,然后到其他节点上进行恢复

          b:在其中一个节点上对数据库进行操作,这些修改就会被封装为write_set 然后再发往集群中的其他节点。

          c:其他节点接受后先验郑是不是本集群发送来的,如果确定是本集群发送过来的那么根据write-set 在自己上面执行,从而使集群内的数据库内容保持一致性。

3.mariadb 本身的主从集群

工作原理:a:备份主机的数据库,然后到备机上进行恢复

          b:让备机自动读取主机的binlogs内容

          c:把备机读取的binlogs内容恢复为sql语句,并执行

从而上述进行了之后 主机就和备机的数据库内容保持一致了

三、集群搭建

1.为什么要使用集群

MariaDB 作为 Mysql 的一个分支,在开源项目中已经广泛使用,例如大热的 openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力,集群部署是必不可少的。

2 .MariaDB 集群的功能和原理

1)使用软件:MariaDB-Galera-Cluster

MariaDB 集群是 MariaDB 同步多主机集群。它仅支持 XtraDB/ InnoDB 存储引擎。

2)主要功能:同步复制

真正的 multi-master,即所有节点可以同时读写数据库自动的节点成员控制,失效节点自动被清除新节点加入数据自动复制真正的并行复制,行级用户可以直接连接集群,使用感受上与 MySQL 完全一致

3)实现原理:

Galera 集群的复制功能基于 Galeralibrary 实现,为了让 MySQL 与 Galera library 通讯,特别针对 MySQL 开发了 wsrep API。Galera 插件保证集群同步数据,保持数据的一致性,靠的就是可认证的复制:

当客户端发出一个 commit 的指令,在事务被提交之前,所有对数据库的更改都会被 write-set 收集起来,并且将 write-set 纪录的内容发送给其他节点。 write-set 将在每个节点进行认证测试,测试结果决定着节点是否应用 write-set 更改数据。

如果认证测试失败,节点将丢弃 write-set;如果认证测试成功,则事务提交。

3.如何搭建集群环境

1)准备好实虚拟机(2 台以上)

首先要保证真实机可以连接到网络。建议将虚拟机主机名改为指定的主机名(如:zx,zx2 等)

2)配置好本地 yum 源,注意确保本机已经安装了 rsync。

3)配置网络源,从指定的源地址下载安装 MariaDB-Galera-server

4)从真实机导入两个目录,并放在/mnt/mysql 中

#cd /etc/yum.repos.d/

#vim sql.repo

[s]

name = sql

baseurl = file:///mnt/mysql

gpgcheck=1

enabled=0

#yum --enablerepo=s -y install MariaDB-Galera-server

注:确保 yum 源配置文件准确无误(特别注意 yum 源的名称要与安装命令中的名称保持一致)

4)安装好软件后,编辑配置文件

配置文件位置:/etc/my.cnf.d/server.cnf

修改以下内容:

19行:wsrep_provider=/usr/lib64/galera/libgalera_smm.so(节点间互相通信)

wsrep-enabled MySQL (前身是MySQL/Galera cluster) 可使用wsrep 复制提供者如Galera 到一个集群中。wsrep API 是复制接口的抽象层,支持全局事务 ID、真正的多主节点复制、冲突检测和并行处理。对触发器和存储过程来说是透明的。目前只支持 InnoDB 存储引擎和 DDL命令。

上述语句中 wsrep 复制提供者为 libgalera_smm.so( 实际上我们安装MariaDB-Galera-server,就是为了获取这个模块)

这一行指定了由哪个模块负责复制数据。

20.行:wsrep_cluster_address="gcomm://192.168.1.2,192.168.1.3"

这一行指定了集群的所有节点

21行:binlog_format=row

二进制日志:只是跟修改相关的操作,可以理解为一个重做日志,用于复制的基本凭据; MySQL 记录二进制日志的格式为 row,即:不记录每条 sql 语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。而且不会出现某些特定情况下的存储过程、或 function、或 trigger 的调用和触发无法被正确复制的问题。缺点是会产生大量的日志,尤其是 alter table 的时候会让日志暴涨。

这一行指定了二进制日志记录的格式(日志格式为 bin_log,存储格式为 row)

22行:default_storage_engine=InnoDB

这一行指定了默认的数据库存储引擎为 InnoDB

23行:innodb_autoinc_lock_mode=2

这一行是专门用来在使用 auto_increment 的情况下调整锁策略的, 0 (全部使用表锁), 1 (默认)(可预判行数时使用新方式,不可时使用表锁),2 (全部使用新方式,不安全,不适合 replication)

24 行:bind-address=0.0.0.0代表所有ip

这一行绑定了监听的 IP 地址

增加以下内容:

wsrep_cluster_name="test_cluster"(指定 Cluster 名字) wsrep_node_address="192.168.1.2"(当前节点ip) (指定 wsrep 节点地址,这里指当前节点)

wsrep_sst_method=rsync (复制方式为 rsync)

5)启动集群:

#/etc/rc.d/init.d/mysql bootstrap (主节点运行)

6)配置 mysql 的基本设置

#mysql_secure_installation 初始化mysql

7)配置其他节点( host ntp etc/yum.repos.d/sql.repo  下载 MariaDB-G alera-server vim /etc/my.cnf.d/server.cnf配置文件差不多 除了ip

8)在节点处启动 mysql #systemctl start mysql

4.验证集群是否搭建成功

1)#mysql -u root -p >show status like 'wsrep_%';

在显示结果中:wsrep_connected = on 链接已开启 wsrep_cluster_size =2 集群中节点的数量

wsrep_incoming_addresses =192.168.1.2:3306,192.168.1.3:3306 集群中节点的访问地址

2)在其中一个节点处创建一个数据库,在其他节点查看是否可见

3)结果如下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/803853.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp小程序下载并导出excel

<button click"confirmExport">导出excel</button>confirmExport() {let header {"X-Access-Token": uni.getStorageSync(ACCESS_TOKEN), //自定义请求头信息} let url "http"/......"; // 后端API地址uni.request({url: ur…

大语言模型的多模态应用(多模态大语言模型的相关应用)

探索大语言模型在多模态领域的相关研究思路

2024 抖音欢笑中国年(三):编辑器技巧与实践

前言 本次春节活动中&#xff0c;我们大部分场景使用内部的 SAR Creator互动方案来实现。 SAR Creator 是一款基于 TypeScript 的高性能、轻量化的互动解决方案&#xff0c;目前支持了Web和字节内部跨端框架平台&#xff0c;服务于字节内部的各种互动业务&#xff0c;包括但不限…

DHCP服务器的高可靠、高可用+负载均衡配置

一、适用场景 1、DHCP地址池集中化的管理环境中&#xff08;本例建立了200个C类网24位的地址池&#xff09;&#xff1b; 2、全网仅1台合法的DHCP服务器&#xff08;要是它宕机全部断网&#xff0c;本例旨在提高服务器的可靠性、可用性&#xff0c;双DHCP服务器性能上负载均衡…

AIoT人工智能物联网----刷机、系统安装、示例、摄像头等

软件链接见文末 1. jetson nano硬件介绍 载板 模组卡座:放置核心板 micro SD卡接口:插SD卡,将操作系统写入SD卡,然后插入;建议至少为32GB。当然根据使用情况可以是64GB;卡的质量一定要好,读写速度快。之前买了同品牌128G的比64G的慢很多。所以大小合适就好M.2 Key E …

防SSL证书泄露服务器IP教程

在Web CDN&#xff08;内容分发网络&#xff09;中&#xff0c;防止SSL泄露源服务器IP是一个重要的安全考虑。下面是一些建议的方法来实现这一目标&#xff1a; 首先呢&#xff0c;我们隐藏服务器IP不要使用服务器IP生成的SSL证书&#xff0c;不然会泄露我们的服务器IP。 泄露了…

HDFS [MSST‘10] 论文阅读笔记

原论文:The Hadoop Distributed File System (MSST’10) HDFS关键技术要点概览 设计目标:HDFS旨在可靠地存储大型数据集,并以高带宽流式传输这些数据集到用户应用程序。它通过在大量服务器上分布存储和计算资源,使得资源可以随着需求的增长而扩展,同时保持经济高效。架构组…

Training - 使用 WandB 配置 可视化 模型训练参数

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/137529140 WandB (Weights&Biases) 是轻量级的在线模型训练可视化工具&#xff0c;类似于 TensorBoard&#xff0c;可以帮助用户跟踪…

基于遗传模拟退火混合优化算法的车间作业最优调度matlab仿真,输出甘特图

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1遗传算法与模拟退火算法简介 4.2 GSAHO算法应用于JSSP 5.完整程序 1.程序功能描述 车间作业调度问题&#xff08;Job Shop Scheduling Problem, JSSP&#xff09;是一种典型的生产调度问…

3D Web轻量化引擎HOOPS Commuicator如何从整体装配中创建破碎的装配零件和XML?

前言 虽然可以从某些本机CAD格式&#xff08;其子组件驻留在单独的文件中&#xff0c;例如CATIA V5、Creo - Pro/E、NX或SolidWorks&#xff09;创建破碎装配&#xff0c;但无法从整体装配文件&#xff08;例如IFC、Revit&#xff09;创建或3DXML。 本文介绍了一个示例&#…

设计模式(22):解释器模式

解释器 是一种不常用的设计模式用于描述如何构成一个简单的语言解释器&#xff0c;主要用于使用面向对象语言开发的解释器和解释器设计当我们需要开发一种新的语言时&#xff0c;可以考虑使用解释器模式尽量不要使用解释器模式&#xff0c;后期维护会有很大麻烦。在项目中&…

vue+springboot实现JWT登录验证

目录 前言概念实际演示路由信息初始访问登录界面登录验证验证过期 vue实现依赖引入main.js获取和设置token工具类登录方法实体登录方法axios请求 router配置 springboot实现依赖引入JWT工具类忽视jwt验证注解拦截器逻辑跨域&调用拦截器配置登录接口&验证token接口 结语…

【软考】下午题:面向对象与程序设计【接口、抽象类、this、super使用】

文章目录 1、位运算符2、特殊关键字的使用&#xff1a;break、continue3、成员变量&#xff08;类的属性&#xff09;和局部变量的区别4、this关键字5、super关键字6、抽象类与abstract关键字7、接口8、Java权限修饰符 1、位运算符 注意&#xff1a; ①右移根据最高位是0&#…

SOLIDWORKS如何新建定义材质库

SolidWorks材质库中包含了大量的材料选项&#xff0c;涵盖了金属、塑料、橡胶、复合材料等各种类型&#xff0c;每种材料都有详细的特性参数。用户可以根据设计需求&#xff0c;在材质库中选择合适的材料&#xff0c;从而更好地满足设计要求。在有限元分析中&#xff0c;需要附…

统一用安卓Studio修改项目包名

可以逃跑&#xff0c;可以哭泣&#xff0c;但不可以放弃 --《鬼灭之刃》 修改项目包名 1&#xff09;选中项目中药修改的包名&#xff1a; 2)目结构显示方式&#xff0c;取消 Compact Middle Packages 选项&#xff1b; 3)右键要修改的包名&#xff0c;选择 Refactor —— Re…

结构体及联合体大小计算

结构体大小计算 结构体大小的计算的依据是结构体内存对齐 对齐规则&#xff1a; 1.结构体的第一个成员对齐到和结构体变量起始位置偏移量为0的地址处 2.其他成员变量要对齐到某个数字&#xff08;对齐数&#xff09;的整数倍的地址处。 &#xff08;对齐数编译器默认的一个对齐…

超越常规:用PHP抓取招聘信息

在人力资源管理方面&#xff0c;有效的数据采集可以为公司提供宝贵的人才洞察。通过分析招聘网站上的职位信息&#xff0c;人力资源专员可以了解市场上的人才供给情况&#xff0c;以及不同行业和职位的竞争状况。这样的数据分析有助于企业制定更加精准的招聘策略&#xff0c;从…

redis的三大模式的演化及集群模式思考和总结

redis的三大模式&#xff0c;也是循序渐进。 1、主从复制 比如一开始的读写分离的&#xff0c;主从复制。 一个master&#xff0c;多个slave。 master进行写和 增量同步&#xff0c;slave负责读&#xff0c;和接收增量同步的信息。 这样压力减轻。 2、哨兵模式 这个推出…

打印CSDN博客只需两步

打印博客 关闭浏览器限制 浏览器打开对应博客&#xff0c;F12&#xff0c;在console下粘贴如下代码&#xff0c;回车 (function doPrint(){var head_str "<html><head><title></title></head><body>"; var foot_str "&…

4月9日学习记录

[GXYCTF 2019]禁止套娃 涉及知识点&#xff1a;git泄露&#xff0c;无参数RCE 打开环境&#xff0c;源码什么的都没有&#xff0c;扫描后台看看 扫描发现存在git泄露 用githack下载查看得到一串源码 <?php include "flag.php"; echo "flag在哪里呢&#…