Keepalived : mysql + redis + minio

目录

1. 注意事项

2. 配置服务器

3. 部署mysql

4. 部署redis

5. 部署minio

6. 配置keepalived

7. 主节点崩溃后如果恢复

  1. 注意事项
    1. 红色标题为可选命令,不需要执行,只有出现问题或者需要时执行
  2. 配置服务器
    1. 主节点 mainNode 192.168.36.141
    2. 从节点 slaveNode 192.168.36.142
    3. mysql-vip 192.168.36.143
    4. redis-vip 192.168.36.144
    5. minio-vip 192.168.36.145
    6. 关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

    1. 关闭selinux

临时关闭

setenforce 0

查询状态是否为Permissive

getenforce

永久关闭:

vi /etc/sysconfig/selinux

SELINUX=disabled

  1. 部署mysql
    1. 配置文件根据内存来,只需要修改innodb_buffer_pool_size的值
    2. 在两台服务器创建用户

mkdir /data

useradd -d /data/mysql mysql

    1. 修改两个服务器mysql用户密码为123456

passwd mysql

    1. 修改/etc/my.cnf配置文件为my.cnf主和my.cnf从
    2. mainNode的my.cnf

#

## my.cnf for 8.0版本

## author: yejr(yejinrong@zhishutang.com, http://imysql.com, QQ: 4700963)

##

## 叶金荣(yejr)

## 国内知名MySQL专家,MySQL布道师,Oracle MySQL ACE Director,腾讯云TVP成员。

## 微信公众:老叶茶馆(imysql_wx), 博客:https://imysql.com

## QQ群: 125572178

## 注意:个别建议可能需要根据实际情况作调整,请自行判断或联系我,本人不对这些建议结果负相应责任

## 本配置文件主要适用于MySQL 8.0版本

#

[client]

port = 3306

socket = /data/mysql/data/mysql.sock

[mysql]

prompt = "\u@mysqldb \R:\m:\s [\d]> "

no_auto_rehash

[mysqld]

user = mysql

port = 3306

#大小写不敏感

lower_case_table_names=1

#主从复制或MGR集群中,server_id记得要不同

#另外,实例启动时会生成 auto.cnf,里面的 server_uuid 值也要不同

#server_uuid的值还可以自己手动指定,只要符合uuid的格式标准就可以

server_id = 3306

basedir = /data/mysql/mysql

datadir = /data/mysql/data

socket = /data/mysql/data/mysql.sock

pid_file = mysqldb.pid

character_set_server = UTF8MB4

skip_name_resolve = 1

#若你的MySQL数据库主要运行在境外,请务必根据实际情况调整本参数

default_time_zone = "+8:00"

#启用admin_port,连接数爆满等紧急情况下给管理员留个后门

admin_address = '127.0.0.1'

admin_port = 33062

#performance setttings

lock_wait_timeout = 3600

open_files_limit    = 65535

back_log = 1024

max_connections = 512

max_connect_errors = 1000000

table_open_cache = 1024

table_definition_cache = 1024

thread_stack = 512K

sort_buffer_size = 16M

join_buffer_size = 16M

read_buffer_size = 8M

read_rnd_buffer_size = 16M

bulk_insert_buffer_size = 64M

thread_cache_size = 768

interactive_timeout = 600

wait_timeout = 600

tmp_table_size = 96M

max_heap_table_size = 96M

#log settings

log_timestamps = SYSTEM

log_error = /data/mysql/data/error.log

log_error_verbosity = 3

slow_query_log = 1

log_slow_extra = 1

slow_query_log_file = /data/mysql/data/slow.log

long_query_time = 0.1

log_queries_not_using_indexes = 1

log_throttle_queries_not_using_indexes = 60

min_examined_row_limit = 100

log_slow_admin_statements = 1

log_slow_slave_statements = 1

log_bin = /data/mysql/data/mybinlog

binlog_format = ROW

sync_binlog = 1 #MGR环境中由其他节点提供容错性,可不设置双1以提高本地节点性能

binlog_cache_size = 4M

max_binlog_cache_size = 2G

max_binlog_size = 1G

binlog_rows_query_log_events = 1

binlog_expire_logs_seconds = 604800

#MySQL 8.0.22前,想启用MGR的话,需要设置binlog_checksum=NONE才行

binlog_checksum = CRC32

gtid_mode = ON

enforce_gtid_consistency = TRUE

#myisam settings

key_buffer_size = 32M

myisam_sort_buffer_size = 128M

#replication settings

relay_log_recovery = 1

slave_parallel_type = LOGICAL_CLOCK

slave_parallel_workers = 64 #可以设置为逻辑CPU数量的2倍

binlog_transaction_dependency_tracking = WRITESET

slave_preserve_commit_order = 1

slave_checkpoint_period = 2

# async replication settings

skip_slave_start

#innodb settings

transaction_isolation = REPEATABLE-READ

innodb_buffer_pool_size = 14336M

innodb_buffer_pool_instances = 4

innodb_data_file_path = ibdata1:12M:autoextend

innodb_flush_log_at_trx_commit = 1 #MGR环境中由其他节点提供容错性,可不设置双1以提高本地节点性能

innodb_log_buffer_size = 32M

innodb_log_file_size = 1G #如果线上环境的TPS较高,建议加大至1G以上,如果压力不大可以调小

innodb_log_files_in_group = 3

innodb_max_undo_log_size = 4G

# 根据您的服务器IOPS能力适当调整

# 一般配普通SSD盘的话,可以调整到 10000 - 20000

# 配置高端PCIe SSD卡的话,则可以调整的更高,比如 50000 - 80000

innodb_io_capacity = 4000

innodb_io_capacity_max = 8000

innodb_open_files = 65535

innodb_flush_method = O_DIRECT

innodb_lru_scan_depth = 4000

innodb_lock_wait_timeout = 10

innodb_rollback_on_timeout = 1

innodb_print_all_deadlocks = 1

innodb_online_alter_log_max_size = 4G

innodb_print_ddl_logs = 1

innodb_status_file = 1

#注意: 开启 innodb_status_output & innodb_status_output_locks 后, 可能会导致log_error文件增长较快

innodb_status_output = 0

innodb_status_output_locks = 1

innodb_sort_buffer_size = 67108864

innodb_adaptive_hash_index = OFF

#innodb monitor settings

innodb_monitor_enable = "module_innodb"

innodb_monitor_enable = "module_server"

innodb_monitor_enable = "module_dml"

innodb_monitor_enable = "module_ddl"

innodb_monitor_enable = "module_trx"

innodb_monitor_enable = "module_os"

innodb_monitor_enable = "module_purge"

innodb_monitor_enable = "module_log"

innodb_monitor_enable = "module_lock"

innodb_monitor_enable = "module_buffer"

innodb_monitor_enable = "module_index"

innodb_monitor_enable = "module_ibuf_system"

innodb_monitor_enable = "module_buffer_page"

#innodb_monitor_enable = "module_adaptive_hash"

#pfs settings

performance_schema = 1

#performance_schema_instrument = '%memory%=on'

performance_schema_instrument = '%lock%=on'

[mysqldump]

quick

    1. slaveNode的my.cnf

#

## my.cnf for 8.0版本

## author: yejr(yejinrong@zhishutang.com, http://imysql.com, QQ: 4700963)

##

## 叶金荣(yejr)

## 国内知名MySQL专家,MySQL布道师,Oracle MySQL ACE Director,腾讯云TVP成员。

## 微信公众:老叶茶馆(imysql_wx), 博客:https://imysql.com

## QQ群: 125572178

## 注意:个别建议可能需要根据实际情况作调整,请自行判断或联系我,本人不对这些建议结果负相应责任

## 本配置文件主要适用于MySQL 8.0版本

#

[client]

port = 3306

socket = /data/mysql/data/mysql.sock

[mysql]

prompt = "\u@mysqldb \R:\m:\s [\d]> "

no_auto_rehash

[mysqld]

user = mysql

port = 3306

#大小写不敏感

lower_case_table_names=1

#主从复制或MGR集群中,server_id记得要不同

#另外,实例启动时会生成 auto.cnf,里面的 server_uuid 值也要不同

#server_uuid的值还可以自己手动指定,只要符合uuid的格式标准就可以

server_id = 3307

basedir = /data/mysql/mysql

datadir = /data/mysql/data

socket = /data/mysql/data/mysql.sock

pid_file = mysqldb.pid

character_set_server = UTF8MB4

skip_name_resolve = 1

#若你的MySQL数据库主要运行在境外,请务必根据实际情况调整本参数

default_time_zone = "+8:00"

#启用admin_port,连接数爆满等紧急情况下给管理员留个后门

admin_address = '127.0.0.1'

admin_port = 33062

#performance setttings

lock_wait_timeout = 3600

open_files_limit    = 65535

back_log = 1024

max_connections = 512

max_connect_errors = 1000000

table_open_cache = 1024

table_definition_cache = 1024

thread_stack = 512K

sort_buffer_size = 16M

join_buffer_size = 16M

read_buffer_size = 8M

read_rnd_buffer_size = 16M

bulk_insert_buffer_size = 64M

thread_cache_size = 768

interactive_timeout = 600

wait_timeout = 600

tmp_table_size = 96M

max_heap_table_size = 96M

#log settings

log_timestamps = SYSTEM

log_error = /data/mysql/data/error.log

log_error_verbosity = 3

slow_query_log = 1

log_slow_extra = 1

slow_query_log_file = /data/mysql/data/slow.log

long_query_time = 0.1

log_queries_not_using_indexes = 1

log_throttle_queries_not_using_indexes = 60

min_examined_row_limit = 100

log_slow_admin_statements = 1

log_slow_slave_statements = 1

log_bin = /data/mysql/data/mybinlog

binlog_format = ROW

sync_binlog = 1 #MGR环境中由其他节点提供容错性,可不设置双1以提高本地节点性能

binlog_cache_size = 4M

max_binlog_cache_size = 2G

max_binlog_size = 1G

binlog_rows_query_log_events = 1

binlog_expire_logs_seconds = 604800

#MySQL 8.0.22前,想启用MGR的话,需要设置binlog_checksum=NONE才行

binlog_checksum = CRC32

gtid_mode = ON

enforce_gtid_consistency = TRUE

#myisam settings

key_buffer_size = 32M

myisam_sort_buffer_size = 128M

#replication settings

relay_log_recovery = 1

slave_parallel_type = LOGICAL_CLOCK

slave_parallel_workers = 64 #可以设置为逻辑CPU数量的2倍

binlog_transaction_dependency_tracking = WRITESET

slave_preserve_commit_order = 1

slave_checkpoint_period = 2

# async replication settings

skip_slave_start

#innodb settings

transaction_isolation = REPEATABLE-READ

innodb_buffer_pool_size = 4301M

innodb_buffer_pool_instances = 4

innodb_data_file_path = ibdata1:12M:autoextend

innodb_flush_log_at_trx_commit = 1 #MGR环境中由其他节点提供容错性,可不设置双1以提高本地节点性能

innodb_log_buffer_size = 32M

innodb_log_file_size = 1G #如果线上环境的TPS较高,建议加大至1G以上,如果压力不大可以调小

innodb_log_files_in_group = 3

innodb_max_undo_log_size = 4G

# 根据您的服务器IOPS能力适当调整

# 一般配普通SSD盘的话,可以调整到 10000 - 20000

# 配置高端PCIe SSD卡的话,则可以调整的更高,比如 50000 - 80000

innodb_io_capacity = 4000

innodb_io_capacity_max = 8000

innodb_open_files = 65535

innodb_flush_method = O_DIRECT

innodb_lru_scan_depth = 4000

innodb_lock_wait_timeout = 10

innodb_rollback_on_timeout = 1

innodb_print_all_deadlocks = 1

innodb_online_alter_log_max_size = 4G

innodb_print_ddl_logs = 1

innodb_status_file = 1

#注意: 开启 innodb_status_output & innodb_status_output_locks 后, 可能会导致log_error文件增长较快

innodb_status_output = 0

innodb_status_output_locks = 1

innodb_sort_buffer_size = 67108864

innodb_adaptive_hash_index = OFF

#innodb monitor settings

innodb_monitor_enable = "module_innodb"

innodb_monitor_enable = "module_server"

innodb_monitor_enable = "module_dml"

innodb_monitor_enable = "module_ddl"

innodb_monitor_enable = "module_trx"

innodb_monitor_enable = "module_os"

innodb_monitor_enable = "module_purge"

innodb_monitor_enable = "module_log"

innodb_monitor_enable = "module_lock"

innodb_monitor_enable = "module_buffer"

innodb_monitor_enable = "module_index"

innodb_monitor_enable = "module_ibuf_system"

innodb_monitor_enable = "module_buffer_page"

#innodb_monitor_enable = "module_adaptive_hash"

#pfs settings

performance_schema = 1

#performance_schema_instrument = '%memory%=on'

performance_schema_instrument = '%lock%=on'

[mysqldump]

quick

    1. 上传文件mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz到/data/mysql
    2. 使用mysql用户在两台服务器解压

tar -xxvf mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz

    1. 修改两个服务器路径

mv mysql-8.0.28-linux-glibc2.12-x86_64 mysql

    1. 删除安装包

rm mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz

    1. 配置两台环境变量

echo "export PATH=/data/mysql/mysql/bin:\$PATH">>.bash_profile

source .bash_profile

    1. 在mainNode 服务器初始化数据库

mysqld --initialize --user=mysql

    1. 启动数据库

/data/mysql/mysql/support-files/mysql.server start

    1. 在配置/data/mysql/data/error.log中找到随机密码eVnKUUkk+8iA  使用密码登录

mysql -uroot -p

    1. 重置root密码为123456 并创建root%

ALTER USER 'root'@'localhost' IDENTIFIED  BY '123456';

CREATE USER 'root'@'%' IDENTIFIED  BY '123456';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

GRANT GRANT OPTION ON *.* TO 'root'@'%';

FLUSH PRIVILEGES;

    1. 创建复制用户

CREATE USER 'repl'@'%' IDENTIFIED  BY '123456';

grant replication slave on *.* to 'repl'@'%';

ALTER USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

FLUSH PRIVILEGES;

    1. 停止数据库,并打包data文件夹到从库

/data/mysql/mysql/support-files/mysql.server stop

tar -zcvf data.tar.gz data

    1. 在从库/data/mysql解压data.tar.gz,并修改/data/mysql/data/auto.cnf中的uuid,不能和主库相同

tar -zxvf data.tar.gz

vi /data/mysql/data/auto.cnf

    1. 删除data.tar.gz

rm -rf data.tar.gz

    1. 启动mainNode

/data/mysql/mysql/support-files/mysql.server start

    1. 启动slaveNode

/data/mysql/mysql/support-files/mysql.server start

    1. 登录mainNode查看状态

show master status;

    1. 根据mainNode状态编写下面语句在slaveNode配置mainNode

change master to

master_host='192.168.36.141',

master_port=3306,

master_user='repl',

master_password='123456',

master_log_file='mybinlog.000003',

master_log_pos=197 ;

    1. 启动slaveNode上的主从

start slave;

    1. 登录slaveNode查询状态

show master status;

    1. 根据slaveNode状态编写下面语句在mainNode配置mainNode

change master to

master_host='192.168.36.142',

master_port=3306,

master_user='repl',

master_password='123456',

master_log_file='mybinlog.000003',

master_log_pos=197 ;

    1. 启动mainNode上的主从

start slave;

    1. 在mainNode查询主备状态

show slave status\G;

    1. 在slaveNode查询主备状态

show slave status\G;

    1. 如果主备状态都为下面则正常

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

    1. 在两边创建库和表测试
    2. 可以通过查询主备状态中的Last_IO_Error查找错误信息

  1. 部署redis
    1. 创建redis用户,并修改密码为123456

mkdir /data

useradd -d /data/redis redis

passwd redis

    1. 上传安装包redis-6.2.6-bin.tar.gz 并解压

tar -zxvf redis-6.2.6-bin.tar.gz

    1. 设置mainNode
      • 修改redis.conf中ip为0.0.0.0

bind 0.0.0.0

      • 修改redis.conf密码为123456

requirepass 123456

      • 修改redis.conf关闭保护模式

protected-mode no

      • 修改redis.conf中连接主库的密码

masterauth 123456

      • 修改redis.conf打开守护进程

daemonize yes

    1. 设置slaveNode
      • 修改redis.conf中ip为0.0.0.0

bind 0.0.0.0

      • 修改redis.config密码为123456

requirepass 123456

      • 修改redis.conf关闭保护模式

protected-mode no

      • 修改redis.conf打开守护进程

daemonize yes

      • 修改redis.conf中连接主库的密码

masterauth 123456

      • 修改redis.conf设置主节点地址

slaveof 192.168.36.141 6379

    1. 依次启动mainNode、slaveNode的服务端

./redis-server ./redis.conf 1>>../log/redis.log 2>&1 &

    1. 停止主服务器服务器

APPPATH=$(cd `dirname $0`;pwd)

cd $APPPATH

./redis-cli -a 123456 shutdown

或者

ps -ef |grep redis-server |awk '{print $2}'|xargs kill -9

    1. 将从库设置为主库

slaveof no one

    1. 当主库停止后,重启原来的主库,通话下面命令连接到新主库设置主节点同步主节点数据

slaveof 192.168.36.142 6379

replicaof 192.168.36.142 6379

    1. 查询主备配置

info replication

    1. 查询所有配置

info all

  1. 部署minio
    1. 使用minio 20220226版本
    2. 在主库和备库创建用户

mkdir /data

useradd -d /data/minio minio

passwd minio

    1. 进入minio用户,创建目录/data/minio/miniodata

su - minio

mkdir miniodata

    1. 上传minio_v20220226.tar.gz到/data/minio目录
    2. 解压minio_v20220226.tar.gz

tar -zxvf minio_v20220226.tar.gz

    1. 配置启动命令startMinio.sh

vi startMinio.sh

MINIO_ROOT_USER=minioadmin MINIO_ROOT_PASSWORD=minioadmin

./minio server /data/minio/miniodata --console-address ":9001" 1>>./logs/System.out 2>&1 &

    1. 添加执行权限

chmod +x startMinio.sh

    1. 创建日志目录

mkdir logs

    1. 启动两个服务器的minio

./startMinio.sh

    1. 登录页面创建桶:record、upload
    2. 在mainNode创建两个服务器的别名

./mc alias set xswhminio1 http://192.168.36.141:9000 minioadmin minioadmin

./mc alias set xswhminio2 http://192.168.36.142:9000 minioadmin minioadmin

    1. 在mainNode编辑同步脚本sync.sh,配置单向同步,只会从xswhminio1同步到xswhminio2

vi sync.sh

chmod +x sync.sh

./mc mirror --remove --overwrite --watch  xswhminio1  xswhminio2 1>>./logs/sync.out 2>&1 &

    1. 在mainNode启动同步脚本

./sync.sh

    1. slaveNode创建两个服务器的别名此同步不要开启,当主库崩溃后才可以处理,具体参考主节点崩溃后如何恢复

./mc alias set xswhminio1 http://192.168.36.141:9000 minioadmin minioadmin

./mc alias set xswhminio2 http://192.168.36.142:9000 minioadmin minioadmin

    1. 在slaveNode编辑同步脚本sync.sh,配置单向同步,只会从xswhminio1同步到xswhminio2此同步不要开启,当主库崩溃后才可以处理,具体参考主节点崩溃后如何恢复

vi sync.sh

chmod +x sync.sh

./mc mirror --remove --overwrite --watch  xswhminio1  xswhminio2 1>>./logs/sync.out 2>&1 &

    1. 在slaveNode启动同步脚本此同步不要开启,当主库崩溃后才可以处理,具体参考主节点崩溃后如何恢复

./sync.sh

  1. 配置keepalived
    1. mainNode和slaveNode安装keepalived

yum -y install keepalived

    1. 开启自启动

systemctl start keepalived

systemctl enable keepalived

    1. redis的mainNode配置,需要切换vip和主备脚本

      • 不同的脚本

vi /root/check_redis.sh

#!/bin/bash

portSize=`netstat -ntlp|grep 6379| wc -l`

echo "端口出现的次数$portSize"

if [ $portSize -gt 0 ]

then

echo "redis状态正常"

exit 0

else

echo "redis状态异常"

exit 1

fi

vi /root/redis_master.sh

#!/bin/bash

source /data/redis/.bash_profile

/data/redis/redis/bin/redis-cli -p 6379 -a 123456 <<EOF

slaveof no one

exit

EOF

vi /root/redis_backup.sh

#!/bin/bash

source /data/redis/.bash_profile

/data/redis/redis/bin/redis-cli -p 6379 -a 123456 <<EOF

slaveof 192.168.36.142 6379

replicaof 192.168.36.142 6379

EOF

    1. redis的salveNode的配置

      • 不同的脚本

vi /root/check_redis.sh

#!/bin/bash

portSize=`netstat -ntlp|grep 6379| wc -l`

echo "端口出现的次数$portSize"

if [ $portSize -gt 0 ]

then

echo "redis状态正常"

exit 0

else

echo "redis状态异常"

exit 1

fi

vi /root/redis_master.sh

#!/bin/bash

source /data/redis/.bash_profile

/data/redis/redis/bin/redis-cli -p 6379 -a 123456 <<EOF

slaveof no one

exit

EOF

vi /root/redis_backup.sh

#!/bin/bash

source /data/redis/.bash_profile

/data/redis/redis/bin/redis-cli -p 6379 -a 123456 <<EOF

slaveof 192.168.36.141 6379

replicaof 192.168.36.141 6379

EOF

    1. minio的mainNode配置,只需要切换vip,不需要主备脚本

      • 不同的脚本

vi /root/check_minio.sh

#!/bin/bash

portSize=`netstat -ntlp|grep 9000| wc -l`

echo "端口出现的次数$portSize"

if [ $portSize -gt 0 ]

then

echo "minio状态正常"

exit 0

else

echo "minio状态异常"

exit 1

fi

    1. minio的slaveNode配置

      • 不同的脚本

vi /root/check_minio.sh

#!/bin/bash

portSize=`netstat -ntlp|grep 9000| wc -l`

echo "端口出现的次数$portSize"

if [ $portSize -gt 0 ]

then

echo "minio状态正常"

exit 0

else

echo "minio状态异常"

exit 1

fi

    1. mysql的mainNode配置,只需要切换vip,不需要主备脚本

      • 不同的脚本

vi /root/check_mysql.sh

#!/bin/bash

portSize=`netstat -ntlp|grep 3306| wc -l`

echo "端口出现的次数$portSize"

if [ $portSize -gt 0 ]

then

echo "mysql状态正常"

exit 0

else

echo "mysql状态异常"

exit 1

fi

    1. mysql的slaveNode配置

      • 不同的脚本

vi /root/check_mysql.sh

#!/bin/bash

portSize=`netstat -ntlp|grep 3306| wc -l`

echo "端口出现的次数$portSize"

if [ $portSize -gt 0 ]

then

echo "mysql状态正常"

exit 0

else

echo "mysql状态异常"

exit 1

fi

      • 设置执行权限

cd /root/

chmod 700 *.sh

    1. mainNode的keepalived.conf配置

! Configuration File for keepalived

global_defs {

router_id xswhHA #同一个网段不同的高可用不一样,同一个高可用要一样

script_user root #默认执行用户

enable_script_security

}

#检查redis状态

vrrp_script check_redis {

script "/root/check_redis.sh"

interval 1

weight -20

}

#redis主从切换

vrrp_instance vi_redis {

state MASTER #从机要配置为BACKUP

interface ens33

virtual_router_id 101 #同一个网段不同的高可用不一样,同一个高可用要一样

priority 100 #从机配置成90

advert_int 1

nopreempt

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.36.144

}

track_script {

check_redis

}

notify_master "/root/redis_master.sh"

notify_backup "/root/redis_backup.sh"

notify_fault "/root/redis_backup.sh"

notify_stop "/root/redis_backup.sh"

}

#minio状态检查

vrrp_script check_minio {

script "/root/check_minio.sh"

interval 1

weight -20

}

#minio主从切换

vrrp_instance vi_minio {

state MASTER #从机要配置为BACKUP

interface ens33

virtual_router_id 102 #同一个网段不同的高可用不一样,同一个高可用要一样

priority 100 #从机配置成90

advert_int 1

nopreempt

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.36.145

}

track_script {

check_minio

}

}

#mysql状态检查

vrrp_script check_mysql {

script "/root/check_mysql.sh"

interval 1

weight -20

}

#mysql主从切换

vrrp_instance vi_mysql {

state MASTER #从机要配置为BACKUP

interface ens33

virtual_router_id 103 #同一个网段不同的高可用不一样,同一个高可用要一样

priority 100 #从机配置成90

advert_int 1

nopreempt

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.36.143

}

track_script {

check_mysql

}

}

    1. slaveNode的keepalived.conf配置

! Configuration File for keepalived

global_defs {

router_id xswhHA #同一个网段不同的高可用不一样,同一个高可用要一样

script_user root #默认执行用户

enable_script_security

}

#检查redis状态

vrrp_script check_redis {

script "/root/check_redis.sh"

interval 1

weight -20

}

#redis主从切换

vrrp_instance vi_redis {

state BACKUP #从机要配置为BACKUP

interface ens33

virtual_router_id 101 #同一个网段不同的高可用不一样,同一个高可用要一样

priority 90 #从机配置成90

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.36.144

}

track_script {

check_redis

}

notify_master "/root/redis_master.sh"

notify_backup "/root/redis_backup.sh"

notify_fault "/root/redis_backup.sh"

notify_stop "/root/redis_backup.sh"

}

#minio状态检查

vrrp_script check_minio {

script "/root/check_minio.sh"

interval 1

weight -20

}

#minio主从切换

vrrp_instance vi_minio {

state BACKUP #从机要配置为BACKUP

interface ens33

virtual_router_id 102 #同一个网段不同的高可用不一样,同一个高可用要一样

priority 90 #从机配置成90

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.36.145

}

track_script {

check_minio

}

}

#mysql状态检查

vrrp_script check_mysql {

script "/root/check_mysql.sh"

interval 1

weight -20

}

#mysql主从切换

vrrp_instance vi_mysql {

state BACKUP #从机要配置为BACKUP

interface ens33

virtual_router_id 103 #同一个网段不同的高可用不一样,同一个高可用要一样

priority 90 #从机配置成90

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.36.143

}

track_script {

check_mysql

}

}

    1. 重新重启mainNode的keepalived并查询日志

systemctl restart keepalived

tail -f /var/log/messages

    1. 重启mainNode的keepalived并查询日志

systemctl restart keepalived

tail -f /var/log/messages

    1. 使用vip连接mysql和minio以及redis,添加数据,然后关闭mainNode对应的进程,看是否正常
  1. 主节点崩溃后如果恢复

    1. redis主节点崩溃
      • 启动主节点redis应用

./startRedis.sh

      • 登录redis服务器

/data/redis/redis/bin/redis-cli -p 6379 -a 123456

      • 将崩溃的主库设置为从库

slaveof 192.168.36.142 6379

replicaof 192.168.36.142 6379

      • 查询主备配置

info replication

    1. minio主节点崩溃
      • 关闭mainNode同步程序,千万不要开启这个,否则数据会出错

ps -ef|grep mc

./mc mirror --remove --overwrite --watch xswhminio1 xswhminio2

kill -9

      • 启动mainNode上面的minio

./startMinio.sh

      • 启动slaveNode上面的同步程序【主从正常的情况下不要启动从库的同步程序】

./sync.sh

    1. mysql主节点崩溃
      • 重新启动主节点程序

/data/mysql/mysql/support-files/mysql.server start

      • 启动mainNode上的主从

mysql -uroot -p

start slave;

      • mainNode查询主备状态

show slave status\G;

      • 在slaveNode查询主备状态

show slave status\G;

      • 如果主备状态都为下面则正常

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值