Mysql 集群技术

Mysql在服务器中的部署方法

安装MySQL依赖性

root@mysql-node10 ~]# dnf install cmake gcc-c++ openssl-devel \

ncurses-devel.x86_64 libtirpc-devel-1.3.3-8.el9_4.x86_64.rpm rpcgen.x86_64

下载并解压源码包

使用命令tar zxf mysql-boost-5.7.44.tar.gz进行解压

源码编译安装mysql

[root@mysql-node10 mysql-5.7.44]# cmake \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定安装路径

-DMYSQL_DATADIR=/data/mysql \ #指定数据目录

-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \ #指定套接字文件

-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #指定启用INNODB存储引擎,默认

用myisam

-DWITH_EXTRA_CHARSETS=all \ #扩展字符集

-DDEFAULT_CHARSET=utf8mb4 \ #指定默认字符集

-DDEFAULT_COLLATION=utf8mb4_unicode_ci \ #指定默认校验字符集

-DWITH_BOOST=/root/mysql-5.7.44/boost/boost_1_59_0/ #指定c++库依赖

[root@mysql-node10 mysql-5.7.44]# make -j2 #-j2 表示有几个

核心就跑几个进程

[root@mysql-node10 mysql-5.7.44# make install

部署mysql

创建MySQL数据目录和创建用户并给定权限

生成启动脚本

[root@node10 ~]# cd /usr/local/mysql/support-files/

[root@node10 support-files]# cp mysql.server /etc/init.d/mysqld

修改环境变量

还要进行source ~/.bash_profile命令

生成配置文件

数据库初始化建立mysql基本数据

会随机生成密码,得记住

使用mysql_secure_installation命令进行修改密码,修改完成后便可以进入使用了

安装完成

mysql的组从复制

MySQL的组从复制(Multi-Source Replication)是一种高级复制技术,它允许一个MySQL服务器(主服务器)从多个MySQL服务器(从服务器)接收数据。这种复制方式可以提高数据的可用性和系统的容错能力,同时也支持读写分离,提升系统的并发处理能力。

组从复制的基本原理是在主服务器上配置多个从服务器的连接,每个从服务器都可以独立地向主服务器发送复制请求。主服务器维护一个二进制日志(Binary Log),记录所有的数据变更操作。从服务器通过IO线程连接到主服务器,并请求二进制日志的内容。主服务器的二进制日志dump线程将日志事件发送给从服务器的IO线程,从服务器的IO线程将这些日志事件写入到本地的中继日志(Relay Log)中。最后,从服务器的SQL线程会读取中继日志中的事件,并在本地数据库上执行这些事件,从而实现数据的同步。

MySQL组从复制的作用

组从复制的主要作用包括:

  1. 提高数据可用性:通过从多个服务器复制数据,即使部分服务器出现故障,系统仍然可以继续运行,因为数据已经在其他服务器上有了副本。

  2. 读写分离:可以将读操作分散到多个从服务器上,减轻主服务器的负载,提高系统的整体性能。

  3. 容错能力:在主服务器发生故障时,可以迅速将服务切换到从服务器,确保服务的连续性和可用性。

  4. 数据备份:从服务器可以用于数据库备份目的,备份可以在不影响主服务器性能的情况下进行,而且备份可以是实时的,以确保数据安全4。

  5. 支持复杂的复制拓扑:组从复制支持构建复杂的复制拓扑结构,如级联复制,可以有效缓解主服务器的复制压力,同时对数据一致性没有负面影响

主机:172.25.254.10

从机:172.25.254.20

在主机中配置如下

从机配置如下:

主机进入MySQL数据库后操作

配置用户权限

查看master的状态

从机上:

连接主机并启动slave

查看slave连接是否成功

测试:

在主机上建库

从机进行查看

同样有lee库

主机建表测试:

从机查看,同样有这个表,说明实验成功

多台主从

将mysql1进行备份给node3

备份成功

配置多台主从

配置成功

延迟复制:

时间为60s

#在slave端

mysql> STOP SLAVE SQL_THREAD;

mysql> CHANGE MASTER TO MASTER_DELAY=60;

mysql> START SLAVE SQL_THREAD;

mysql> SHOW SLAVE STATUS\G;

在master主机中新加内容

第一时间查询不到结果

60s后

慢查询

在MySQL中,慢查询通常指的是执行时间超过预设阈值的SQL查询。这个阈值可以在MySQL的配置文件中设置,默认情况下可能是2秒。当一个查询的执行时间超过这个阈值时,它会被记录到慢查询日志中。慢查询日志是MySQL提供的一种日志记录机制,用于帮助数据库管理员和开发人员识别和优化性能较差的查询。

MySQL慢查询的作用

慢查询的作用主要包括以下几点:

  1. 性能优化:通过分析慢查询日志,可以找出执行时间较长的查询,进而对这些查询进行优化,以提高数据库的整体性能。
  2. 资源管理:慢查询可能会占用大量的数据库资源,如CPU和内存。通过监控和优化慢查询,可以更有效地管理这些资源,避免数据库过载。
  3. 故障排查:慢查询日志可以帮助定位数据库性能问题,识别潜在的瓶颈,从而进行故障排查和性能调优

mysql> SET GLOBAL slow_query_log=ON;

Query OK, 0 rows affected (0.00 sec)

mysql> SET long_query_time=4;

Query OK, 0 rows affected (0.00 sec)

查看日志

测试:

mysql> select sleep (10);

[root@mysql-node1 ~]# cat /data/mysql/mysql-node1-slow.log

/usr/local/mysql/bin/mysqld, Version: 5.7.44-log (Source distribution). started

with:

Tcp port: 3306 Unix socket: /data/mysql/mysql.sock

Time Id Command Argument

\# Time: 2024-07-29T17:04:07.612704Z

\# User@Host: root[root] @ localhost [] Id: 8

\# Query_time: 10.000773 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0

SET timestamp=1722272647;

select sleep (10);

并行复制

MySQL并行复制是为了提高主从复制的效率,减少主从延迟而设计的。在传统的主从复制中,从服务器上只有一个SQL线程来重放主服务器上的二进制日志(binlog),这在主服务器负载较高时会导致从服务器的复制延迟。并行复制通过允许从服务器上的多个SQL线程同时重放不同的二进制日志事件来解决这个问题。

MySQL并行复制的作用

并行复制的主要作用是减少主从复制中的延迟,提高数据同步的效率。通过允许从服务器上的多个SQL线程并发处理不同的二进制日志事件,并行复制可以更好地利用从服务器的硬件资源,特别是在主服务器负载较高时,可以显著提升复制性能,确保从服务器能够更快地应用主服务器上的更改,从而保持数据的一致性和实时性。此外,并行复制还有助于提高数据库的高可用性,因为减少了复制延迟,可以更快地在主服务器出现故障时进行故障转移

此时sql线程转化为协调线程,16个worker负责处理sql协调线程发送过来的处理请求

半同步模式

MySQL的半同步复制(Semisynchronous replication)是一种复制模式,它介于异步复制和全同步复制之间。在半同步复制模式下,主库在执行完客户端提交的事务后,不是立即返回给客户端,而是等待至少一个从库确认接收到了该事务的二进制日志(binlog)事件,并将其写入到中继日志(relay log)中,主库在收到至少一个从库的确认后才会向客户端返回操作完成的响应。这样可以确保主库上的事务至少在一个从库上有了副本,提高了数据的安全性。

半同步复制的主要作用是提高数据的一致性和可靠性。在默认的异步复制模式中,主库在提交事务后不会等待从库的确认,这可能导致主从数据不一致的情况。而半同步复制通过等待至少一个从库的确认,减少了这种风险。即使主库发生故障,已经同步到至少一个从库的事务数据也不会丢失,从而在主从切换时能够保持数据的一致性。

半同步复制还可以在一定程度上减少主库的数据丢失风险,因为它确保了在主库崩溃前,至少有一部分数据已经安全地复制到了从库。此外,半同步复制提供了一个比异步复制更强的数据一致性保证,同时相比全同步复制,它对性能的影响较小,因为它只要求至少一个从库确认接收,而不是所有从库都完成事务的复制。

gtid模式

主机

slave1:

slave2:

slave1:

[root@mysql-node2 ~]# mysql -p

mysql> stop slave;

Query OK, 0 rows affected (0.00 sec)

mysql> CHANGE MASTER TO MASTER_HOST='172.25.254.10', MASTER_USER='repl',

MASTER_PASSWORD='ljx', MASTER_AUTO_POSITION=1;

mysql> start slave;

mysql> show slave status\G;

slave2:

[root@mysql-node3 ~]# mysql -p

mysql> stop slave;

Query OK, 0 rows affected (0.01 sec)

mysql> CHANGE MASTER TO MASTER_HOST='172.25.254.10', MASTER_USER='repl',

MASTER_PASSWORD='ljx', MASTER_AUTO_POSITION=1;

mysql> start slave;

mysql> show slave status\G;

启用半同步模式

master中:

安装半同步插件和查看插件状态

#打开半同步功能和查看半同步功能状态

在slave端开启半同步功能

[root@mysql-node2 ~]# vim /etc/my.cnf

slave1和2端查看服务状态(slave1和slave2操作相同)

mysql> SET GLOBAL rpl_semi_sync_slave_enabled =1;

Query OK, 0 rows affected (0.00 sec)

mysql> STOP SLAVE IO_THREAD; #重启io线程,半同步才能生效

Query OK, 0 rows affected (0.00 sec)

mysql> START SLAVE IO_THREAD; ##重启io线程,半同步才能生效

Query OK, 0 rows affected (0.00 sec)

测试:在master中写入内容,在slave1和2中查看是否生成

slave1:

slave2:

模拟故障:停掉slave1和slave2,master无法生成表内容

开启后马上成功生成内容

实验完成

实现mysql组复制

MySQL组复制(MySQL Group Replication,简称MGR)是MySQL官方提供的一种分布式复制解决方案,它建立在现有的MySQL复制框架之上,并基于Paxos协议实现。组复制的核心在于通过组通讯层和XCom层(Paxos层)来确保集群中的数据一致性和高可用性。

在组复制中,每个节点都可以独立执行事务,但在事务提交之前,会通过组通讯层将事务的变更广播给集群中的其他节点。这样可以确保所有节点上的事务以相同的顺序执行,从而达到数据的一致性。组通讯层还负责故障检测和集群成员的管理。XCom层基于Paxos协议,确保了集群中各节点收到数据的顺序一致,并且在多数派节点可用的情况下,数据不会丢失。

MySQL组复制的作用

MySQL组复制的主要作用包括:

  1. 数据一致性:通过Paxos协议确保集群中所有节点的数据一致性,即使在网络分区或节点故障的情况下也能保持数据的同步。
  2. 高可用性:当集群中的主节点发生故障时,组复制能够自动进行主备切换,确保服务的连续性。
  3. 自动故障检测和恢复:组复制能够自动检测节点故障,并在故障恢复后,通过复制来同步数据,恢复节点的正常运行。
  4. 支持多主和单主模式:组复制支持多主模式,其中所有节点都可以读写,适用于读写负载均衡;也支持单主模式,其中只有一个节点可以写入,适用于需要严格控制写操作的场景。
  5. 扩展性:新节点可以自动加入集群,并从现有节点同步数据,实现集群的水平扩展。

主设备配置

从设备和主设备一样,只需改IP即可。

在MySQL1中:

mysql> SET SQL_LOG_BIN=0;

Query OK, 0 rows affected (0.00 sec)

mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'ljx';

Query OK, 0 rows affected (0.00 sec)

mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';

Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

mysql> SET SQL_LOG_BIN=1;

Query OK, 0 rows affected (0.00 sec)

mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='ljx' FOR CHANNEL'group_replication_recovery';

Query OK, 0 rows affected, 2 warnings (0.00 sec)

mysql> SET GLOBAL group_replication_bootstrap_group=ON; #用以指定初始成员,值在第

一台主机中执行

Query OK, 0 rows affected (0.00 sec)

mysql> START GROUP_REPLICATION;

Query OK, 0 rows affected, 1 warning (2.19 sec)

mysql> SET GLOBAL group_replication_bootstrap_group=OFF;

Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM performance_schema.replication_group_members;

从设备中,配置相同

mysql> SET SQL_LOG_BIN=0;

Query OK, 0 rows affected (0.00 sec)

mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'ljx';

Query OK, 0 rows affected (0.00 sec)

mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';

Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

mysql> SET SQL_LOG_BIN=1;

Query OK, 0 rows affected (0.00 sec)

mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='ljx' FOR CHANNEL'group_replication_recovery';

Query OK, 0 rows affected, 2 warnings (0.00 sec)

mysql> START GROUP_REPLICATION;

Query OK, 0 rows affected, 1 warning (2.19 sec)

mysql> SELECT * FROM performance_schema.replication_group_members;

在mysql2中配置并查看

在MySQL3中查看

测试:

在MySQL1中插入表并写入内容

在MySQL2和MySQL3中查看

在MySQL2中写入内容

MySQL1和3同样能查看

在MySQL3中写入内容

在MySQL1和2中查看

mysql-router(mysql路由)

MySQL Router是一个轻量级中间件,它位于应用程序和MySQL服务器之间,提供透明的数据库流量路由。MySQL Router的核心原理包括:

  1. 流量转发层:MySQL Router作为一个流量转发层,不直接修改或检查数据包,而是根据配置将应用程序的读写请求转发给后端的MySQL服务器。
  2. 负载均衡:当后端有多个MySQL服务器时,MySQL Router可以对读写请求进行负载均衡,确保数据库集群的性能和可用性。
  3. 故障转移:如果某个MySQL服务器失效,MySQL Router能够自动将其从活动列表中移除,并在服务器恢复后重新加入,从而实现故障转移。
  4. 集群拓扑感知:对于构建为InnoDB Cluster模式的MySQL服务器,MySQL Router能够基于metaCache机制感知集群拓扑的变更,如主从切换和从库增减,并据此自动调整路由策略。

MySQL Router的作用

MySQL Router的主要作用包括:

  1. 读写分离:通过将读写请求分发到不同的服务器,提高数据库操作的效率。
  2. 高可用性:自动处理服务器故障,确保应用程序的连续运行。
  3. 负载均衡:在多个服务器之间分配负载,优化资源使用。
  4. 透明性:对前端应用程序来说,MySQL Router是透明的,不需要修改应用程序代码即可利用其功能。
  5. 集群迁移:支持数据库集群的迁移,应用程序无需修改配置即可连接到新的数据库集群。

mysql负载均衡

首先下载mysql-router这个包

配置mysql-router

vim /etc/mysqlrouter/mysqlrouter.conf

在mysql20和30上添加用户

测试:

mysql -ulee -pljx -h 172.25.254.10 -P7001

查看调度效果

MHA部署实施

MySQL MHA(Master High Availability)是一个开源的高可用性解决方案,专注于为MySQL主从复制架构提供自动化的主故障转移。MHA能够在主节点故障时,自动选择一个合适的从节点提升为主节点,并确保数据的一致性。它支持一主多从的架构,并且能够在0-30秒内完成故障切换,从而最大限度地减少服务中断时间1234。MHA由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点),其中管理节点负责监控集群状态并在主节点故障时执行故障转移,而数据节点安装在每台MySQL服务器上,负责执行具体的故障转移任务

在主机中

[root@mysql-node10 ~]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
server-id=1
log-bin=mysql-bin
gtid_mode=ON
log_slave_updates=ON
enforce-gtid-consistency=ON
symbolic-links=0
[root@mysql-node10 ~]# mysql -uroot -p
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'lee';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT REPLICATION SLAVE ON *.* TO repl@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
Query OK, 0 rows affected (0.02 sec)
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;
Query OK, 0 rows affected (0.00 sec)

在 slave1 和 slave2 中

[root@mysql-node20 & 30 ~]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
server-id=1
log-bin=mysql-bin
gtid_mode=ON
log_slave_updates=ON
enforce-gtid-consistency=ON
symbolic-links=0
在slave1和slave2中
[root@mysql-node20 & 30 ~]# mysql -p
mysql> CHANGE MASTER TO MASTER_HOST='172.25.254.10', MASTER_USER='repl',
MASTER_PASSWORD='lee', MASTER_AUTO_POSITION=1;
Query OK, 0 rows affected, 2 warnings (0.00 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
Query OK, 0 rows affected (0.01 sec)
mysql> SET GLOBAL rpl_semi_sync_slave_enabled =1;
Query OK, 0 rows affected (0.00 sec)
mysql> STOP SLAVE IO_THREAD;
Query OK, 0 rows affected (0.00 sec)
mysql> START SLAVE IO_THREAD;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW STATUS LIKE 'Rpl_semi_sync%';

# 在 MHA 中
[root@mysql-mha ~]# unzip MHA-7.zip
[root@mysql-mha MHA-7]# yum install *.rpm -y
[root@mysql-mha MHA-7]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm
root@172.25.254.10:/mnt
[root@mysql-mha MHA-7]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm
root@172.25.254.20:/mnt
[root@mysql-mha MHA-7]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm
root@172.25.254.30:/mnt
在master 中
[root@mysql-node10 ~]# yum install /mnt/mha4mysql-node-0.58-
0.el7.centos.noarch.rpm -y
[root@mysql-node20 ~]# yum install /mnt/mha4mysql-node-0.58-
0.el7.centos.noarch.rpm -y
[root@mysql-node30 ~]# yum install /mnt/mha4mysql-node-0.58-
0.el7.centos.noarch.rpm -y
在mha中
#生成配置文件
[root@mysql-mha ~]# mkdir /etc/masterha
[root@mysql-mha MHA-7]# tar zxf mha4mysql-manager-0.58.tar.gz
[root@mysql-mha MHA-7]# cd mha4mysql-manager-0.58/samples/conf/
[root@mysql-mha conf]# cat masterha_default.cnf app1.cnf >
/etc/masterha/app1.cnf
# 编辑配置文件
[root@mysql-mha ~]# vim /etc/masterha/app1.cnf
[server default]
user=root #mysql 管理员用户,因为需要做自动化配置
password=lee #mysql 密码
ssh_user=root #ssh 远程登陆用户
repl_user=repl #mysql 主从复制中负责认证的用户
repl_password=lee #mysql 主从复制中负责认证的用户密码
master_binlog_dir= /data/mysql # 二进制日志目录
remote_workdir=/tmp # 远程工作目录
# 此参数使为了提供冗余检测,方式是 mha 主机网络自身的问题无法连接数据库节点,应为集群之外的主机
secondary_check_script= masterha_secondary_check -s 172.25.254.10 -s
172.25.254.11
ping_interval=3 # 每隔 3 秒检测一次
# 发生故障后调用的脚本,用来迁移 vip
# master_ip_failover_script= /script/masterha/master_ip_failover
# 电源管理脚本 # shutdown_script= /script/masterha/power_manager
# 当发生故障后用此脚本发邮件或者告警通知
# report_script= /script/masterha/send_report
# 在线切换时调用的 vip 迁移脚本,手动
# master_ip_online_change_script= /script/masterha/master_ip_online_change
manager_workdir=/etc/masterha #mha 工作目录
manager_log=/var/etc/masterha/manager.log #mha 日志
[server1]
hostname=172.25.254.10
candidate_master=1 # 可能作为 master 的主机
check_repl_delay=0
[server2]
hostname=172.25.254.20
candidate_master=1 # 可能作为 master 的主机
check_repl_delay=0
[server3]
hostname=172.25.254.30
no_master=1 # 不会作为 master 的主机
检测环境(免密)
[root@mysql-mha ~]# masterha_check_ssh --conf=/etc/masterha/app1.cnf
在数据节点 master 端
检测(环境)
mysql> GRANT ALL ON *.* TO root@'%' identified by 'lee';
[root@mysql-mha ~]# masterha_check_repl --conf=/etc/masterha/app1.cnf

MHA 的故障切换
MHA 的故障切换过程
共包括以下的步骤:
1. 配置文件检查阶段,这个阶段会检查整个集群配置文件配置
2. 宕机的 master 处理,这个阶段包括虚拟 ip 摘除操作,主机关机操作
3. 复制 dead master 和最新 slave 相差的 relay log ,并保存到 MHA Manger 具体的目录下
4. 识别含有最新更新的 slave
5. 应用从 master 保存的二进制日志事件( binlog events )
6. 提升一个 slave 为新的 master 进行复制
7. 使其他的 slave 连接新的 master 进行复制
切换方式:
master 未出现故障手动切换

# 在 master 数据节点还在正常工作情况下
[root@mysql-mha ~]# masterha_master_switch \
--conf=/etc/masterha/app1.cnf \ # 指定配置文件
--master_state=alive \ # 指定 master 节点状态
--new_master_host=172.25.254.20 \ # 指定新 master 节点
--new_master_port=3306 \ # 执行新 master 节点端口
--orig_master_is_new_slave \ # 原始 master 会变成新的 slave
--running_updates_limit=10000 # 切换的超时时间
检测:
[root@mysql-mha masterha]# masterha_check_repl --conf=/etc/masterha/app1.cnf
master 故障手动切换
[root@mysql-mha masterha]# masterha_master_switch --master_state=dead --
conf=/etc/masterha/app1.cnf --dead_master_host=192.168.56.12 --
dead_master_port=3306 --new_master_host=192.168.56.11 --new_master_port=3306 --
ignore_last_failover
恢复故障 mysql 节点
[root@mysql-node20 tmp]# /etc/init.d/mysqld start
# 测试一主两从是否正常
[root@mysql-mha masterha]# masterha_check_repl --conf=/etc/masterha/app1.cnf

自动切换
[root@mysql-mha masterha]# rm -fr app1.failover.complete # 删掉切换锁文件
# 监控程序通过指定配置文件监控 master 状态,当 master 出问题后自动切换并退出避免重复做故障切换
[root@mysql-mha masterha]# masterha_manager --conf=/etc/masterha/app1.cnf
[root@mysql-mha masterha]# cat /etc/masterha/manager.log
# 恢复故障节点

[root@mysql-node20 mysql]# /etc/init.d/mysqld start
mysql> CHANGE MASTER TO MASTER_HOST='172.25.254.10', MASTER_USER='repl',
MASTER_PASSWORD='lee', MASTER_AUTO_POSITION=1
清除锁文件
[root@mysql-mha masterha]# rm -rf app1.failover.complete manager.log
为 MHA 添加 VIP 功能
cp master_ip_failover master_ip_online_change /usr/local/bin/
[root@mysql-mha ~]# chmod +x /usr/local/bin/master_ip_*
[root@mysql-mha ~]# vim /usr/local/bin/master_ip_failover
[root@mysql-mha ~]# vim /usr/local/bin/master_ip_online_change
[root@mysql-mha masterha]# masterha_manager --conf=/etc/masterha/app1.cnf & 启动监
控程序
[root@mysql-node10 tmp]# ip a a 172.25.254.100/24 dev eth0 # 在 master 节点添加 VIP
恢复故障主机
[root@mysql-node20 mysql]# /etc/init.d/mysqld start
mysql> CHANGE MASTER TO MASTER_HOST='172.25.254.10', MASTER_USER='repl',
MASTER_PASSWORD='lee', MASTER_AUTO_POSITION=1
[root@mysql-mha masterha]# rm -rf app1.failover.complete manager.log
[root@mysql-mha masterha]# masterha_master_switch --conf=/etc/masterha/app1.cnf
--master_state=alive --new_master_host=172.25.254.10 --new_master_port=3306 --
orig_master_is_new_slave --running_updates_limit=10000
查看IP是否回来
[root@mysql-node10 ~]# ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
group default qlen 1000
link/ether 00:0c:29:cb:63:ce brd ff:ff:ff:ff:ff:ff
inet 172.25.254.10/24 brd 172.25.254.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet 172.25.254.100/24 scope global secondary eth0
valid_lft forever preferred_lft forever

 

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

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

相关文章

硬件面试经典 100 题(81~90)题

81、请问下图电路中二极管 D1、D2 有什么作用&#xff1f; 在 Vi 输入电压接近于零时&#xff0c;D1、D2 给三极管 T1、T2 提供偏置电压&#xff0c;使 T1、T2 维持导通&#xff0c;以消除交越失真。 陈氏解释 这道题参见&#xff1a;硬件面试经典 100 题&#xff08;51~70 题…

【自动化】一共获取6600多公司信息【逆向】一页15还加密。

一、【逆向】一页15还加密。 二、【自动化】一共获取6600多公司信息 三、对于两种方式我喜欢第二种自动化 from DrissionPage import ChromiumPage, ChromiumOptions import time # chrome:version co = ChromiumOptions().set_paths(browser_path=r"C:\Users\lenovo\A…

【Java EE】深入理解 Java 线程的生命周期与状态转换

多线程编程在 Java 中是实现高效并发的核心技术之一。每个线程在其生命周期内会经历多个状态&#xff0c;这些状态反映了线程在特定时间点的行为与系统资源的使用情况。了解线程的状态及其转换机制&#xff0c;对于编写健壮的并发程序尤为重要。本文将深入探讨 Java 线程的六种…

python 零星知识点

一、头部注释 在Python脚本中&#xff0c;头部注释&#xff08;也称为文档字符串或模块级注释&#xff09;用于提供关于脚本的元数据和描述信息。除了指定解释器和编码方式外&#xff0c;还可以包含其他信息。以下是一些常见的头部注释示例&#xff1a; 1.模块描述 "&qu…

【MySQL】MySQL表的增删改查(初阶)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 表内容操作 插入内容 按顺序插入 指定某些列插入 一次插入多行记录 插入时间 查询表内容 全列查询 指定列查询 指定表达式查询 用as取别名 ​编辑 去重查询 排序查询…

不同搜索引擎蜘蛛的功能、‌抓取策略与技术实现差异探究

搜索引擎作为互联网信息检索的重要工具&#xff0c;‌其核心功能依赖于背后的“蜘蛛”程序。‌这些蜘蛛程序负责访问互联网上的各种内容&#xff0c;‌并建立索引数据库&#xff0c;‌以便用户能够快速准确地找到所需信息。‌然而&#xff0c;‌不同搜索引擎的蜘蛛在功能、‌抓…

Axios介绍;前后端分离开发的介绍;YAPI的使用;Vue项目简介、入门;Elementui的使用;nginx介绍

1 Ajax 1.1 Ajax介绍 1.1.1 Ajax概述 我们前端页面中的数据&#xff0c;如下图所示的表格中的学生信息&#xff0c;应该来自于后台&#xff0c;那么我们的后台和前端是互不影响的2个程序&#xff0c;那么我们前端应该如何从后台获取数据呢&#xff1f;因为是2个程序&#xf…

仿Muduo库实现高并发服务器——EventLoop模块

我刚开始看这个模块时&#xff0c;也是看不明白&#xff0c;什么是事件管理模块。 此时此刻&#xff0c;大领导的背影&#xff0c;还是那么清晰。结合故事模块&#xff0c;慢慢理。 EventLoop模块 成员&#xff1a; 绿色&#xff1a; 利用智能指针对new出来的对象进行管理&…

武汉流星汇聚:亚马逊赋能中小企业,跨境电商市场举足轻重地位稳

在全球经济一体化的浪潮中&#xff0c;跨境电商作为推动国际贸易的重要力量&#xff0c;正以前所未有的速度发展。在这场全球性的商业竞赛中&#xff0c;亚马逊以其卓越的市场表现、强大的技术实力和深厚的品牌影响力&#xff0c;稳居跨境电商市场的领头羊地位&#xff0c;其举…

多任务下载工具.exe

关键代码 void DownloadTask::StartDownload(const QUrl url,QFile *file,qint64 startPoint/* 0 */,qint64 endPoint/* -1 */) {if( NULL file )return;m_HaveDoneBytes 0;m_StartPoint startPoint;m_EndPoint endPoint;m_File file;//根据HTTP协议&#xff0c;写入RANGE…

Vue3基础2

1.Hooks 就是进行数据的封装&#xff0c;同一种类型的 数据 方法 计算属性 &#xff0c;放在一起 命名规范 use功能名称.ts 或.js 创建一个文件夹 hooks 1.useDog.ts import { reactive,onMounted } from "vue"; import axios from "axios";export def…

[数据集][目标检测]红外场景下车辆和行人检测数据集VOC+YOLO格式19069张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;19069 标注数量(xml文件个数)&#xff1a;19069 标注数量(txt文件个数)&#xff1a;19069 标…

SQL AI 工具:颠覆数据库管理与分析的创新力量

一、SQL AI 工具的兴起与发展 在当今数字化的时代&#xff0c;数据量呈现爆炸式增长&#xff0c;企业和个人对于高效管理和分析数据的需求日益迫切。传统的数据库管理和查询方式&#xff0c;对于非技术人员来说存在较高的门槛&#xff0c;操作复杂且耗时。这一背景为 SQL AI 工…

人工智能开发NPU使用

1. NPU使用 RK3588 内置 NPU 模块, 处理性能最高可达6TOPS&#xff08;即每秒处理6万亿次操作&#xff09;。这款NPU不仅拥有强大的计算能力&#xff0c;支持TensorFlow、Caffe、Tflite、Pytorch、Onnx NN、Android NN 等常见框架。使用该NPU需要下载RKNN SDK&#xff0c;RKNN…

深度学习--自监督学习

自监督学习是一种无需大量人工标注的数据驱动方法&#xff0c;在生成模型中应用广泛。自监督学习通过利用数据中的固有结构或属性创建“伪标签”&#xff0c;使模型在没有人工标签的情况下进行学习。这种方法既提高了模型的训练效率&#xff0c;又降低了对标注数据的依赖。 概…

VMware安装Ubuntu20.04

1. 下载 整理的镜像链接 阿里网盘&#xff1a; 阿里云盘分享 提取码: l7y1 2. 新建虚拟机向导 选择自定义&#xff0c;然后下一步。 默认配置&#xff0c;下一步。 选择稍后安装操作系统&#xff0c;下一步。 选择操作系统Linux&#xff0c;版本Ubuntu64位&#xff0c;下一…

OCC笔记:Windows下OCC的编译

一、源码下载 进OCC官网下载https://dev.opencascade.org/release即可&#xff0c;或直接Clone它的Git库https://dev.opencascade.org/resources/git_repository&#xff0c;本文用的源码库版本为7.4.0&#xff08;我本机安装的VS2013&#xff0c;我又想用到AIS_ViewCube&…

AList嵌入动态验证码实现动态校验

前言 晓杰利用ALists创建了个网盘资源站&#xff0c;想着如何增加个动态验证码进行验证后才能进行访问下载&#xff0c;刚开始利用了固定的验证码&#xff0c;用户可以通过JS代码中进行绕过或直接拿到验证码&#xff0c;经过晓杰多次优化&#xff0c;最终版本支持动态获取验证…

Linux(面试篇)

目录 什么是Linux 什么是Linux内核&#xff1f; Linux的基本组件是什么&#xff1f; Bash和Dos之间基本区别是什么&#xff1f; 什么是Root账户 什么是Bash? 什么时CLI? Linux的目录结构时怎样的&#xff1f; 什么是硬链接和软链接&#xff1f; 什么叫CC攻击&#…

IP代理可以做爬虫吗?探讨其可行性与相应实践

IP代理在网络爬虫中的应用 在网络爬虫的世界里&#xff0c;IP代理就像是爬虫的“隐形斗篷”&#xff0c;帮助它们在获取数据的过程中隐藏真实身份&#xff0c;避免被目标网站识别和封禁。那么&#xff0c;IP代理到底能否用于爬虫呢&#xff1f;答案是肯定的&#xff01;接下来…