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的并行复制
MySQL半同步模式
gtid模式设置
1.编辑配置文件(vim /etc/my.cnf),然后重启服务
半同步模式的启用
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-router(mysql路由)
部署方法
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,并重新建立主从复制关系。这种复杂的管理过程对应用程序是透明的,不会对其正常运行产生任何影响。