从小白到大神之路之学习运维第49天---第三阶段----MHA高可用集群数据库的安装部署

news2025/4/19 12:09:11

第三阶段基础

时  间:2023年6月29日

参加人:全班人员

内  容:

MHA高可用数据库集群

目录

一、MHA基础

(一)简介

(二)发挥过程

(三)组成

(四)原理

(五)条件

(六)架构

(七)工作流程

二、MHA工具介绍

(一)Manager管理节点工具包

(二)Node节点工具包

(三)注  意

三、MHA安装部署

环境配置: 所有操作系统均为centos 7.x 64bit

 1、关闭防火墙:(所有服务器)

2.配置所有主机名映射(所有服务器)

3、同步时区

4.安装MHA node及相关perl依赖包(所有服务器)

5.安装MHA Node(所有服务器)

6.管理节点huyang5安装MHA Manger(1)(管理服务器)

7.配置SSH密钥对验证(所有服务器)

8.安装mysql(所有服务器)

搭建主从复制环境

主库设置:(huyang1)

步骤一:修改配置文件/etc/my.cnf

步骤二:重启服务后进入数据库

步骤三:授权复制权限

步骤四:查看主状态

步骤五:创建监控用户

从库一设置:(huyang4)备用主库

步骤一:修改配置文件/etc/my.cnf

步骤二:重启服务后进入数据库

步骤三:授权复制权限

步骤四:连接主库

步骤五:创建监控用户

从库二设置:(huyang2)

步骤一:修改配置文件/etc/my.cnf

步骤二:重启服务后进入数据库

步骤三:授权复制权限

步骤四:连接主库

步骤五:创建监控用户

从库三设置:(huyang3)

步骤一:修改配置文件/etc/my.cnf

步骤二:重启服务后进入数据库

步骤三:授权复制权限

步骤四:连接主库

步骤五:创建监控用户

配置MHA环境:(huyang5)

步骤一:建立工作目录及并设置配置文件

步骤二:配置故障转移脚本并赋权

部署完成,检查结果:(huyang5操作)

检查MHA ssh通信状态

检查整个集群的状态  

检查manager状态

开启监控再查看为开启状态

开启manager监控

关闭监控

验证MHA高可用当主库服务器因为某种原因宕机之后的变化:

步骤一:检查当前的端口(主库huyang1)

步骤二:停止主库服务,查看变化

验证当主库服务器宕机恢复之后的变化:

步骤一:检查当前的端口(主库huyang1)

步骤二:开启主库服务,查看变化

步骤三:将huyang1连接至huyang4

步骤四:添加进huyang5的监听文件并开启监控

步骤五:关闭现有主库huyang4,查看变化

总  结:


一、MHA基础

总结各个服务以及其端口

Master High Availability

(一)简介

优秀的作为MySQL高可用性环境下故障切换和主从角色提升的高可用软件

(二)发挥过程

在MySQL故障切换过程中,MHA能做到在0∽30秒之内自动完成数据库的主从故障切换操作;

在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性。

(三)组成

MHA Manager(管理节点)

MHA Node(数据节点)

(四)原理

MHA Node运行在每台MySQL服务器及Manager服务器上;

MHA Manager会定时探测集群中的master节点

当master出现故障时,它可以自动将拥有最新数据的slave提升为新的master;

将所有其他的slave重新指向新提升的master;

通过检测二进制文件的时间节点和操作ID,从数据库谁最新,谁就变成主。

(五)条件

支持一主多从的架构,要搭建MHA,要求一个MySQL复制集群中必须最少有三台数据库服务器;

一主二从,即一台充当master,一台充当备用master,另外一台充当从库。

(六)架构

一个MHA Manger,检测多个主数据库,主数据库下有多个从数据库;

每一个主数据库和从数据库称之为复制组;

当主数据库坏掉,检测从谁最新成为主。

(七)工作流程

从宕机崩溃的master上尝试保存二进制日志事件(binlog events);

识别含有最新更新的slave服务器;

应用差异的中继日志(relay log)到其他的slave;

应用从master保存的二进制日志事件(binlog events);

提升一个slave为新的master服务器;

将其他的slave连接指向新的master进行主从复制。

二、MHA工具介绍

(一)Manager管理节点工具包

masterha_check_ssh     检查MHA的SSH配置状况

masterha_check_repl    检查MySQL复制状况

masterha_manger        启动MHA

masterha_check_status  检测当前MHA运行状态

masterha_master_monitor检测master是否宕机

masterha_master_switch

控制故障转移(自动或者手动)第一次自动,之后手动干涉

masterha_conf_host  添加或删除配置的server信息

(二)Node节点工具包

这些工具通常由MHA Manager的脚本触发,无需人为操作

save_binary_logs  保存和复制master的二进制日志

apply_diff_relay_logs  识别差异的中继日志事件并将其差异的事件应用于其他的slave

filter_mysqlbinlog  去除不必要的ROLLBACK事件(MHA已不再使用这个工具)

purge_relay_logs 清除中继日志(不会阻塞SQL线程)

从变成主之后要清除,否则会影响SQL线程,主服务不需要

(三)注  意

为了尽可能的减少主库硬件损坏宕机造成的数据丢失,因此在配置MHA的同时建议配置成MySQL 5.5的半同步复制;

但不是必须

三、MHA安装部署

环境配置: 所有操作系统均为centos 7.x 64bit

至少五台主机,一主三从一Manger

三从主指定为主的备胎,当主坏掉,他顶上,但默认情况还是从的角色

例:

IP地址

主机名

任  务

192.168.59.137

huyang1

主 库

192.168.59.138

huyang2

从库1

192.168.59.140

huyang3

从库2

192.168.59.142

huyang4

从库3(备用主库)

192.168.59.144

huyang5

管理节点

192.168.59.146

huyang6

VIP

 1、关闭防火墙:(所有服务器)

systemctl stop firewalld

iptables -F   

setenforce 0

2.配置所有主机名映射(所有服务器)

cat << END >> /etc/hosts

192.168.59.137 huyang1

192.168.59.138 huyang2

192.168.59.140 huyang3

192.168.59.142 huyang4

192.168.59.144 huyang5

END

映射完之后需要用ip地址的可以用主机名

3、同步时区

[huyang1]yum -y install ntp

         systemctl start ntpd

[huyang2/3/4/5/6]ntpdate huyang1

4.安装MHA node及相关perl依赖包(所有服务器)

wget -O /etc/yum.repos.d/CentOS-Base.repo

http://mirrors.aliyun.com/repo/Centos-7.repo

下载阿里源

yum -y install epel-release  下载epel源

yum install -y perl-DBD-MySQL.x86_64

perl-DBI.x86_64 perl-CPAN perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker

5.安装MHA Node(所有服务器)

rz  上传文件包(mha4mysql-node-0.56.tar.gz)

tar xf mha4mysql-node-0.56.tar.gz  解压

cd mha4mysql-node-0.56/    切换目录

perl Makefile.PL 用perl

语言编译文件,生成Makefile文件

make && make install  编译安装

查看结果:MHA Node安装完后会在 /usr/local/bin生成以下脚本  ls -l /usr/local/bin/   有4个

6.管理节点huyang5安装MHA Manger(1)(管理服务器)

安装MHA Manger之前也需要安装MHA Node

安装MHA Manger依赖的perl模块

yum install -y perl perl-Log-Dispatch

perl-Parallel-ForkManager perl-DBD-MySQL perl-DBI perl-Time-HiRes   依赖

rz  上传依赖包

perl-Config-Tiny-2.14-7.el7.noarch.rpm

用perl软件配置Manger

rpm  -ivh

perl-Config-Tiny-2.14-7.el7.noarch.rpm

安装MHA Manger软件包

rz  上传管理节点安装包

tar xf mha4mysql-manager-0.56.tar.gz

cd mha4mysql-manager-0.56/

perl Makefile.PL

make && make install

安装完成后会有以下脚本文件

查看结果:MHA Manger e安装完后会在/usr/local/bin/

生成以下脚本  ls -l /usr/local/bin/   有13个

7.配置SSH密钥对验证(所有服务器)

manger生成传给其他服务器,并验证,其他服务器直接互相传密钥,无需验证

服务器之间需要实现密钥对验证

【huyang1/2/3/4/5】ssh-keygen -t rsa

【huyang1/2/3/4/5】

ssh-copy-id -i .ssh/id_rsa.pub root@huyang1

cat /root/.ssh/authorized_keys

scp .ssh/authorized_keys root@huyang2:.ssh/

scp .ssh/authorized_keys root@huyang3:.ssh/

scp .ssh/authorized_keys root@huyang4:.ssh/

scp .ssh/authorized_keys root@huyang5:.ssh/

Manger生成密钥对传给其他数据库连接每个主机测试

ssh 加主机名

[huyang5]ssh huyang1

[huyang5]ssh huyang2

[huyang5]ssh huyang3

[huyang5]ssh huyang4

[huyang5]ssh huyang5

 因为第一次连接的时候需要输入yes影响后期故障切换时,对于每个主机的SSH控制;

数据库之间生成密钥对,保证一个数据库有其他三个数据库的密钥,无需连接测试.

8.安装mysql(所有服务器)

数据库服务器上的操作

yum -y install mariadb mariadb-server mariadb-devel

systemctl start mariadb

mysqladmin -u root password 123456

设置数据库初始密码

搭建主从复制环境

主库设置:(huyang1)

步骤一:修改配置文件/etc/my.cnf

[mysqld]

server-id = 1

log-bin=master-bin

log-slave-updates=true

relay_log_purge=0

步骤二:重启服务后进入数据库

systemctl restart mariadb

mysql -uroot -p123456

步骤三:授权复制权限

grant replication slave on *.* to

'repl'@'192.168.59.%' identified by '123456';

flush privileges;  刷新权限

步骤四:查看主状态

 show master status;

步骤五:创建监控用户

为监控节点服务较高的权限

grant all privileges on *.* to

'root'@'192.168.59.%' identified  by '123456';

  flush privileges;

为自己的主机名授权

grant all privileges on *.* to 'root'@'huyang1'

identified  by '123456';

从库一设置:(huyang4)备用主库

步骤一:修改配置文件/etc/my.cnf

[mysqld]

server-id = 2

log-bin=master-bin

log-slave-updates=true

relay_log_purge=0

步骤二:重启服务后进入数据库

systemctl restart mariadb

mysql -uroot -p123456

步骤三:授权复制权限

grant replication slave on *.* to

'repl'@'192.168.59.%' identified by '123456';

flush privileges;  刷新权限

步骤四:连接主库

stop slave;

change master to

master_host='192.168.59.137',master_user='repl',master_password='123456',master_log_file='master-bin.000003',master_log_pos=245;

start slave;

show slave status\G;

步骤五:创建监控用户

为监控节点服务较高的权限

grant all privileges on *.* to

'root'@'192.168.59.%' identified  by '123456';

  flush privileges;

为自己的主机名授权

grant all privileges on *.* to 'root'@'huyang4'

identified  by '123456';

从库二设置:(huyang2)

步骤一:修改配置文件/etc/my.cnf

[mysqld]

server-id = 3

log-bin=master-bin

log-slave-updates=true

relay_log_purge=0

步骤二:重启服务后进入数据库

systemctl restart mariadb

mysql -uroot -p123456

步骤三:授权复制权限

grant replication slave on *.* to

'repl'@'192.168.59.%' identified by '123456';

flush privileges;  刷新权限

步骤四:连接主库

stop slave;

change master to

master_host='192.168.59.137',master_user='repl',master_password='123456',master_log_file='master-bin.000003',master_log_pos=245;

start slave;

show slave status\G;

步骤五:创建监控用户

为监控节点服务较高的权限

grant all privileges on *.* to

'root'@'192.168.59.%' identified  by '123456';

  flush privileges;

为自己的主机名授权

grant all privileges on *.* to 'root'@'huyang2'

identified  by '123456';

从库三设置:(huyang3)

步骤一:修改配置文件/etc/my.cnf

[mysqld]

server-id = 4

log-bin=master-bin

log-slave-updates=true

relay_log_purge=0

步骤二:重启服务后进入数据库

systemctl restart mariadb

mysql -uroot -p123456

步骤三:授权复制权限

grant replication slave on *.* to

'repl'@'192.168.59.%' identified by '123456';

flush privileges;  刷新权限

步骤四:连接主库

stop slave;

change master to

master_host='192.168.59.137',master_user='repl',master_password='123456',master_log_file='master-bin.000003',master_log_pos=245;

start slave;

show slave status\G;

步骤五:创建监控用户

为监控节点服务较高的权限

grant all privileges on *.* to

'root'@'192.168.59.%' identified  by '123456';

  flush privileges;

为自己的主机名授权

grant all privileges on *.* to 'root'@'huyang3'

identified  by '123456';

配置MHA环境:(huyang5)

步骤一:建立工作目录及并设置配置文件

mkdir /etc/masterha创建配置目录复制模板文件

cp mha4mysql-manager-0.56/samples/conf/app1.cnf  /etc/masterha  软件包解压后的目录里面有样例配置文件

vim /etc/masterha/app1.cnf   修改配置文件

[server default]

#设置manager的工作日志

manager_workdir=/var/log/masterha/app1

#设置manager的日志,这两条都是默认存在的

manager_log=/var/log/masterha/app1/manager.log

#设置master默认保存binlog的位置,以便MHA可以找到master日志

master_binlog_dir=/var/lib/mysql

#设置自动failover时候的切换脚本

master_ip_failover_script= /usr/local/bin/master_ip_failover

#设置mysql中root用户的密码

password=123456

user=root

#ping包的时间间隔

ping_interval=1

#设置远端mysql在发生切换时保存binlog的具体位置

remote_workdir=/tmp

#设置复制用户的密码和用户名

repl_password=123456

repl_user=repl

[server1]

hostname=huyang1

port=3306

[server2]

hostname=huyang4

candidate_master=1

port=3306

check_repl_delay=0

[server3]

hostname=huyang2

port=3306

[server4]

hostname=huyang3

port=3306

步骤二:配置故障转移脚本并赋权

vim /usr/local/bin/master_ip_failover修改配置文件

chmod +x /usr/local/bin/master_ip_failover

赋予执行权限

#!/usr/bin/env perl

use strict;

use warnings FATAL => 'all';

use Getopt::Long;

my (

$command, $ssh_user, $orig_master_host, $orig_master_ip,

$orig_master_port, $new_master_host, $new_master_ip, $new_master_port,

);

my $vip = '192.168.59.146';          

my $key = "1";

my $ssh_start_vip = "/sbin/ifconfig ens33:$key $vip";

my $ssh_stop_vip = "/sbin/ifconfig ens33:$key down";

$ssh_user = "root";

GetOptions(

'command=s' => \$command,

'ssh_user=s' => \$ssh_user,

'orig_master_host=s' => \$orig_master_host,

'orig_master_ip=s' => \$orig_master_ip,

'orig_master_port=i' => \$orig_master_port,

'new_master_host=s' => \$new_master_host,

'new_master_ip=s' => \$new_master_ip,

'new_master_port=i' => \$new_master_port,

);

exit &main();

sub main {

print "\n\nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\n\n";

if ( $command eq "stop" || $command eq "stopssh" ) {

# $orig_master_host, $orig_master_ip, $orig_master_port are passed.

# If you manage master ip address at global catalog database,

# invalidate orig_master_ip here.

my $exit_code = 1;

#eval {

# print "Disabling the VIP on old master: $orig_master_host \n";

# &stop_vip();

# $exit_code = 0;

#};

eval {

print "Disabling the VIP on old master: $orig_master_host \n";

#my $ping=`ping -c 1 10.0.0.13 | grep "packet loss" | awk -F',' '{print $3}' | awk '{print $1}'`;

#if ( $ping le "90.0%"&& $ping gt "0.0%" ){

#$exit_code = 0;

#}

#else {

&stop_vip();

# updating global catalog, etc

$exit_code = 0;

#}

};

if ($@) {

warn "Got Error: $@\n";

exit $exit_code;

}

exit $exit_code;

}

elsif ( $command eq "start" ) {

# all arguments are passed.

# If you manage master ip address at global catalog database,

# activate new_master_ip here.

# You can also grant write access (create user, set read_only=0, etc) here.

my $exit_code = 10;

eval {

print "Enabling the VIP - $vip on the new master - $new_master_host \n";

&start_vip();

$exit_code = 0;

};

if ($@) {

warn $@;

exit $exit_code;

}

exit $exit_code;

}

elsif ( $command eq "status" ) {

print "Checking the Status of the script.. OK \n";

`ssh $ssh_user\@$orig_master_ip \" $ssh_start_vip \"`;

exit 0;

}

else {

&usage();

exit 1;

}

}

# A simple system call that enable the VIP on the new master

sub start_vip() {

`ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`;

}

# A simple system call that disable the VIP on the old_master

sub stop_vip() {

`ssh $ssh_user\@$orig_master_host \" $ssh_stop_vip \"`;

}

sub usage {

print

"Usage: master_ip_failover --command=start|stop|stopssh|status --orig_master_host=host --orig_master_ip=ip --orig_master_port=port --

new_master_host=host --new_master_ip=ip --new_master_port=port\n"; }

部署完成,检查结果:(huyang5操作)

检查MHA ssh通信状态

masterha_check_ssh --conf=/etc/masterha/app1.cnf

返回 successfully表示没有问题

检查整个集群的状态  

masterha_check_repl --conf=/etc/masterha/app1.cnf

返回ok表示没有问题

检查manager状态

masterha_check_status--conf=/etc/masterha/app1.cnf

如果正常会显示"PING_OK"

NOT_RUNNING",代表MHA监控没有开启

开启监控再查看为开启状态

开启manager监控

nohup masterha_manager

--conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover<

/dev/null >/var/log/masterha/app1/manager.log 2>&1 &

--remove_dead_master_conf

当发生主从切换后,老的主库的ip将会从配置文件中移除

--manger_log  日志存放位置

--ignore_last_failover  在缺省情况下,如果MHA检测到连续发生宕机,且两次宕机间隔不足8小时的话,则不会进行Failover,之所以这样限制是为了避免ping-pong效应。该参数代表忽略上次MHA触发切换产生的文件,默认情况下,MHA发生切换后会在日志目录,也就是上面设置的/data产生app1.failover.complete文件,下次再次切换的时候如果发现该目录下存在该文件将不允许触发切换,除非在第一次切换后收到删除该文件,为了方便,这里设置为--ignore_last_failover

关闭监控

masterha_stop --conf=/etc/masterha/app1.cnf

验证MHA高可用当主库服务器因为某种原因宕机之后的变化:

步骤一:检查当前的端口(主库huyang1)

huyang1】ip a|grep ens33

可以发现有两个,一个是主库的ip,另一个是vip的端口

步骤二:停止主库服务,查看变化

【huyang1】systemctl stop mariadb

【huyang2】show slave status\G;

【huyang3】show slave status\G;

【huyang4】show slave status\G;

【huyang4】ip a|grep ens33;

【huyang4】show master status;(成为主服务器)

【huyang5】 

masterha_check_repl --conf=/etc/masterha/app1.cnf

【huyang5】 vim /etc/master/app1.cong

可以发现监听的文件内已经不再监听huyang1

验证当主库服务器宕机恢复之后的变化:

步骤一:检查当前的端口(主库huyang1)

【huyang1】ip a|grep ens33

可以发现只有一个端口了

步骤二:开启主库服务,查看变化

【huyang1】systemctl start mariadb

【huyang2/3】show slave status\G;

没有发生变化

【huyang4】show master status;(依旧是主服务器)

【huyang5】 vim /etc/master/app1.cong

可以发现监听的文件内依旧没有huyang1

步骤三:将huyang1连接至huyang4

change master to

master_host='192.168.59.142',master_user='repl',master_password='123456',master_log_file='master-bin.000005',master_log_pos=245;

步骤四:添加进huyang5的监听文件并开启监控

【huyang5】vim /etc/master/app1.conf

步骤五:关闭现有主库huyang4,查看变化

【huyang4】systemctl stop mariadb

【huyang4】ip a |grep ens33

【huyang1】ip a |grep ens33

【huyang1】show slave status;

【huyang1】show master status;变成主库

【huyang2/3】show slave status\G;

此时huyang2/3又变成了huyang1的从库

【huyang5】 vim /etc/master/app1.cong

可以发现监听的文件内已经不再监听huyang4

总  结:

  1、MHA高可用集群,在主机宕机之后,复制组里会有一台变成主库,若指定了备用库,则备用库成为新的主库,原主库的从库成为新主库的从库;

  2、指定备用库之后,主库宕机恢复之后,将成为独立的服务器,不会成为主库,宕机之后复制组的状态不会改变,若有需要,则需手动指定成为新主库的从库;在指定宕机恢复主库为备用库主库的从库之后,备用库主库宕机,宕机恢复主库成为新的主库,来回切换;

  3、管理库的监听需要手动的进行切换,监听的主库宕机之后,将会删除其信息,恢复之后,需手动添加进监听文件。

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

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

相关文章

Quiz 5: Loops and Iterations | Python for Everybody 配套练习_解题记录

文章目录 课程简介Quiz 5: Loops and Iterations 单选题&#xff08;1-10&#xff09;编程题Exercise 5.2 课程简介 Python for Everybody 零基础程序设计&#xff08;Python 入门&#xff09; This course aims to teach everyone the basics of programming computers using…

C++语法练习(牛客题库)——练习1

1. 下列程序的运行结果是 1*2 3*4&#xff0c;那么横线处缺失程序可以是&#xff08;&#xff09; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #include <iostream> using namespace std; class Test{ public: Test(int a, int b) { …

【运维知识进阶篇】zabbix5.0稳定版详解6(zabbix自动化监控:自动发现+自动注册+监控项目主动式)

本篇文章继续给大家介绍zabbix自动化监控&#xff0c;包括zabbix自动注册&#xff0c;zabbix自动发现&#xff0c;将主机添加进服务端之后需要做的监控项目更改为主动式&#xff0c;zabbix说多不多&#xff0c;说少不少&#xff0c;其实远没有监控那么简单&#xff0c;更深层次…

【运维知识进阶篇】zabbix5.0稳定版详解7(zabbix分布式监控:使用场景+功能详解+快速部署+基本使用)

如果你有几百上千台客户端的数据需要上报给zabbix服务端&#xff0c;即便是你做了主动注册&#xff0c;监控项目主动式&#xff0c;那服务端压力还是会很大&#xff0c;所以我们可以考虑zabbix分布式监控。 zabbix proxy可以代替zabbix server收集性能和可用性数据&#xff0c…

【HTTP 协议1】图文详解 HTTP 请求和应答报文

文章目录 前言一、认识 HTTP 协议1, 什么是 HTTP 协议2, HTTP 协议的报文格式 二、HTTP 请求报文1, 认识方法1.1, GET 和 POST 辨析(重点)1.2, 其他方法 2, 认识 URL3, 认识 Header3.1, Host3.2, Content-Length3.3 Content-Type3.4, User-Agent3.5, Referer3.6, Cookie(重点) …

源代码|大屏可视化系统 数据可视化

代码拿来即可用&#xff0c;按照下文步骤配置&#xff0c;傻瓜式教程&#xff0c;几分钟即可搞定。 需要代码源文件&#xff0c;请移步至gzh【李桥桉】&#xff0c;s辛【可视化】。 可视化效果图 运行环境&#xff1a;VScode 文末附《大屏可视化系统》源代码获取方式~ 一、打…

数据结构--顺序栈的实现

数据结构–顺序栈的实现 顺序栈的定义 顺序栈的定义代码实现 #define MaxSize 10 typedef struct {ElemType data[MaxSize]; //静态数组存放栈中元素int top; //栈顶指针 } SqStack;int main() {SqStack S; //声明一个顺序栈(分配空间)//... ...return 0; }一些常见操作 初始…

大数据的金融数据读取及分析(-)

由于考虑商业数据问题&#xff0c;我们用开源数据做演示 一.tushare开源数据 Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工到数据存储的过程&#xff0c;能够为金融分析人员提供快速、整洁、和多样的便于分析的数据&#x…

postgresql_internals-14 学习笔记(七)—— parallel 并行

不完全来自这本书&#xff0c;把查到的和之前的文章重新汇总整理了一把。 一、 核心参数 几个容易弄混的进程和参数&#xff0c;关系图如下 1. max_worker_processes 整个实例可以同时运行的Background workers Processes最大数量默认值为8&#xff0c;设置为0表示禁用并行&…

STM32与树莓派:嵌入式系统开发与教育计算的区别

STM32和树莓派是两种不同的硬件平台&#xff0c;用于不同的应用领域。 STM32&#xff1a;STM32是一系列由STMicroelectronics&#xff08;意法半导体&#xff09;生产的32位ARM Cortex-M微控制器。它们被广泛用于嵌入式系统开发&#xff0c;包括消费电子产品、工业自动化、汽车…

CNN池化总结(最大池化与平均池化)

目录 概念 两种主要池化方式 最大池化 平均池化 尺寸变化过程 池化优点 总结 概念 池化&#xff08;Pooling&#xff09;&#xff0c;用于减小卷积神经网络&#xff08;CNN&#xff09;或其他类型神经网络的特征图&#xff08;Feature Map&#xff09;的尺寸&#xff0…

java 网络教学平台Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 JSP 网络教学平台 是一套完善的系统源码&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;以及相应配套的设计文档&#xff0c;系统主要采用B/S模式开发。 研究的基本内容是基于Web的网络教学平台&…

【SWAT水文模型】SWAT-CUP参数率定过程问题总结

SWAT-CUP参数率定过程问题总结 Q1 SWAT-CUP中calibrate按钮一直是灰色无法点击?1.1 问题描述1.2 解决办法 Q2 “SWAT”不是内部命令1.1 问题描述1.2 解决办法 参考 Q1 SWAT-CUP中calibrate按钮一直是灰色无法点击? 1.1 问题描述 软件是从2W2E上下载的SWAT-CUP2019&#xff…

XILINX ZYNQ 7000 BOOT

参考UG585 内容 下面这张图是ZYNQ启动的关键流程 1.POR表示硬件复位&#xff0c;不关心Power-up也就是说冷热启动都行。Nor-POR就是非POR复位&#xff0c;有点软件应用复位的意思。 2.POR复位会复位所有寄存器。并且采集 HardWare boot pin的状态。这点很关键&#xff0c; 3.是…

mysql一些常用函数

group_concat()函数首先根据group by指定的列进行分组&#xff0c;并且用分隔符分隔&#xff0c;将同一个分组中的值连接起来&#xff0c;返回一个字符串结果。 group_concat([distinct] 字段名 [order by 排序字段 asc/desc] [separator 分隔符])-- 指定排序方式和分隔符 se…

STM32F407 滴答定时器

介绍STM32F407滴答定时器配置方法、使用方式&#xff0c;封装延时函数得到精确的时间。 【1】介绍滴答定时器的章节 STM32F407参考手册中第10章介绍了滴答定时器的校准值。 M4权威指南介绍滴答定时器的章节&#xff0c;M3权威指南中与M4权威指南中的介绍一样。 【2】滴答定时…

Windows 引导启动流程详述(BIOS-UEFI)

Windows 启动流程详述 BIOS 和 UEFI 的由来BIOS 存在哪里BIOS 程序的功能BIOS 和 UEFI 的发展由来如何查看当前计算机是什么方式引导启动呢&#xff1f;Linux 下如何查看 BIOS 大小&#xff1f; 启动流程详述使用 BIOS 进行系统启动流程使用 UEFI 进行系统启动流程SEC阶段PEI阶…

专项练习15

目录 一、选择题 1、如果要打开名为 “window2"的新窗口&#xff0c;可以通过&#xff08;&#xff09; 2、下列事件哪个不是由鼠标触发的事件&#xff08;&#xff09; 3、Angular指令中哪种作用域可以继承父scope 4、下列哪些事件不支持冒泡?&#xff08;&#xff09;…

微信小程序学习记录2 案例分享<智能家居UI>

效果 思路 页面分为4块 前三块 采用同样的class 替换三张矢量图 绑定三个单片机返回的JSON值 最后一块又分为左右两部分 左边部分 采用switch组件 绑定三个事件 右边部分则是普通的文字

记录生产mysql死锁解决过程

最近生产上每个星期都会有几次死锁告警异常&#xff0c;今天终于给处理了&#xff0c;待后续观察&#xff0c;记录下整个过程。 环境&#xff1a;springboot、mybatis、mysql(RC隔离级别) 表结构&#xff1a; CREATE TABLE table1 (id bigint NOT NULL AUTO_INCREMENT,prize…