mysql mha高可用集群搭建

文章目录

      • mha集群搭建
        • 主从从部署
          • 基本环境准备
          • 安装mysql
          • 主从配置
        • mha部署
          • 故障修复
        • 搭建完成

mha集群搭建

在 MySQL 高可用架构中,MHA(Master High Availability)通常采用一主多从的架构。

MHA 可以提供主从复制架构的自动 master failover 功能。当主服务器出现故障时,MHA 会将从服务器提升为新的主服务器,并在此期间通过与其他从服务器获取额外信息来避免一致性问题。

主从从部署
基本环境准备

yum源配置

cd /etc/yum.repos.d
mkdir bak
mv *.repo ./bak
cd /etc/yum.repos.d
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache

修改主机名和host文件解析

hostnamectl set-hostname master1 && bash
hostnamectl set-hostname slave1 && bash
hostnamectl set-hostname slave2 && bashcat /etc/hosts
192.168.3.74 master1
192.168.3.75 slave1
192.168.3.76 slave2

配置3台数据库主机之间ssh免密登录

ssh-keygen
ssh-cpoy-id 192.168.3.74
ssh-cpoy-id 192.168.3.75
ssh-cpoy-id 192.168.3.76
安装mysql

删除原有的mariadb

yum remove mariadb* -y

添加源

cat <<EOF > /etc/yum.repos.d/mysql57.repo
[mysql57]
name=mysql57
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql57-community-el7/
gpgcheck=0
enabled=1
EOF
yum install mysql-community-server -y

启动mysql服务,查看初始密码

systemctl enable mysqld --nowcat /var/log/mysqld.log |grep password
2024-09-19T08:36:50.471114Z 1 [Note] A temporary password is generated for root@localhost: :Q,)akd#i8U+

使用初始密码登录,修改mysql的root账号初始密码

alter user 'root'@'localhost' identified with mysql_native_password by "aaA...111";flush privileges;

也可以使用mysqladmin修改密码

mysqladmin -uroot -p"e#)er)sg?39A"  password aaA...111
主从配置

修改my.cnf配置文件(主)

vim /etc/my.cnf
server-id = 1
log-bin = mysql-bin
binlog_format = row
gtid-mode = on
enforce-gtid-consistency = true
log-slave-updates = true

修改my.cnf配置文件(从1)

vim /etc/my.cnf
server-id = 2
log-bin = mysql-bin
binlog_format = row
gtid-mode = on
enforce-gtid-consistency = true
log-slave-updates = true

修改my.cnf配置文件(从2)

vim /etc/my.cnf
server-id = 3
log-bin = mysql-bin
binlog_format = row
gtid-mode = on
enforce-gtid-consistency = true
log-slave-updates = true

重启服务

systemctl restart mysqld

master1创建MHA用于监控的账号(mha)和主从同步账号(repl)

# 创建主从同步账号repl
create user 'repl'@'192.168.%.%' identified with mysql_native_password by 'repl1234A...';# 授权
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.%.%';# 刷新权限,生效
flush privileges;# 查看用户信息
select user,host from mysql.user;# 查看授权
mysql> show grants for 'repl'@'192.168.%.%';
+--------------------------------------------------------+
| Grants for repl@192.168.%.%                            |
+--------------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.%.%' |
+--------------------------------------------------------+
1 row in set (0.00 sec)
# 创建用于mha高可用账号mha
create user 'mha'@'192.168.%.%' identified with mysql_native_password by 'mhA1234...';# 授权
grant all privileges on *.* to 'mha'@'192.168.%.%';# 刷新权限,生效
flush privileges;# 查看用户信息
mysql> select user,host from mysql.user;
+---------------+-------------+
| user          | host        |
+---------------+-------------+
| mha           | 192.168.%.% |
| repl          | 192.168.%.% |
| mysql.session | localhost   |
| mysql.sys     | localhost   |
| root          | localhost   |
+---------------+-------------+
5 rows in set (0.00 sec)# 查看用户repl授权
mysql> show grants for 'repl'@'192.168.%.%';
+--------------------------------------------------------+
| Grants for repl@192.168.%.%                            |
+--------------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.%.%' |
+--------------------------------------------------------+
1 row in set (0.00 sec)
# 查看用户mha授权
mysql> show grants for 'mha'@'192.168.%.%';
+----------------------------------------------------+
| Grants for mha@192.168.%.%                         |
+----------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'mha'@'192.168.%.%' |
+----------------------------------------------------+
1 row in set (0.00 sec)
# 如何删除用户
drop user 'mha'@'192.168.%.%';

slave1、slave2从库配置主从复制

change master to master_host='192.168.3.74', master_user='repl', master_password='repl1234A...' , MASTER_AUTO_POSITION=1;

GTID位置点(自动追踪需要同步的 position):master_auto_position=1

开启从库的主从复制功能

mysql> stop slave;          #停止主从同步功能
mysql> start slave;         #开启主从同步功能
mysql> show slave status\G  #查询状态,是否成功Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0

2个从库会把刚才主库创建的用户同步到从库,从库中都有mha repl 用户,若没有,检查上述步骤配置是否有误

mysql> select user,host from mysql.user;
+---------------+-------------+
| user          | host        |
+---------------+-------------+
| mha           | 192.168.%.% |
| repl          | 192.168.%.% |
| mysql.session | localhost   |
| mysql.sys     | localhost   |
| root          | localhost   |
+---------------+-------------+
5 rows in set (0.01 sec)

从库设置只读模式

# 设置只读模式
mysql -uroot -paaA...111 -e 'set global read_only=1'# 查看是否为只读模式
mysql -uroot -paaA...111 -e "SHOW VARIABLES LIKE 'read_only'"
mysql: [Warning] Using a password on the command line interface can be insecure.
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| read_only     | ON    |
+---------------+-------+
mha部署

77主机作为管理主机(mha manager )来管理 74主库 75从库 76从库

所有主机安装依赖软件包

yum -y install perl-DBD-MySQL perl-ExtUtils-MakeMaker perl-CPAN perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager

配置ssh免密登录 77 免密登录 74 75 76 , 三台数据库相互免密登录

# 77免密登录 74 75 76
ssh-keygen
ssh-cpoy-id 192.168.3.74
ssh-cpoy-id 192.168.3.75
ssh-cpoy-id 192.168.3.76# 74 75 76 数据库相互免密登录
ssh-keygen
ssh-cpoy-id 192.168.3.74
ssh-cpoy-id 192.168.3.75
ssh-cpoy-id 192.168.3.76

在所有数据库节点 安装软件包 mha4mysql-node-0.58.tar.gz

# 上传软件包
rz mha4mysql-node-0.58.tar.gz
tar zxf mha4mysql-node-0.58.tar.gz -C /usr/local/src/
cd /usr/local/src/mha4mysql-node-0.58/
perl Makefile.PL && make && make install# 查看安装成功后的脚本文件
ll /usr/local/bin/
总用量 48
-r-xr-xr-x 1 root root 17639 919 17:01 apply_diff_relay_logs
-r-xr-xr-x 1 root root  4807 919 17:01 filter_mysqlbinlog
-r-xr-xr-x 1 root root  8337 919 17:01 purge_relay_logs
-r-xr-xr-x 1 root root  7525 919 17:01 save_binary_logs

在管理节点 需要安装两个软件包:mha4mysql-node-0.58.tar.gz 和 mha4mysql-manager-0.58.tar.gz

# 安装mha4mysql-node-0.58.tar.gz 和 mha4mysql-manager-0.58.tar.gzrz mha4mysql-manager-0.58.tar.gz mha4mysql-node-0.58.tar.gz
tar zxf mha4mysql-node-0.58.tar.gz -C /usr/local/src/
tar zxf mha4mysql-manager-0.58.tar.gz -C /usr/local/src/
cd /usr/local/src/mha4mysql-node-0.58/
perl Makefile.PL && make && make install
cd /usr/local/src/mha4mysql-manager-0.58
perl Makefile.PL && make && make install# 查看安装成功后的脚本文件
ll /usr/local/bin/
总用量 88
-r-xr-xr-x 1 root root 17639 919 17:01 apply_diff_relay_logs
-r-xr-xr-x 1 root root  4807 919 17:01 filter_mysqlbinlog
-r-xr-xr-x 1 root root  1995 919 17:04 masterha_check_repl
-r-xr-xr-x 1 root root  1779 919 17:04 masterha_check_ssh
-r-xr-xr-x 1 root root  1865 919 17:04 masterha_check_status
-r-xr-xr-x 1 root root  3201 919 17:04 masterha_conf_host
-r-xr-xr-x 1 root root  2517 919 17:04 masterha_manager
-r-xr-xr-x 1 root root  2165 919 17:04 masterha_master_monitor
-r-xr-xr-x 1 root root  2373 919 17:04 masterha_master_switch
-r-xr-xr-x 1 root root  5172 919 17:04 masterha_secondary_check
-r-xr-xr-x 1 root root  1739 919 17:04 masterha_stop
-r-xr-xr-x 1 root root  8337 919 17:01 purge_relay_logs
-r-xr-xr-x 1 root root  7525 919 17:01 save_binary_logs

配置77主机(mha manager )

拷贝脚本文件至/usr/local/bin/

# 拷贝脚本文件至/usr/local/bin/
cp /usr/local/src/mha4mysql-manager-0.58/samples/scripts/master_ip_failover /usr/local/bin/
cp /usr/local/src/mha4mysql-manager-0.58/samples/scripts/master_ip_online_change /usr/local/bin/# 查看安装成功后的脚本文件
ll /usr/local/bin/
总用量 104
-r-xr-xr-x 1 root root 17639 919 17:01 apply_diff_relay_logs
-r-xr-xr-x 1 root root  4807 919 17:01 filter_mysqlbinlog
-r-xr-xr-x 1 root root  1995 919 17:04 masterha_check_repl
-r-xr-xr-x 1 root root  1779 919 17:04 masterha_check_ssh
-r-xr-xr-x 1 root root  1865 919 17:04 masterha_check_status
-r-xr-xr-x 1 root root  3201 919 17:04 masterha_conf_host
-r-xr-xr-x 1 root root  2517 919 17:04 masterha_manager
-r-xr-xr-x 1 root root  2165 919 17:04 masterha_master_monitor
-r-xr-xr-x 1 root root  2373 919 17:04 masterha_master_switch
-r-xr-xr-x 1 root root  5172 919 17:04 masterha_secondary_check
-r-xr-xr-x 1 root root  1739 919 17:04 masterha_stop
-rwxr-xr-x 1 root root  3648 919 17:09 master_ip_failover
-rwxr-xr-x 1 root root  9870 919 17:09 master_ip_online_change
-r-xr-xr-x 1 root root  8337 919 17:01 purge_relay_logs
-r-xr-xr-x 1 root root  7525 919 17:01 save_binary_logs

77主机(mha manager )创建MHA Manager配置文件

# 配置 MHA Manager
mkdir /etc/mhacat > /etc/mha/app1.cnf << EOF
[server default]
manager_workdir=/etc/mha
manager_log=/etc/mha/manager.log
master_ip_failover_script=/usr/local/bin/master_ip_failover
master_ip_online_change_script=/usr/local/bin/master_ip_online_changeping_interval=2
secondary_check_script=/usr/local/bin/masterha_secondary_check -s 192.168.3.75 -s 192.168.3.76ssh_user=root
ssh_port=22user=mha
password=mhA1234...repl_user=repl
repl_password=repl1234A...[server1]
hostname=192.168.3.74
candidate_master=1
port=3306[server2]
hostname=192.168.3.75
port=3306
candidate_master=1[server3]
hostname=192.168.3.76
candidate_master=1
port=3306EOF

修改故障切换脚本,添加vip地址的设置

vim /usr/local/bin/master_ip_failover#!/usr/bin/env perluse strict;
use warnings FATAL => 'all';use Getopt::Long;
use MHA::DBHelper;my ($command,        $ssh_user,         $orig_master_host,$orig_master_ip, $orig_master_port, $new_master_host,$new_master_ip,  $new_master_port,  $new_master_user,$new_master_password
);##############该部分按实际修改##############
my $vip = '192.168.3.177/24';
my $ifdev = 'ens33';
my $key = '1';
my $ssh_start_vip = "/sbin/ifconfig $ifdev:$key $vip";
my $ssh_stop_vip = "/sbin/ifconfig $ifdev:$key  down";
##############该部分按实际修改##############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,'new_master_user=s'     => \$new_master_user,'new_master_password=s' => \$new_master_password,
);exit &main();sub main {print "\n\nIN SCRIPT TEST====$ssh_stop_vip==$ssh_start_vip===\n\n";if ( $command eq "stop" || $command eq "stopssh" ) {my $exit_code = 1;eval {print "Disabling the VIP on old master: $orig_master_host \n";&stop_vip();# updating global catalog, etc$exit_code = 0;};if ($@) {warn "Got Error: $@\n";exit $exit_code;}exit $exit_code;}elsif ( $command eq "start" ) {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 $@;# If you want to continue failover, exit 10.exit $exit_code;}exit $exit_code;}elsif ( $command eq "status" ) {print "Checking the Status of the script.. OK \n";# do nothingexit 0;}else {&usage();exit 1;}
}
sub start_vip() {`ssh $ssh_user\@$new_master_host \" $ssh_start_vip \"`;
}sub stop_vip() {return 0  unless  ($ssh_user);`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";
}

给mysql主服务器添加虚拟ip地址

# 创建vip地址
ifconfig ens33:1 192.168.3.177/24附:
# 删除
ifconfig ens33:1 del 192.168.3.177
# 停止
ifconfig ens33:1 down

启动 77主机(mha manager )前验证配置是否正确

masterha_check_ssh --conf=/etc/mha/app1.cnf
masterha_check_repl --conf=/etc/mha/app1.cnf

启动 77主机(mha manager )

# 前台运行
masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover# 后台运行
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /etc/mha/app1.log 2>&1 &

检查运行状态

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

主数据上创建数据库测试

# 创建数据库和表
create database db9;
create table db9.a (id int);
insert into db9.a values(111);
select * from db9.a;# 创建账号devusr
create user 'devusr'@'192.168.%.%' identified with mysql_native_password by 'devusr1234A...';# 授权devusr用户
GRANT select,insert,delete ON db9.* TO 'devusr'@'192.168.%.%';
# 刷新权限,生效
flush privileges;
# 查看用户devusr授权
mysql> show grants for devusr@'192.168.%.%';
+-------------------------------------------------------------------+
| Grants for devusr@192.168.%.%                                     |
+-------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'devusr'@'192.168.%.%'                      |
| GRANT SELECT, INSERT, DELETE ON `db9`.* TO 'devusr'@'192.168.%.%' |
+-------------------------------------------------------------------+
2 rows in set (0.00 sec)

测试高可用

# 直接把主库关机,使用其它机器连接vip地址,可以看到正常连接数据库。
[root@mg ~]# mysql -udevusr -pdevusr1234A... -h192.168.3.177MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db9                |
+--------------------+
2 rows in set (0.00 sec)# 插入数据
insert into db9.a values(1234567);# 主库宕机后 77主机(mha manager )会将 [server1] 字段被删除 ,且mha manager会停止运行
# 每次failover切换后会在管理目录生成文件 /etc/mha/app1.failover.complete 
# 下次在切换的时候会发现有这个文件导致切换不成功,需要手动清理掉
# rm -rf /masterha/app1/app1.failover.complete
# 也可以在启动时加上参数--ignore_last_failover# vip地址也会切换到其它机器上
cat /etc/mha/app1.cnf[server default]
manager_log=/etc/mha/manager.log
manager_workdir=/etc/mha
master_ip_failover_script=/usr/local/bin/master_ip_failover
master_ip_online_change_script=/usr/local/bin/master_ip_online_change
password=mhA1234...
ping_interval=2
repl_password=repl1234A...
repl_user=repl
secondary_check_script=/usr/local/bin/masterha_secondary_check -s 192.168.3.75 -s 192.168.3.76
ssh_port=22
ssh_user=root
user=mha[server2]
candidate_master=1
hostname=192.168.3.75
port=3306[server3]
candidate_master=1
hostname=192.168.3.76
port=3306
故障修复
# 修好宕机的机器,启动mysql服务后,将原来的master主库机器指向新的主数据库
change master to master_host='192.168.3.75', master_user='repl', master_password='repl1234A...' , MASTER_AUTO_POSITION=1;# 开器主从同步
start slave;# 修改mha manager 配置文件
# 重新加以下入字段(74主数据库宕机后以下这段配置会被删除)
vim /etc/mha/app1.cnf
[server1]
hostname=192.168.3.74
candidate_master=1
port=3306# 重新启动mha 后台运行
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /etc/mha/app1.log 2>&1 &# 重新启动mha 前台运行
masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover# 修复完成------------------# 若还需要使用原来的主服务器,可以使用MHA的在线切换功能,如下# 首先,manager节点上停掉MHA监控
masterha_stop --conf=/etc/mha/app1.cnf# 切换回原来的主库
masterha_master_switch --conf=/etc/mha/app1.cnf --master_state=alive --new_master_host=192.168.3.74 --orig_master_is_new_slave --running_updates_limit=10000 --interactive=0# 如果报错,编辑这个文件
vim /usr/local/bin/master_ip_online_change
# 找到下面这两条将其使用`#`号注释掉
FIXME_xxx_drop_app_user($orig_master_handler);
FIXME_xxx_create_app_user($new_master_handler);# 重新启动mha 后台运行
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /etc/mha/app1.log 2>&1 &# 重新启动mha 前台运行
masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover

常用命令

# MHA 检测ssh状态
masterha_check_ssh --conf=/etc/mha/app1.cnf# MHA 检测mysql集群主从状态
masterha_check_repl --conf=/etc/mha/app1.cnf# 前台运行
masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover# 后台运行
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /etc/mha/app1.log 2>&1 &# MHA Manager停止运行
masterha_stop --conf=/etc/mha/app1.cnf# 直接kill掉也可
搭建完成

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

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

相关文章

手把手教你-MAC笔记本安装Pytorch环境

MAC笔记安装Pytorch 环境安装 1. 安装brew 方法1 参考&#xff1a; https://www.jianshu.com/p/e0471aa6672d?utm_campaignhugo 使用中科大镜像加速访问&#xff1a; /usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)&qu…

OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【时间管理】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 子系统开发内核 轻量系统内核&#xff08;LiteOS-M&#xff09; 轻量系统内核&#…

百望云生态伙伴大会在北京、深圳、昆明三地举办,携手共赢数字化未来!

伴随着金税四期数电票、乐企加速扩围&#xff0c;激发了企业大量的财税数字化转型的需求&#xff0c;为财税服务市场注入了前所有未有的活力。2024年7月9日&#xff0c;百望云成功登陆港交所&#xff0c;成为港股“电子发票第一股”&#xff0c;加码财税业务布局&#xff0c;纵…

【C++ Primer Plus习题】16.10

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: #include <iostream> #include <string> #include <…

【刷题日记】15. 三数之和

15. 三数之和 两数之和可以用巧思也可以用map 三数之和会更加复杂一点&#xff0c;且这道题还需要考虑避免重复答案&#xff01; 思路&#xff1a; 特判&#xff1a;检如果nums 为 null 或长度小于 3直接返回空数组。排序&#xff1a;使用 sort对数组进行升序排序。就变成了…

京东h5st 4.8逆向

最开始扒的时候版本号还是4.1&#xff0c;现在已经到了4.8了&#xff0c;原来的AES也没有了&#xff0c;现在都是魔改的加密方法&#xff0c;还整成了vmp。跟了一下整个流程&#xff0c;和原来的流程大差不差&#xff0c;h5st变长了&#xff0c;一共分9部分。简单走一下流程。 …

玩具车检测系统源码分享

玩具车检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visio…

web基础—dvwa靶场(十二)JavaScript Attacks

JavaScript Attacks (前端攻击) 本章节中的攻击旨在帮助您了解如何在浏览器中使用 JavaScript 以及如何对其进行操作&#xff0c;攻击可以通过分析网络流量来实现&#xff0c;但这不是本章节的重点而且可能要困难得多。 只需提交单词 “success” 即可攻击成功&#xff0c;显然…

编写程序,在一行上显示1-5数字,每个相邻的数字要求用空格进行分开

目录 前言 一、一行输出&#xff08;使用一个System语句输出&#xff09; 二、多行输出&#xff08;使用多&#xff08;N&#xff09;个System语句输出&#xff09; 三、循环输出&#xff08;使用for语句循环在通过System语句输出&#xff09; 四、完整代码 前言 1.本文所…

图神经网络池化方法

图神经网络池化方法 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 图神经网络池化方法前言一、扁平图池化二、分层图池化1.节点聚类池化2.节点丢弃池化 参考文献 前言 图池化操作根据其池化策略的差异&#xff…

windows C++-并行编程-并行算法(四)- 并行排序

并行模式库 (PPL) 提供了对数据集合并行地执行工作的算法。这些算法类似于 C 标准库提供的算法。并行算法由并发运行时中的现有功能组成。 PPL 提供三种排序算法&#xff1a;concurrency::parallel_sort、concurrency::parallel_buffered_sort 和 concurrency::parallel_radix…

志邦家居CIO吴俊涛谈转型:天润融通如何赋能家居行业未来

根据国家统计局、住建部等各部门综合数据显示&#xff0c;2024年国内泛家居全渠道销售额在预计将超过4.7万亿元&#xff0c;并且在存量房需求释放与智能家居品类创新的推动下&#xff0c;预计2027年将突破5.3万亿元&#xff0c;展现出强劲的增长弹性。 然而&#xff0c;家居行…

【Mysql】为modified_time和created_time设置默认值

建立表SQL&#xff1a; CREATE TABLE your_table_name (id int(11) NOT NULL AUTO_INCREMENT,/* 其他字段 */created_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT 创建日期,modified_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 修改…

如果 Linux 这么好,为什么没有更多的人使用它呢?

原文&#xff1a;DHH - 2024.09.02 几周前&#xff0c;我在推特上看到一个问题&#xff1a;“如果 Linux 这么好&#xff0c;为什么没有更多的人使用它呢&#xff1f;” 这是一个很合理的问题&#xff01;在你仔细考虑之前&#xff0c;直觉上这是正确的。Linux 甚至是免费的&a…

neo4j关系的创建删除 图的删除

关系的创建和删除 关系创建 CREATE (:Person {name:"jack"})-[:LOVE]->(:Person {name:"Rose"})已有这个关系时&#xff0c;merge不起效果 MERGE (:Person {name:"Jack" })-[:LOVE]->(:Person {name:"Rose"})关系兼顾节点和关…

10_Python流程控制_循环

循环 循环是控制程序重复执行特定代码块的关键结构。Python提供了几种不同的循环结构&#xff0c;以满足不同的编程需求。 While循环 while 循环会重复执行一个代码块&#xff0c;只要指定的条件为真。 适用情况&#xff1a;不清楚具体的循环次数&#xff0c;或者当条件一直…

“科学突破奖”获得者连续两篇Nature,成功绘制人类主要激酶底物特异性图谱

激酶研究进展 近期Nature期刊发表关于酪氨酸激酶的研究文章。这是威尔康奈尔医学癌症中心Jared L. Johnson和Lewis C. Cantley团队自2023年成功绘制丝/苏氨酸激酶底物特异性图谱后&#xff0c;时隔一年后再次成功绘制酪氨酸激酶底物特异性图谱&#xff0c;为理解激酶在信号传导…

MyBatis 分批次执行(新增,修改,删除)

import com.google.common.collect.Lists;import java.util.Iterator; import java.util.List; import java.util.function.Consumer;/*** Description mybatis分批插入数据使用* Author WangKun* Date 2024/9/19 11:20* Version*/ public class MyBatisSqlUtils {/*** param d…

Linux进阶命令-scp

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 经过上一章Linux日志的讲解&#xff0c;我们对Linux系统自带的日志服务已经有了一些了解。我们接下来将讲解一些进阶命令&am…

快速编写一款python漏洞批量检测工具

一、前言 以下列检测脚本示列&#xff1a; import requestsimport urllib3import re,string,randomfrom urllib.parse import urljoinimport argparseimport timeimport sslssl._create_default_https_context ssl._create_unverified_contexturllib3.disable_warnings(urllib…