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)结果如下

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

最新剧透前沿信息GPT-5或将今年发布

GPT2 很糟糕 &#xff0c;GPT3 很糟糕 &#xff0c;GPT4 可以 &#xff0c;但 GPT5 会很好。 PS:GPT2 很糟糕,3 很糟糕,4 可以,5 很可以。 如果想升级GPT4玩玩&#xff0c;地址 今年发布的具有推理功能的 GPT5不断发展&#xff0c;就像 iPhone 一样 Sam Altman 于 17 日&am…

超级详细的 Maven 教程(基础+高级)

1. Maven 是什么 Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具。 一个 Maven 工程有约定的目录结构&#xff0c;约定的目录结构对于 Maven 实现自动化构建而言是必不可少的一环&#xff0c;就拿自动编译来说&#xff0c;Maven 必须…

《论文阅读》构建情感共识并利用未配对数据生成共情对话 ACL 2021

《论文阅读》构建情感共识并利用未配对数据生成共情对话 ACL 2021 前言简介模型构架损失函数实验结果前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天为大家带来的是《Constructing Emotion Consensus and Utilizing …

我的创作纪念日❤2024/4/9

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

《前端面试题》- CSS - CSS选择器的优先级

行内样式1000 d选择器100 属性选择器、class或者伪类10 元素选择器&#xff0c;或者伪元素1 通配符0 参考网址&#xff1a;https://blog.csdn.net/jbj6568839z/article/details/113888600https://www.cnblogs.com/RenshuozZ/p/10327285.htmlhttps://www.cnblogs.com/zxjwlh/p/6…

uniapp 地图分幅网格生成 小程序基于map组件

// 获取小数部分 const fractional function(x) {x Math.abs(x);return x - Math.floor(x); } const formatInt function(x, len) {let result x;len len - result.length;while (len > 0) {result 0 result;len--;}return result; }/*** 创建标准分幅网格* param …

unity数组

数组的定义 动态初始化:在定义数组时只指定数组的长度&#xff0c;由系统自动为元素赋初值的方式。 静态初始化:定义数组的同时就为数组的每个元素赋值 数组的静态初始化有两种方式 1、类型门数组名new 类型[]{元素&#xff0c;元素&#xff0c;…}; 2、类型[数组名{元素&am…

SSL数字证书

SSL数字证书产品提供商主要来自于国外&#xff0c;尤其是美国&#xff0c;原理和使用操作系统一样&#xff0c;区别在于SSL数字证书目前无法替代性&#xff0c;要想达到兼容性99%的机构目前全球才3-4家&#xff0c;目前国内的主流网站主要使用的是国际证书&#xff0c;除了考虑…

爬虫 新闻网站 以湖南法治报为例(含详细注释) V4.0 升级 自定义可任意个关键词查询、时间段、粗略判断新闻是否和优化营商环境相关,避免自己再一个个判断

目标网站&#xff1a;湖南法治报 爬取目的&#xff1a;为了获取某一地区更全面的在湖南法治报的已发布的和优化营商环境相关的宣传新闻稿&#xff0c;同时也让自己的工作更便捷 环境&#xff1a;Pycharm2021&#xff0c;Python3.10&#xff0c; 安装的包&#xff1a;requests&a…

K8S哲学 - kubectl

Kubectl is the Kubernetes cli version of a swiss army knife, and can do many things. Kubernetes coordinates a highly available cluster of computers that are connected to work as a single unit k8s production-ready. 概念 kubectl 和 Kubernetes API 区别

使用Docker Registry-v2搭建镜像仓库详细教程

我们使用docker来部署私有化镜像仓库… 1、下载 registry:v2 镜像 docker pull registry:22、在私有仓库所在的主机目录新建一个文件夹&#xff0c;用于持久化保存仓库中的镜像 mkdir -p /opt/registry3、启动registry镜像 使用docker镜像启动私有仓库容器服务&#xff0c;…

【azure笔记 1】容器实例管理python sdk封装

容器实例管理python sdk封装 测试结果 说明 这是根据我的需求写的&#xff0c;所以有些参数是写死的&#xff0c;比如cpu核数和内存&#xff0c;你可以根据你的需要自行修改。前置条件&#xff1a; 当前环境已安装python3.8以上版本和azure cli并且已经登陆到你的账户 依赖安…

网络基础三——IP协议补充和Mac帧协议

全球网络及网段划分的理解 ​ 根据国家组织地区人口综合评估进行IP地址范围的划分&#xff1b; ​ 假设前8位用来区分不同的国家&#xff0c;国际路由器负责全球数据传输&#xff0c;子网掩码为IP/8&#xff1b;次6位区分不同的省份&#xff0c;国内路由器负责全国数据的传输…

【CSS】MDN

一、CSS构建 1.1 CSS选择器 1.1.1 元素选择器 标签不区分大小写 示例&#xff1a; span {background-color: yellow; }1.1.2 通用选择器 选择文档中所有内容&#xff0c;重置样式表中使用较多 鉴于div:first-child&#xff08;代表所有的div元素&#xff0c;并且是第一个…

杨辉三角形(蓝桥杯,acwing)

题目描述&#xff1a; 下面的图形是著名的杨辉三角形&#xff1a; 如果我们按从上到下、从左到右的顺序把所有数排成一列&#xff0c;可以得到如下数列&#xff1a; 1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, ... 给定一个正整数 N&#xff0c;请你输出数列中第一次出现…

OpenAI曾转录100万小时视频数据,训练GPT-4

4月7日&#xff0c;纽约时报在官网发布了一篇名为《科技巨头如何挖空心思&#xff0c;为AI收集数据》的技术文章。 纽约时报表示&#xff0c;OpenAI曾在2021年几乎消耗尽了互联网有用的文本数据源。为了缓解训练数据短缺的难题&#xff0c;便开发了知名开源语音识别模型Whispe…

Windows完全卸载MySQL后再下载安装(附安装包)

目录 友情提醒第一章&#xff1a;如何完全卸载干净mysql教程&#xff08;三个步骤完全卸载&#xff09;1&#xff09;步骤一&#xff1a;卸载程序2&#xff09;步骤二&#xff1a;删除文件3&#xff09;步骤三&#xff1a;删除注册表信息 第二章&#xff1a;下载软件两种方式1&…

langchain LCEL,prompt模块,outputparse输出模块

目录 基本代码 prompt模块 prompt模版控制长度 outputparse格式化输出 LangChain表达式语言&#xff0c;或者LCEL&#xff0c;是一种声明式的方式&#xff0c;可以轻松地将链条组合在一起 langchian 可以使用 通义千问&#xff0c;我们用通义千问&#xff0c;用法也要申请…

Java语言实现文件分割与合并

一&#xff1a; 题目&#xff1a; 写一个方法,将feige.exe文件分割为每份1MB大小的若干份(最后一份可以不满1MB), 存储在一个temp的文件夹中(每份文件名自己定义,例如1.temp 2.temp), 然后再写一个方法,将temp文件夹中的若干份合并为一个文件fg.exe 代码&#xff1a; main…

FreeGPT3.5 开源软件

GPT-3.5不需要付费&#xff0c;也不需要注册用户&#xff0c;可以直接使用了&#xff0c;官方彻底开放了API接口。 该API政策一放开&#xff0c;GitHub很快就已经出现了一个开源项目FreeGPT35&#xff0c;可以自动生成key调用GPT3.5的API接口&#xff0c;再也用不着注册账号和申…