MySQL集群技术

mysql简介

MySQL是一种广泛使用的开源关系型数据库管理系统,最初由瑞典MySQL AB公司开发,现由Oracle公司维护。它支持多个操作系统平台,包括Linux、Windows、macOS等,并且提供高效、可靠、稳定的数据存储和管理服务。

MySQL集群技术是一种通过将多个MySQL服务器组织起来,实现高可用性、可扩展性和负载均衡的数据库系统解决方案。它能够有效地提高数据库的性能和稳定性,保证数据安全

mysql源码安装

1.下载源码安装需要用到的软件

2.导入libtirpc-devel-0.2.4-0.16.el7.x86_64.rpm并下载

3.导入mysql-boost-5.7.44.tar.gz并解压

4.源码编译安装mysql

mysql部署

1.安装所需要的包并生成启动脚本

2.修改环境变量

3.生成数据目录并求改目录权限(找不到图了,下面是源代码)

useradd -s /sbin/nologin -M mysql
mkdir -p /data/mysql
chown mysql.mysql /data/mysql/

4.修改配置文件(vim /etc/my.cnf

5.数据库初始化建立mysql基本数据并启动MySQL,再进行安全初始化

(初始化会有临时密码)

mysql的组从复制

MySQL主从复制原理

在master上:

主服务器上的所有更改操作(如INSERT、UPDATE、DELETE等)都会记录在二进制日志中(binlog)。这个日志文件记录了所有对数据库数据的修改操作,是主从复制的基础。

当有从服务器(Slave)连接请求数据时,主服务器会创建一个Dump线程,用于读取二进制日志,并将日志内容发送给从服务器。

在slave上:

从服务器会创建一个I/O线程,向主服务器请求二进制日志的内容。I/O线程接收来自主服务器的Dump线程发送的日志数据,并将其写入到从服务器的中继日志(Relay Log)中。从服务器上还有一个SQL线程,这个线程负责读取中继日志中的事件,并在从服务器上执行这些事件,从而实现数据的同步。

1.编辑master配置文件(vim /etc/my.cnf)

2.再MySQL中创建用户并对其授权

3.编辑客户端配置文件(vim /etc/my.cnf)

4.重启服务登录MySQL

5.给客户端指定master,注意根据自己的mater修改日志文件和端口

6.在客户端开启服务并查看状态

测试在主中创建数据库与表并插入数据看slave中数据是否同步

####组从复制中slave默认是可以写入的,为了保证数据的一致性,可以在slave修改配置文件加入选项super_read_only=on #####

MySQL组从复制(当复制之前master已经有数据)

1.将一台新主机slave2指定给master        

2.为防止将master已有数据迁移到master过程中有人写入,进行锁表

3.master节点备份数据(这里的警告是在命令中输入密码不安全,实验环境无需理会)

4.将备份的数据拉平读入(忘记截图了,下面为源代码)

mysql -uroot -pxu -e "create database xu;"
mysql -uroot -pxu <xu.sql
mysql -uroot -pxu -e "select * from xu.userlist;"

5.对master表进行解锁

MySQL延迟复制

MySQL延迟复制是一种在主从复制中设置的机制,它允许主服务器上的事务提交后,等待一段时间再将数据同步到从服务器。这种机制的主要目的是减少主从服务器之间的网络流量和负载,提高系统性能。

在客户端首先暂停SQL进程随后更改延迟复制时间重启SQL进程

效果查看

MySQL慢查询

慢查询日志是MySQL数据库中用于记录执行时间超过指定阈值的SQL语句的日志文件。通过分析慢查询日志,可以找出性能瓶颈,优化SQL语句以提高数据库性能。

配置:

SET GLOBAL slow_query_log=ON; 命令将全局变量 slow_query_log 设置为 ON,表示启用慢查询日志功能。这意味着MySQL服务器将记录执行时间超过指定阈值的SQL语句。

SET long_query_time=4; 命令将全局变量 long_query_time 设置为 4 秒。这意味着只有执行时间超过 4 秒的SQL语句才会被记录到慢查询日志中

效果查看:

mysql的并行复制

默认情况下 slave 中使用的是 sql 单线程回放
master 中时多用户读写,如果使用 sql 单线程回放那么会造成组从延迟严重
开启 MySQL 的多线程回放可以解决上述问题
编辑客户端配置文件
重启服务查看效果

MySQL半同步模式

1. 用户线程写入完成后 master 中的 dump 会把日志推送到 slave
2.slave 中的 io 线程接收后保存到 relaylog 中继日志
3. 保存完成后 slave master 端返回 ack
4. 在未接受到 slave ack master 端时不做提交的,一直处于等待当收到 ack 后提交到存储引擎
5. 5.6 版本中用到的时 after_commit 模式, after_commit 模式时先提交在等待 ack 返回后输出 ok

gtid模式设置

1.编辑配置文件(vim /etc/my.cnf),然后重启服务

2. slave 端开启 gtid 模式
效果查看

半同步模式的启用

1.在master修改配置文件,开启半同步

2.在master端安装半同步插件

3.打开半同步功能,并查看状态

4.在slave端同样修改配置文件

5.安装半同步插件打开半同步功能

6.在slave端重启io现场查看状态

mysql高可用之组复制 (MGR)

MySQL组复制是一种高可用性解决方案,它允许在多个MySQL服务器之间进行数据同步。这种技术可以提供自动故障转移、负载均衡和扩展性。MGR 对属于同一组的服务器自动进行协调。对于要提交的事务,组成员必须就全局事务序列中给定事务 的顺序达成一致提交或回滚事务由每个服务器单独完成,但所有服务器都必须做出相同的决定 如果存在网络分区,导致成员无法达成事先定义的分割策略,则在解决此问题之前系统不会继续进行, 这是一种内置的自动裂脑保护机制

MGR的实现

1.编辑主配置文件(node1)

        

disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY":禁用的存储引擎列表。gtid_mode=ON:启用全局事务标识符(GTID)。

enforce_gtid_consistency=ON:强制执行GTID一致性。

master_info_repository=TABLE:主信息存储在表中。

relay_log_info_repository=TABLE:中继日志信息存储在表中。

binlog_checksum=NONE:二进制日志校验和设置为NONE。

log_slave_updates=ON:记录从服务器更新。log_bin=binlog:二进制日志文件名为binlog。

binlog_format=ROW:二进制日志格式为行。

plugin_load_add='group_replication.so':加载group_replication插件。

transaction_write_set_extraction=XXHASH64:事务写集提取算法为XXHASH64。

group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa":组复制组名。

group_replication_start_on_boot=off:启动时不自动启动组复制。

group_replication_local_address="172.25.254.10:33061":本地地址。

group_replication_group_seeds="172.25.254.10:33061,172.25.254.20:33061,172.25.254.30:33061":组种子节点地址。

group_replication_ip_whitelist="172.25.254.0/24,127.0.0.1/8":允许加入组复制的IP白名单。

group_replication_bootstrap_group=off:不使用引导模式启动组复制。

group_replication_single_primary_mode=OFF:不启用单一主模式。

group_replication_enforce_update_everywhere_checks=ON:强制执行更新检查。

group_replication_allow_local_disjoint_gtids_join=1:允许本地断开的GTID加入组复制

2.删除之前的mysql,重新初始化然后登录

3.关闭二进制日志,创建测试用户并授权

4.配置主服务器信息

5.开启组复制引导模式然后启动组复制再关闭引导模式

6.远程传输配置文件到另外两个节点再略作修改

7.在另外两个节点重新初始化

8.在另外两个节点执行与主节点一致操作

效果查看

mysql-routermysql路由)

部署方法

1.网上下载mysql的router包

2.安装mysql-router

3.修改配置文件

4.开启服务

mysql高可用之MHA概述

MHA(Master High Availability)是一款开源的MySQL高可用解决方案,专为MySQL主从复制架构提供自动化的主故障转移功能。

MHA能监控master节点的健康状况,一旦发现master节点出现问题,便会自动提升拥有最新数据的slave节点成为新的master节点,确保数据的一致性和可用性。这种自动故障转移的过程通常在30秒内完成,大大减少了系统的宕机时间。

MHA由两部分组成:MHA Manager和MHA Node。MHA Manager通常单独部署在一台机器上,负责监控和管理整个MySQL集群,每个集群在该架构中被称为一个application。而MHA Node则运行在每个MySQL服务器上,接收管理节点发出的指令并执行相关操作。

为了实现故障转移,MHA会执行一系列步骤,包括保存宕机master的二进制日志事件,识别拥有最新数据的slave节点,应用差异的中继日志到其他slave节点,提升一个slave节点为新的master,并重新建立主从复制关系。这种复杂的管理过程对应用程序是透明的,不会对其正常运行产生任何影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值