linux下部署数据库总结

news2024/11/23 2:01:29

数据库

数据库主要分为两大类:关系型数据库与 NoSQL 数据库

关系型数据库,是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库 中的数据主流的 MySQL、Oracle、MS SQL Server 和 DB2 都属于这类传统数据库。

NoSQL 数据库,全称为 Not Only SQL,意思就是适用关系型数据库的时候就使用关系型数据库,不适 用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存储。主要分为临时性键 值存储(memcached、Redis)、永久性键值存储(ROMA、Redis)、面向文档的数据库 (MongoDB、CouchDB)、面向列的数据库(Cassandra、HBase),每种 NoSQL 都有其特有的使用 场景及优点

一、MySQL

#安装依赖(rhel7版本) rhel9中还需要rpcgen.x86_64
yum install cmake gcc-c++ openssl-devel ncurses-devel.x86_64 libtirpc-devel-1.3.3-8.el7_4.x86_64.rpm
#下载源码安装包后解压
tar zxf mysql-boost-5.7.44.tar.gz
du -sh mysql-5.7.44/    #查看文件大小
cd /root/mysql-5.7.44
#源码编译,当cmake出错后如果想重新检测,删除 mysql-5.7.44 中 CMakeCache.txt即可
rm -fr CMakeCache.txt #make出错后使用
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/
#安装mysql
make -j2 #-j2 表示有几个核心就跑几个进程
make install

#生成启动脚本
yum install initscripts -y
cd /usr/local/mysql/support-files/
cp mysql.server /etc/init.d/mysqld
#修改环境变量
vim ~/.bash_profile
    export PATH=$PATH:/usr/local/mysql/bin
source ~/.bash_profile

#生成数据目录
useradd -s /sbin/nologin -M mysql
mkdir -p /data/mysql
chown mysql.mysql /data/mysql/

#修改配置文件
vim /etc/my.cnf
    [mysqld]
    datadir=/data/mysql #指定数据目录
    socket=/data/mysql/mysql.sock #指定套接字
    symbolic-links=0 #数据只能存放到数据目录中,禁止链接到数据目录

#数据库初始化建立mysql基本数据
mysqld --initialize --user=mysql
/etc/init.d/mysqld start    #启动mysql
chkconfig --list #查看系统默认启动级别
chkconfig mysqld on #开机启动

#数据库安全初始化
mysql_secure_installation    #一般情况下前两个选no,后面选yes


#数据库环境出现问题时
rm -fr /data/mysql/*
mysqld --user mysql --initialize #重新初始化

#可以将配置好的文件传输到另一台主机上
Cd /usr/local/
rsync -al -r mysql root@172.25.254.10:/usr/local/    

组从复制

#写入大于读取,主多;读取大于写入,从多
#配置master
vim /etc/my.cnf
    [mysqld]
    datadir=/data/mysql
    socket=/data/mysql/mysql.sock
    symbolic-links=0
    log-bin=mysql-bin #仅master上开启
    server-id=20
/etc/init.d/mysqld restart
mysql -uroot -e "select @@server_id"-p     #查看mysql的编号
cd /data/mysql/
mysqlbinlog mysql-bin.000001 -vv ##查看二进制日志

#配置slave1
vim /etc/my.cnf
[mysqld]
    datadir=/data/mysql
    socket=/data/mysql/mysql.sock
    symbolic-links=0
    server-id=10
/etc/init.d/mysqld restart

#配置slave2
vim /etc/my.cnf
[mysqld]
    datadir=/data/mysql
    socket=/data/mysql/mysql.sock
    symbolic-links=0
    server-id=30
/etc/init.d/mysqld restart

CREATE USER 'wyh'@'%' IDENTIFIED BY '123'; ##生成专门用来做复制的用户,此用户是用于slave端做认证用
GRANT REPLICATION SLAVE ON *.* TO repl@'%'; ##对这个用户进行授权
SHOW MASTER STATUS; ##查看master的状态
#slave上的配置
CHANGE MASTER TO MASTER_HOST='172.25.254.10',MASTER_USER='wyh',MASTER_PASSWORD='123',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=350;
start slave;
SHOW SLAVE STATUS\G;

从机

延时复制(slave端操作)

慢查询

并行复制

半同步模式

开启gtid强制同步

mysql高可用之组复制(MGR)

rm-fr /data/mysql/*
vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
symbolic-links=0
server-id=10 #配置server唯一标识号
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY" #禁用指定存储引擎
gtid_mode=ON #启用全局事件标识
enforce_gtid_consistency=ON #强制gtid一致
master_info_repository=TABLE #复制事件数据到表中而不记录在数据目录中
relay_log_info_repository=TABLE
binlog_checksum=NONE #禁止对二进制日志校验
log_slave_updates=ON #打开数据库中继,当slave中sql线程读取日志后也会写入到自己的binlog中
log_bin=binlog #重新指定log名称 
binlog_format=ROW #使用行日志格式 
plugin_load_add='group_replication.so' #加载组复制插件
transaction_write_set_extraction=XXHASH64 #把每个事件编码为加密散列
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" #通知插件正式加入,或创建的组名,名称为uuid格式
group_replication_start_on_boot=off #在server启动时不自动启动组复制
group_replication_local_address="172.25.254.10:33061" #指定插件接受其他成员的信息端口
group_replication_group_seeds="172.25.254.10:33061,172.25.254.20:33061,172.25.254.30:33061"   #本地地址允许访问成员列表
group_replication_ip_whitelist="172.25.254.0/24,127.0.0.1/8" #主机白名单;不随系统自启而启动,只在初始成员主机中手动开启;需要在两种情况下做设定:1.初始化建组时 2.关闭并重新启动整个组时
group_replication_bootstrap_group=off 
group_replication_single_primary_mode=OFF #使用多主模式
group_replication_enforce_update_everywhere_checks=ON #组同步中有任何改变检测更新
group_replication_allow_local_disjoint_gtids_join=1 #放弃自己信息以master事件为主

mysqld user=mysql --initialize
/etc/init.d/mysqld start

slave主机上修改my.cnf

每一台主机上都添加地址解析

#进入数据库配置
mysql> SET SQL_LOG_BIN=0;                        #关闭日志
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE USER w@'%' IDENTIFIED BY '123';    #创建新用户
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT REPLICATION SLAVE ON *.* TO w@'%';    #赋予权限
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='w', MASTER_PASSWORD='123' 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路由

rpm -ivh mysql-router-community-8.4.0-1.el7.x86_64.rpm
rpm -ql mysql-router-community    #查看所有文件
vim /etc/mysqlrouter/mysqlrouter.conf
    [routing:ro]
    bind_address=0.0.0.0
    bind_port=7001
    destinations=172.25.254.20:3306,172.25.254.30:3306
    routing_strategy=round-robin    #轮询算法
    #routing_strategy = first-available    #先响应

systemctl start mysqlrouter.service
/etc/init.d/mysqld stop

MHA(需要在rhel7版本下进行实验)

#将数据库为一主两从模式,清除之前的实验痕迹
[root@mysql1 ~]# /etc/init.d/mysqld stop
[root@mysql1 ~]# rm -fr /data/mysql/*
[root@mysql1 ~]# ps aux | grep mysql
mysqlro+  28247  0.0  0.3 520980 12496 ?        Ssl  19:48   0:00 /usr/bin/mysqlrouter
root      28570  0.0  0.0 113416  1600 pts/0    S    20:20   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/mysql1.timinglee.org.pid
mysql     28963  0.5  5.5 1658680 213840 pts/0  Sl   20:20   0:02 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=mysql1.timinglee.org.err --pid-file=/data/mysql/mysql1.timinglee.org.pid --socket=/data/mysql/mysql.sock
root      29084  0.0  0.0 112824   980 pts/0    S+   20:29   0:00 grep --color=auto mysql
[root@mysql1 ~]# kill -9 28247
[root@mysql1 ~]# kill -9 28570
[root@mysql1 ~]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
server-id=10
log-bin=mysql-bin
gtid_mode=ON
log_slave_updates=ON
enforce-gtid-consistency=ON
symbolic-links=0
[root@mysql1 ~]# mysqld --user mysql --initialize
[root@mysql1 ~]# /etc/init.d/mysqld start
[root@mysql1 ~]# mysql_secure_installation
#master中配置
[root@mysql1 ~]# mysql -uroot -p
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY '123';
mysql> GRANT REPLICATION SLAVE ON *.* TO repl@'%';
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;

mysql> create user root@'%' identified by '123';
mysql> grant all on *.* to root@'%';
#slave中配置
mysql> CHANGE MASTER TO MASTER_HOST='172.25.254.10',MASTER_USER='repl',MASTER_PASSWORD='123', MASTER_AUTO_POSITION=1;
mysql> start slave;
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
mysql> SET GLOBAL rpl_semi_sync_slave_enabled =1;
mysql> STOP SLAVE IO_THREAD;
mysql> START SLAVE IO_THREAD;
mysql> SHOW STATUS LIKE 'Rpl_semi_sync%';
unzip MHA-7.zip
cd MHA-7/
yum install *.rpm -y    #安装需要软件
#将节点所需软件传输
scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root@172                                                                           .25.254.10:/root
mha4mysql-node-0.58-0.el7.centos.noarch.rpm   100%   35KB   4.0MB/s   00:00
scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root@172                                                                              .25.254.20:/root
mha4mysql-node-0.58-0.el7.centos.noarch.rpm   100%   35KB  14.0MB/s   00:00
scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root@172                                                                                   .25.254.30:/root
mha4mysql-node-0.58-0.el7.centos.noarch.rpm   100%   35KB   4.9MB/s   00:00
#vim /etc/ssh/sshd_config    
#systemctl restart sshd    #传输速度慢时可以修改其中的DNS
#在节点处安装软件
yum install mha4mysql-node-0.58-0.el7.centos.noarch.rpm
tar zxf mha4mysql-manager-0.58.tar.gz -C /etc/masterha
cd mha4mysql-manager-0.58/samples/conf/
[root@mysql-mha conf]# ls
app1.cnf  masterha_default.cnf
[root@mysql-mha conf]# cat masterha_default.cnf app1.cnf > /etc/masterha/app1.cnf
[root@mysql-mha conf]# cd /etc/masterha/
[root@mysql-mha masterha]# vim app1.cnf
#免密认证
[root@mysql-mha ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):    #直接回车
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):    #直接回车
Enter same passphrase again:    #直接回车
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:0oVq2T4RO7u8XCfvsIeyQ3rtSDwqQ3BjuUpWcO00aZQ root@mysql-mha.timinglee.org
The key's randomart image is:
+---[RSA 2048]----+
|     o.o         |
|  . . E  .       |
|   o = .o .      |
|  . * .= +       |
|   = o= S        |
|  o o. +.+       |
| o o   oB.+..    |
|  . o .=+*o*.    |
|     o..B*ooo    |
+----[SHA256]-----+
[root@mysql-mha ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.10
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '172.25.254.10 (172.25.254.10)' can't be established.
ECDSA key fingerprint is SHA256:I/mAOn2BwkS3J9C80hAyJ8Bc9RBFMgCnaIq7JNJr2Cs.
ECDSA key fingerprint is MD5:ce:93:6e:55:45:d5:1e:62:a3:a5:eb:4b:bd:f5:67:12.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@172.25.254.10's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@172.25.254.10'"
and check to make sure that only the key(s) you wanted were added.

[root@mysql-mha ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.20
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '172.25.254.20 (172.25.254.20)' can't be established.
ECDSA key fingerprint is SHA256:I/mAOn2BwkS3J9C80hAyJ8Bc9RBFMgCnaIq7JNJr2Cs.
ECDSA key fingerprint is MD5:ce:93:6e:55:45:d5:1e:62:a3:a5:eb:4b:bd:f5:67:12.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@172.25.254.20's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@172.25.254.20'"
and check to make sure that only the key(s) you wanted were added.

[root@mysql-mha ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.30
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '172.25.254.30 (172.25.254.30)' can't be established.
ECDSA key fingerprint is SHA256:I/mAOn2BwkS3J9C80hAyJ8Bc9RBFMgCnaIq7JNJr2Cs.
ECDSA key fingerprint is MD5:ce:93:6e:55:45:d5:1e:62:a3:a5:eb:4b:bd:f5:67:12.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@172.25.254.30's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@172.25.254.30'"
and check to make sure that only the key(s) you wanted were added.

#地址解析
[root@mysql-mha ~]# vim /etc/hosts

测试是否能顺利登录

masterha_check_ssh --conf=/etc/masterha/app1.cnf        #检测网络及ssh免密

masterha_check_repl --conf=/etc/masterha/app1.cnf        #检测数据主从复制情况

MHA的故障切换
#手动切换
#在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 #切换的超时时间
#模拟master故障

[root@mysql2 mysql]# /etc/init.d/mysqld stop
#在MHA-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 \
--ignore_last_failover 表示忽略在/etc/masterha/目录中在切换过程中生成的锁文件
#master恢复
/etc/init.d/mysqld start
Starting MySQL. SUCCESS!
[root@mysql2 ~]# mysql -p
mysql> CHANGE MASTER TO MASTER_HOST='172.25.254.10', MASTER_USER='repl', 
MASTER_PASSWORD='lee', MASTER_AUTO_POSITION=1;
mysql> show slave\G
#测试一主两从是否正常
[root@mysql-mha masterha]# masterha_check_repl --conf=/etc/masterha/app1.cnf

#自动切换
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@mysql2 mysql]# /etc/init.d/mysqld start
mysql> CHANGE MASTER TO MASTER_HOST='172.25.254.10', MASTER_USER='repl', 
MASTER_PASSWORD='123', MASTER_AUTO_POSITION=1
[root@mysql-mha masterha]# rm -rf app1.failover.complete manager.log
MHA添加vip

[root@mysql-mha ~]# ls
master_ip_failover master_ip_online_change MHA-7 MHA-7.zip
[root@mysql-mha ~]# cp master_ip_failover master_ip_online_change /usr/local/bin/
[root@mysql-mha ~]# chmod +x /usr/local/bin/master_ip_*
#修改脚本中vip
[root@mysql-mha ~]# vim /usr/local/bin/master_ip_failover
my $vip = '172.25.254.100/24';
my $ssh_start_vip = "/sbin/ip addr add $vip dev eth0";
my $ssh_stop_vip = "/sbin/ip addr del $vip dev eth0";
[root@mysql-mha ~]# vim /usr/local/bin/master_ip_online_change
my $vip = '172.25.254.100/24';
my $ssh_start_vip = "/sbin/ip addr add $vip dev eth0";
my $ssh_stop_vip = "/sbin/ip addr del $vip dev eth0";
my $exit_code = 0;
[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-node10 ~]# /etc/init.d/mysqld stop #关闭主节点服务
[root@mysql-mha masterha]# cat manager.log
#恢复故障主机
[root@mysql2 mysql]# /etc/init.d/mysqld start
mysql> CHANGE MASTER TO MASTER_HOST='172.25.254.10', MASTER_USER='repl', 
MASTER_PASSWORD='123', MASTER_AUTO_POSITION=1
[root@mysql-mha masterha]# rm -rf app1.failover.complete manager.log
#手动切换后查看vip变化
[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

二、redis

Redis特性:

        速度快: 10W QPS,基于内存,C语言实现;单线程;持久化;支持多种数据结构;支持多种编程语言;功能丰富: 支持Lua脚本,发布订阅,事务,pipeline等功能 简单: 代码短小精悍(单机核心代码只有23000行左右),单线程开发容易,不依赖外部库,使用简单;主从复制 支持高可用和分布式

单线程为何如此快?

        纯内存;非阻塞;避免线程切换和竞态消耗

 Redis应用场景

        Session 共享:常见于web集群中的Tomcat或者PHP中多web服务器session共享

        缓存:数据查询、电商网站商品信息、新闻内容

        计数器:访问排行榜、商品浏览数等和次数相关的数值统计场景

        微博/微信社交场合:共同好友,粉丝数,关注,点赞评论等

        消息队列:ELK的日志缓存、部分业务的订阅发布系统

        地理位置: 基于GEO(地理信息定位),实现摇一摇,附近的人,外卖等功能

tar zxf redis-7.4.0.tar.gz #解压安装包
dnf install gcc make initscripts -y #安装依赖
cd redis-7.4.0/
make && make install #安装
cd utils/
vim install_server.sh    #编辑启动模式
./install_server.sh
vim /etc/redis/6379.conf    编辑配置文件
/etc/init.d/redis_6379 start    #启动服务
/etc/init.d/redis_6379 restart
redis-cli    #进入数据库

instll_server.sh上的修改

配置文件上的修改

redis基本操作

主从复制

slave配置文件上的修改

哨兵

#在master节点中 
[root@redis-node1 ~]# cd redis-7.4.0/
[root@redis-node1 redis-7.4.0]# cp sentinel.conf /etc/redis/
[root@redis-node1 redis-7.4.0]# vim /etc/redis/sentinel.conf
protected-mode no #关闭保护模式
port 26379 #监听端口
daemonize no #前台运行
pidfile /var/run/redis-sentinel.pid #sentinel进程pid文件
loglevel notice #日志级别
sentinel monitor mymaster 172.25.254.10 6379 2 #创建sentinel监控监控master主机,2表示必须得到2票
sentinel down-after-milliseconds mymaster 10000 #master中断时长,10秒连不上视为master下线
sentinel parallel-syncs mymaster 1 #发生故障转移后,同时开始同步新
master数据的slave数量
sentinel failover-timeout mymaster 180000 #整个故障切换的超时时间为3分钟
#复制配置文件到其他节点
[root@redis-node1 redis-7.4.0]# scp /etc/redis/sentinel.conf root@172.25.254.20:/etc/redis/sentinel.conf 
[root@redis-node1 redis-7.4.0]# scp /etc/redis/sentinel.conf 
root@172.25.254.30:/etc/redis/sentinel.conf 
#每一个节点都需要备份配置文件
cd /etc/redis
cp sentinel.conf sentinel.conf_bak
2 启动服务

[root@redis-node1 redis-7.4.0]# redis-sentinel /etc/redis/sentinel.conf

redis cluster集群


#删除源码编译的redis
cd /root/redis-7.4.0/
make uninstall
/etc/init.d/redis_6379 start
/etc/init.d/redis_6379 stop
killall -9 redis-server
#安装redis并配置集群
yum install redis -y
vim /etc/redis/redis.conf
    bind * -::*
    masterauth "123456" #集群主从认证
    requirepass "123456" #redis登陆密码 redis-cli 命令连接redis后要用“auth 密码”进行认证
    cluster-enabled yes #开启cluster集群功能
    cluster-config-file nodes-6379.conf #指定集群配置文件
    cluster-node-timeout 15000 #节点加入集群的超时时间单位是ms
systemctl restart redis.service
netstat -antlupe | grep redis
[root@redis1 ~]# redis-cli
127.0.0.1:6379> auth 123456
redis-cli --cluster create -a 123456 172.25.254.10:6379 172.25.254.20:6379 172.25.254.30:6379 172.25.254.110:6379 172.25.254.120:6379 172.25.254.130:6379 --cluster-replicas 1
redis-cli -a 123456 --cluster check 172.25.254.10:6379
#参数说明
127.0.0.1:6379> redis-cli --cluster help
Cluster Manager Commands:
 create         host1:port1 ... hostN:portN #创建集群
                 --cluster-replicas <arg> #指定master的副本数
 check         <host:port> or <host> <port> #检测集群信息
 info           <host:port> or <host> <port> #查看集群信息
 fix           <host:port> or <host> <port> #修复集群
 reshard       <host:port> or <host> <port> #在线热迁移集群指定主机的slots数据  
 rebalance     <host:port> or <host> <port> #平衡各集群主机的slot数量       
 add-node       new_host:new_port existing_host:existing_port #添加主机
 del-node       host:port node_id #删除主机
 import         host:port #导入外部redis服务器的数据到当前集群

创建集群

集群检测

集群扩容

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

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

相关文章

JVM理论篇(一)

一、类加载子系统 1.1 类加载子系统作用 类加载子系统负责从文件系统或者网络中加载Class文件&#xff0c;Class文件在文件开头有特定的文件标识。(CAFEBABE)ClassLoader只负责class文件的加载&#xff0c;至于它是否可以运行&#xff0c;则由Execution Engine 执行引擎决定。…

Spire.PDF for .NET【文档操作】演示:创建标记的 PDF 文档

带标签的 PDF&#xff08;也称为 PDF/UA&#xff09;是一种包含底层标签树&#xff08;类似于 HTML&#xff09;的 PDF&#xff0c;用于定义文档的结构。这些标签可以帮助屏幕阅读器浏览整个文档而不会丢失任何信息。本文介绍如何使用Spire.PDF for .NET在 C# 和 VB.NET 中从头…

Python中csv文件的操作3

在《Python中csv文件的操作2》中提到&#xff0c;with as语句可以自动关闭文件&#xff0c;而该语句可以和csv模块中的函数配合使用&#xff0c;达到读取和写入csv文件的目的。 1 csv文件的读取 使用csv模块中的函数读取csv文件的代码如图1所示。 图1 使用csv模块中的函数读取…

AI终于杀死了Leetcode!网友:面试神器已到位

家人们&#xff0c;今早起来 x 上一个帖子引起了奶茶的注意&#xff1a; 什么&#xff1f;奶茶以为自己没睡醒&#xff0c;揉了揉眼睛一看&#xff0c;没看错的话&#xff0c;这不就是AI结束了比赛吗。。。。 原文链接&#xff1a; https://www.reddit.com/r/leetcode/comments…

【ES6新特性】ES6新特性中Promise对象的概念,Async函数的使用以及Module语法

目录 1.Promise 对象 1.1 概念 1.2 使用 2.Async函数 2.1 同步和异步的区别 3.Mdule语法 1.Promise 对象 1.1 概念 Promise 是异步编程的一种解决方案&#xff0c;简单说就是一个容器&#xff0c;里面保存着某个未来才会结束 的事件&#xff08;通常是一个异步操作&#…

初识QT:从创建到认识

QT怎么安装这里就不说了&#xff0c;直接从使用开始 文章目录 1.QT项目的创建及介绍2.Hello QT&#xff01;2.1 图形化形式创建2.2 代码形式创建 3.对象树3.1 内存泄漏与对象树3.2 通过C类理解释放过程 4.乱码问题4.1 如何查看编码方式4.2 如何处理乱码 提示&#xff1a;QT项目…

arm 指令移位操作(11)

逻辑左移&#xff1a; 可以使寄存器也可以是 立即数 LSL &#xff1a; 字母缩写 举例&#xff1a; MOV R0&#xff0c;R1 &#xff0c;LSL #2 向左移位后&#xff0c;右面填0补充 逻辑右移&#xff1a; 可以使寄存器也可以是 立即数 LSR &#xff1a; 字母缩写 举例&…

10天速通Tkinter库——Day7:主菜单及图鉴

本篇博客我将介绍Tkinter实践项目《植物杂交实验室》中的杂交实验室主菜单、基础植物图鉴、杂交植物图鉴、杂交植物更多信息四个页面的制作。 它们作为主窗口的子页面实例&#xff0c;除了继承主窗口的基础设置&#xff08;如图标、标题、尺寸等等&#xff09;、还可以使用主窗…

《黑神话:悟空》游戏中的福建元素

《黑神话&#xff1a;悟空》作为一款深受玩家喜爱的动作角色扮演游戏&#xff0c;不仅在游戏剧情和角色设计上独具匠心&#xff0c;还巧妙地融入了丰富的中国传统文化元素&#xff0c;其中福建元素尤为突出。以下是对游戏中福建元素的详细解析&#xff1a; 一、地域文化与背景…

《机器学习》—— 支持向量机(SVM)实现二分类问题

文章目录 一、什么是支持向量机&#xff08;SVM&#xff09;1、SVM两个基本概念2、SVM的原理 二、示例&#xff1a;支持向量机&#xff08;SVM&#xff09;实现二分类问题1、先选取两个特征&#xff0c;并进行可视化2、选取所有的特征传入模型&#xff0c;并对模型进行评估 一、…

回归预测|基于北方苍鹰优化核极限学习机的数据预测Matlab程序NGO-KELM 多特征输入单输出

回归预测|基于北方苍鹰优化核极限学习机的数据预测Matlab程序NGO-KELM 多特征输入单输出 文章目录 一、基本原理1. 基本原理核极限学习机&#xff08;KELM&#xff09; 2. NGO-KELM回归预测流程1. 数据预处理2. 核极限学习机&#xff08;KELM&#xff09;模型构建3. 北方苍鹰优…

【Tomcat+MySQL+Redis源码安装三件套】

TomcatMySQLRedis源码安装三件套 Tomcat部分概念Tomcat的作用Tomcat的原理Linux运维中的应用场景具体操作示例 基本使用流程实验Tomcat安装tomcat的反向代理及负载均衡源地址hash(不能负载)tomcat负载均衡实现&#xff08;使用cookie&#xff09; memcached 操作命令 理论补充结…

大数据系统测试——大数据系统解析(上)

各位好&#xff0c;我是 道普云 欢迎关注我的主页 希望这篇文章对想提高软件测试水平的你有所帮助。 在本文中我们一起来看一下大数据系统每一个层次需要解决的技术问题和对应的一些技术需求。以此来作为学习大数据系统测试的基础。 数据收集层主要是进行数据源的分布式、…

sqli-labs靶场通关攻略 31-35

主页有sqli-labs靶场通关攻略 1-30 第三一关 less-31 闭合方式为?id1&id1 ") -- 步骤一&#xff1a;查看数据库名 http://127.0.0.1/less-31/?id1&id-1%22)%20union%20select%201,database(),3%20-- 步骤二&#xff1a;查看表名 http://127.0.0.1/less-31/?…

Redis 实现哨兵模式

目录 1 哨兵模式介绍 1.1 什么是哨兵模式 1.2 sentinel中的三个定时任务 2 配置哨兵 2.1 实验环境 2.2 实现哨兵的三条参数&#xff1a; 2.3 修改配置文件 2.3.1 MASTER 2.3.2 SLAVE 2.4 将 sentinel 进行备份 2.5 开启哨兵模式 2.6 故障模拟 3 在整个架构中可能会出现的问题 …

【FastAPI】—— 01 创建FastAPI项目

1.FastAPI框架介绍 FastAPI是⼀个现代、快速&#xff08;⾼性能&#xff09;的Web框架&#xff0c;⽤于构建API。是建⽴在Starlette和Pydantic基础上的。它基于Python3.7的类型提示&#xff08;typehints&#xff09;和异步编程&#xff08;asyncio&#xff09;能⼒&#xff0c…

软件设计原则之开闭原则

开闭原则&#xff08;Open-Closed Principle, OCP&#xff09;是软件设计中的一个重要原则&#xff0c;由伯特兰梅耶&#xff08;Bertrand Meyer&#xff09;在1988年提出。该原则强调软件实体&#xff08;如类、模块、函数等&#xff09;应该对扩展开放&#xff0c;对修改关闭…

【机器学习】 7. 梯度下降法,随机梯度下降法SGD,Mini-batch SGD

梯度下降法,随机梯度下降法SGD,Mini-batch SGD 梯度下降法凸函数(convex)和非凸函数梯度更新方向选择步长的选择 随机梯度下降SGD(Stochastic Gradient Descent)梯度下降法&#xff1a;SGD: Mini-batch SGD 梯度下降法 从一个随机点开始决定下降方向&#xff08;重要&#xff…

关于kafka的分区和消费者之间的关系

消费者和消费者组 当生产者向 Topic 写入消息的速度超过了消费者&#xff08;consumer&#xff09;的处理速度&#xff0c;导致大量的消息在 Kafka 中淤积&#xff0c;此时需要对消费者进行横向伸缩&#xff0c;用多个消费者从同一个主题读取消息&#xff0c;对消息进行分流。 …

【JVM】OOM与调优(二)

OOM与调优 6.JVM工具如jps 该命令是纯Java编写的 -q:只显示Java进程的ID -m:输出Java进程的ID main函数所在类的名字 传递给main函数的参数 -l:输出Java进程的IDmain函数所在类的全限定名(包名类名) -v:输出Java进程的IDmain函数所在类的名称传递给JVM的参数 应用&am…