当前位置: 首页 > news >正文

重庆网站推广步骤在线制作图片动画效果

重庆网站推广步骤,在线制作图片动画效果,wordpress ico文件,网络运营推广是干嘛的MHA实战要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台master,一台充当备用master,另外一台充当从库。MHA Manager会定时探测集群中的master节点,当master出现故障时&#xff0c…

MHA实战

要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台master,一台充当备用master,另外一台充当从库。

MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master,整个故障转移过程对应用程序完全透明。

一、环境准备

1. 服务器规划(至少3节点)

角色主机名IP地址说明
Mastermha-node1192.168.221.20主库
Slave1mha-node2192.168.221.30从库(候选主库)
Slave2mha-node3192.168.221.31从库
Managermha-manager192.168.221.40MHA管理节点(独立服务器)

2. 基础配置(所有节点)

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
​
# 关闭SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
​
# 配置hosts(所有节点一致)
cat >> /etc/hosts << EOF
192.168.221.20 mha-node1
192.168.221.30 mha-node2
192.168.221.31 mha-node3
192.168.221.40 mha-manager
EOF
​
# 配置SSH免密登录——所有节点执行
#(manager节点需免密登录所有数据库节点,数据库节点间也需互信)
ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa
for host in mha-node1 mha-node2 mha-node3; dossh-copy-id -i ~/.ssh/id_rsa.pub $host
done

二、部署MySQL 8.0主从复制

1. 安装MySQL 8.0(所有数据库节点)

# 这里使用MySQL安装脚本
cd /usr/local/src
wget http://192.168.56.200/Software/mysql_install.sh
bash mysql_install.sh
bash

2. 配置MySQL(主从差异化配置)

Master(mha-node1)配置

vim /etc/my.cnf
[mysqld]
# ...
# 在默认配置下方添加:
server-id=20       # 唯一ID
log_bin=mysql-bin  # 开启binlog
binlog_format=ROW  # ROW模式(MHA推荐)
gtid_mode=ON       # 开启GTID
enforce_gtid_consistency=ON  # 强制GTID一致性
log_slave_updates=ON  # 从库同步时记录binlog(用于级联复制)
skip_name_resolve=ON  # 跳过域名解析
systemctl restart mysqld

Slave(mha-node2/mha-node3)配置

# mha-node2(server-id=30)
vim /etc/my.cnf
[mysqld]
# ...
server-id=30         # 唯一ID(mha-node3设为31)
log_bin=mysql-bin
binlog_format=ROW
gtid_mode=ON
enforce_gtid_consistency=ON
log_slave_updates=ON
skip_name_resolve=ON
relay_log=relay-bin  # 开启中继日志
read_only=ON         # 从库只读(可选)
systemctl restart mysqld

3. 搭建主从复制(基于GTID)

在Master(mha-node1)创建复制用户

# MySQL 8.0默认认证插件为caching_sha2_password,MHA需用mysql_native_password
mysql -uroot -proot123
CREATE USER 'repl'@'192.168.221.%' IDENTIFIED WITH mysql_native_password BY 'Repl@123';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.221.%';
​
FLUSH PRIVILEGES;

在Slave(mha-node2/mha-node3)配置复制

# 登录Slave的MySQL
mysql -uroot -proot123
# 在从服务器设置同步
CHANGE MASTER TOMASTER_HOST='mha-node1',MASTER_USER='repl',MASTER_PASSWORD='Repl@123',MASTER_PORT=3306,MASTER_AUTO_POSITION=1;  # 基于GTID自动定位

# 如果192.168.221.30出错了,那就查看状态,要是显示是off,就通过下面打开
show variables like 'gtid_mode';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
|    gtid_mode     | OFF   |
+----------------------+-------+
mysql> SET GLOBAL gtid_mode = OFF_PERMISSIVE;
mysql> SET GLOBAL enforce_gtid_consistency = ON;
mysql> SHOW STATUS LIKE 'Transactions_without_gtids';
Empty set (0.02 sec)
mysql> SET GLOBAL gtid_mode = ON_PERMISSIVE;
mysql> SHOW STATUS LIKE 'Transactions_without_gtids';
Empty set (0.00 sec)
mysql> SET GLOBAL gtid_mode = ON;
mysql> show variables like 'gtid_mode';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| gtid_mode        | ON    |
+---------------------+-------+
然后返回去change设置同步(重要!!!别忘记设置同步!!!)

# 启动复制
START SLAVE;
# 检查复制状态(,如果不能查看就退出重新登录MySQL,确保Slave_IO_Running和Slave_SQL_Running均为Yes)
SHOW SLAVE STATUS\G;

三、部署MHA

1. 安装依赖(所有节点)

CentOS7安装依赖

# 配置本地Yum源
vim /etc/yum.repos.d/CentOS-Media.repo
​# 添加以下
[c7-media]
name=CentOS-7 - Media
baseurl=file:///media/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
​
# 挂载光盘
mount /dev/cdrom /media
​
# 安装wget(如果已经有了可以不下载)
yum install -y wget
​
# 配置网络Yum源(下载阿里yum仓库)
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 配置Yum扩展源
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
# 安装Perl依赖(MHA基于Perl开发)
yum clean all
yum makecache
yum install -y perl-DBD-MySQL perl-CPAN perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
yum install -y perl-Email-Sender perl-Email-Valid perl-Mail-Sender

或者Ubuntu22.04安装依赖包

sudo apt install -y perl libdbi-perl libdbd-mysql-perl libperl-dev libconfig-tiny-perl liblog-dispatch-perl libparallel-forkmanager-perl

2. 安装MHA包

下载MHA源码包

# 管理节点下载
wget http://192.168.56.200/Software/mha4mysql-manager-0.58.tar.gz
# 所有节点下载
wget http://192.168.56.200/Software/mha4mysql-node-0.58.tar.gz

安装MHA Node(所有节点)

tar -zxvf mha4mysql-node-0.58.tar.gz
cd mha4mysql-node-0.58
perl Makefile.PL
make && make install

安装MHA Manager(仅manager节点)

tar -zxvf mha4mysql-manager-0.58.tar.gz
cd mha4mysql-manager-0.58
perl Makefile.PL
make && make install
# 创建MHA工作目录
mkdir -p /etc/mha/mha_cluster /var/log/mha/mha_cluster

manager组件安装后在/usr/local/bin下面会生成几个工具,主要包括以下几个:

  • masterha_check_ssh 检查 MHA 的 SSH 配置状况

  • masterha_check_repl 检查 MySQL 复制状况

  • masterha_manger 启动 manager的脚本

  • masterha_check_status 检测当前 MHA 运行状态

  • masterha_master_monitor 检测 master 是否宕机

  • masterha_master_switch 控制故障转移(自动或者手动)

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

  • masterha_stop 关闭manager

node组件安装后也会在/usr/local/bin 下面会生成几个脚本(这些工具通常由 MHAManager 的脚本触发,无需人为操作)主要如下:

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

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

  • filter_mysqlbinlog 去除不必要的 ROLLBACK 事件

  • purge_relay_logs 清除中继日志(Relay-log)

3. 配置MHA

创建MHA配置文件(全文粘贴到manager节点)

cat > /etc/mha/mha_cluster.cnf << EOF
[server default]
# MHA管理用户(需在所有MySQL节点创建)
user=mha_user
password=mha@123
# SSH登录用户
ssh_user=root
# MySQL复制用户
repl_user=repl
repl_password=Repl@123
# 健康检查间隔(秒)
ping_interval=1
# master的binlog目录
master_binlog_dir=/usr/local/mysql/data
# 远程节点临时目录
remote_workdir=/tmp
# 二次检查节点
secondary_check_script=masterha_secondary_check -s mha-node2 -s mha-node3
# manager工作目录
manager_workdir=/var/log/mha/mha_cluster
# manager日志
manager_log=/var/log/mha/mha_cluster/manager.log
​
[server1]
hostname=mha-node1
port=3306
# 不优先作为候选主库
candidate_master=0
​
[server2]
hostname=mha-node2
port=3306
# 优先作为候选主库(数据最新时)
candidate_master=1
# 忽略复制延迟,强制作为候选
check_repl_delay=0
​
[server3]
hostname=mha-node3
port=3306
candidate_master=0
EOF

创建MHA管理用户(所有MySQL节点)

# 主服务器用root登录mysql,创建用户,两个从服务器就都有了
CREATE USER 'mha_user'@'192.168.221.%' IDENTIFIED WITH mysql_native_password BY 'mha@123';
GRANT ALL PRIVILEGES ON *.* TO 'mha_user'@'192.168.221.%';
FLUSH PRIVILEGES;

四、验证MHA配置

1. 检查SSH连接(manager节点)

masterha_check_ssh --conf=/etc/mha/mha_cluster.cnf
# 输出"All SSH connection tests passed successfully."即为正常

2. 检查主从复制(manager节点)

masterha_check_repl --conf=/etc/mha/mha_cluster.cnf
# 输出"MySQL Replication Health is OK."即为正常

五、启动MHA Manager

# 前台启动(测试用,日志实时输出)
masterha_manager --conf=/etc/mha/mha_cluster.cnf
# 后台启动(生产用)
nohup masterha_manager --conf=/etc/mha/mha_cluster.cnf > /var/log/mha/mha_cluster/nohup.log 2>&1 &
# 检查MHA状态
masterha_check_status --conf=/etc/mha/mha_cluster.cnf
# 输出"mha_cluster (pid: xxxx) is running(0:PING_OK)"即为正常运行

六、测试故障切换

1. 模拟Master故障(在mha-node1执行)

# 停止主库服务
systemctl stop mysqld 

2. 观察故障切换(manager节点日志)

tail -f /var/log/mha/mha_cluster/manager.log
# 正常情况下,日志会显示:
# - 检测到master故障
# - 提升mha-node2为新master
# - 其他slave(mha-node3)指向新master

3. 验证切换结果

# 在新master(mha-node2)查看状态
mysql -uroot -p -e "SELECT @@server_id, @@read_only;"
# 应显示server_id=30,read_only=OFF或者0
# 在mha-node3查看复制状态
mysql -uroot -p -e "SHOW SLAVE STATUS\G"
# 应显示Master_Host为mha-node2,且复制正常

七、故障恢复后处理

  1. 修复原master(mha-node1),重新安装MySQL并配置为新master(mha-node2)的从库。

  2. 重新启动MHA Manager(故障切换后Manager会自动退出):

nohup masterha_manager --conf=/etc/mha/mha_cluster.cnf > /var/log/mha/mha_cluster/nohup.log 2>&1 &

注意事项

  1. MySQL 8.0兼容性:需使用MHA 0.58版本,且用户认证插件必须为mysql_native_password

  2. GTID依赖:建议开启GTID,减少MHA切换时的binlog定位复杂度。

  3. 候选主库选择candidate_master=1的节点应尽量与原master数据一致(复制延迟小)。

  4. 日志监控:定期检查MHA日志,及时发现潜在问题(如SSH连接失败、复制延迟等)。

通过以上步骤,即可完成MySQL 8.0环境下的MHA高可用部署,实现主库故障时的自动切换,提升数据库服务可用性。

八、MHA与VIP(虚拟IP)集成配置

在MHA架构中,虽然其核心功能是实现主从自动切换,但应用程序通常通过固定IP地址连接数据库。为避免主库切换后需手动修改应用连接地址,可引入VIP(虚拟IP) 实现IP漂移——VIP始终绑定当前主库节点,切换时自动迁移至新主库,确保应用无感知。

“虚拟 IP”(Virtual IP,简称 VIP)是一个在网络技术中常见的概念,指的是不直接绑定到特定物理网络接口(如网卡)的 IP 地址,而是通过软件或网络设备(如路由器、负载均衡器)逻辑分配和管理的 IP 地址。它的核心作用是实现网络服务的高可用性、负载均衡、故障转移等功能。

一、VIP规划与原理

1.VIP设定:为MHA集群分配一个独立的虚拟IP(如192.168.8.100),不直接绑定到某台物理机,而是随主库节点动态迁移。

2.实现逻辑:通过MHA的master_ip_failover脚本,在主库故障切换时自动执行以下操作:

  • 从原主库(故障节点)移除VIP;

  • 在新主库(提升的slave)绑定VIP;

  • 确保VIP在网络中唯一,避免冲突。

二、VIP配置步骤

1. 环境准备(所有节点)

确保所有节点支持VIP配置,关闭网络管理工具(如NetworkManager)对VIP的干扰:

# 关闭NetworkManager(避免自动清理VIP)
systemctl stop NetworkManager && systemctl disable NetworkManager
​
# 安装arping工具(用于发送ARP广播,刷新网络缓存)
# CentOS
yum install -y arping
# Ubuntu
apt install -y arping

2. 编写VIP切换脚本

在MHA Manager节点创建master_ip_failover脚本(用于控制VIP漂移),路径为/etc/mha/master_ip_failover

#!/usr/bin/perl
use strict;
use warnings FATAL => 'all';
use Getopt::Long;
​
# VIP配置
my $vip = '192.168.8.100/24';  # 虚拟IP及子网掩码
my $key = '0';                 # 虚拟网卡标识(如需)
my $dev = 'eth0';              # 物理网卡名称(根据实际环境修改)
​
# 解析MHA传递的参数
my ($command, $ssh_user, $orig_master_host, $orig_master_ip, $orig_master_port, $new_master_host, $new_master_ip, $new_master_port);
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,
);
​
# 执行VIP操作的函数
sub exec_cmd {my $cmd = shift;my $result = system($cmd);if ($result != 0) {die "Failed to execute: $cmd\n";}
}
​
# 从原主库移除VIP
if ($command eq "stop" || $command eq "stopssh") {print "Removing VIP $vip from old master $orig_master_host...\n";exec_cmd("ssh $ssh_user\@$orig_master_host \"ip addr del $vip dev $dev; arping -c 3 -I $dev $vip\"");
}
​
# 在新主库绑定VIP
elsif ($command eq "start") {print "Adding VIP $vip to new master $new_master_host...\n";exec_cmd("ssh $ssh_user\@$new_master_host \"ip addr add $vip dev $dev; arping -c 3 -I $dev $vip\"");
}
​
# 忽略其他命令
elsif ($command eq "status") {exit 0;
}
​
exit 0;

给脚本添加执行权限:

chmod +x /etc/mha/master_ip_failover

3. 集成VIP脚本到MHA配置

修改MHA配置文件/etc/mha/mha_cluster.cnf,添加VIP脚本路径:

[server default]
# ... 原有配置 ...
# 添加VIP切换脚本
master_ip_failover_script=/etc/mha/master_ip_failover

4. 初始化VIP(首次部署)

手动在当前主库(mha-node1)绑定VIP:

# 在mha-node1执行
ip addr add 192.168.8.100/24 dev eth0  # 绑定VIP到网卡
arping -c 3 -I eth0 192.168.8.100     # 发送ARP广播,通知网络设备更新缓存

验证VIP绑定:

ip addr show eth0 | grep 192.168.8.100
# 输出包含"192.168.8.100/24"即为成功

三、验证VIP漂移功能

1. 重启MHA Manager

使VIP配置生效:

# 先停止原有MHA进程
masterha_stop --conf=/etc/mha/mha_cluster.cnf
​
# 后台重启
nohup masterha_manager --conf=/etc/mha/mha_cluster.cnf > /var/log/mha/mha_cluster/nohup.log 2>&1 &

2. 模拟主库故障(同前文步骤)

在原主库(mha-node1)停止MySQL服务:

systemctl stop mysqld

3. 检查VIP漂移结果

  • 查看MHA日志:确认脚本执行成功

tail -f /var/log/mha/mha_cluster/manager.log
# 应包含"Removing VIP from old master"和"Adding VIP to new master"的成功日志

  • 验证新主库VIP:在mha-node2(新主库)执行

ip addr show eth0 | grep 192.168.8.100
# 输出包含VIP即为漂移成功

  • 应用连接测试:通过VIP连接数据库,验证可用性

mysql -h 192.168.8.100 -u root -p
# 能成功登录即表示应用无感知切换

四、VIP配置注意事项

  1. 网络兼容性:确保交换机、防火墙支持VIP漂移(允许同一IP在不同节点间切换),避免因网络策略导致VIP不可用。

  2. ARP缓存刷新:脚本中arping命令用于强制更新网络中其他设备的ARP缓存,必须添加,否则可能出现VIP切换后短时间无法访问的问题。

  3. 脚本权限master_ip_failover脚本需保证MHA Manager用户(通常为root)有执行权限,且SSH免密登录对所有节点生效(否则脚本无法远程执行命令)。

  4. 故障恢复后处理:原主库修复后,需手动将其作为新主库的从库,不要手动绑定VIP(VIP应由MHA脚本自动管理)。

通过集成VIP,MHA集群可实现“主库切换+IP漂移”全自动化,进一步降低故障对应用的影响,提升整体高可用能力。

http://www.dtcms.com/a/584072.html

相关文章:

  • 删除西部数码网站管理助手网站建设公司该如何选择
  • 浙江建设厅网站 打不开建设厅网站装修合同模板
  • 一站式婚庆公司装修平台排行榜前十名
  • ae模板下载网站推荐软件项目管理心得
  • 商城网站框架信息流优化
  • 什么的网站策划wordpress 4.9 漏洞
  • 婚纱摄影网站源码2022年房地产太惨了
  • 浦东网站建设箱海运wordpress站点版权设置
  • 网站解析不了ui设计的网站
  • 租用服务器网站wordpress 双语主题
  • 那个网站有免费的模板商城app制作教程
  • wordpress网站网页加密美空摄影网
  • 平台建设上线网站上海排名前十的装修公司
  • asp网站编辑教程中国建设银行网站解绑手机
  • 网站建设一键搭建如何介绍设计的网站模板下载地址
  • 网站建设购买数据库的流程制作网站价格不一
  • 长春制作网站厂房设计装修公司
  • 合肥学做网站app的学校开网店的流程及程序
  • 自己网站做seo网站窗口建设
  • 重庆做网站推广的公司建设银行网站预约取款
  • 衡阳衡阳县网站建设珠海网站建设q.479185700強
  • 石排网站建设陈村大良网站建设
  • 成都建筑网站建设手机怎么创建自己的网页
  • 网站可以做推广大气自适应网站源码
  • 江苏省建设厅官方网站公式公告亚马逊网站建设历程
  • 设计网站首页要几天外国ps素材网站
  • 目前网站开发的新技术海外推广方式有哪些
  • 网站推广计划效果最专业的网站建设团队
  • 常州高端网站建设免费做期中考试的网站
  • 上海手机网站建设电话浙江建设局网站