05mariadb,Redis

 

 

1、yum  得配置yum源,配置阿里云的 两个 yum源  ,阿里云的yum源中,会有 mariadb的软件包
阿里云的yum仓库中,mariadb版本如下
 mariadb                                x86_64                1:5.5.60-1.el7_5                   os                8.9 M
 mariadb-server                         x86_64                1:5.5.60-1.el7_5                   os                 11 M

在企业中,这等版本太低,安全性太低,因此会选择mariadb官方 提供的yum源,下载官方mariadb包
配置mariadb官方的yum源
    1.进入yum仓库  /etc/yum.repos.d/目录下
手动创建一个 mariadb.repo
写入如下内容
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
    2.此时通过yum安装的软件,都是mariadb官方的了

2、rpm方式
3、源码编译方式 
4.安装号了mariadb,启动服务端 
5.mariadb初始化
    执行如下命令
    mysql_secure_installation
6.修改数据库的编码 
    1.中文编码设置,编辑mysql配置文件/etc/my.cnf,下入以下内容
复制代码
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
log-error=/var/log/mysqld.log
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
7.远程连接数据库
    #创建普通用户
    create user zhaoshixun@'%' identified by 'zsx666';
    #对用户授权,给予root用户远程登录的权限
    #给予root权限,所有的权限,并且可以远程登录
    grant all privileges on *.* to root@"%" identified by  "redhat";
    #立即刷新授权表
    flush privileges;

1.命令
mysqldump -u root -p --all-databases > /tmp/db.dump
指定ace_crm数据库导出
mysqldump -uroot -p --database ace_crm > /tmp/ace_crm.dump
#参数 --all-databases  导出所有的数据库 

2.导入数据库信息
mysql -uroot -p   <    /tmp/db.dump   
#导入数据方式2
进入数据库后,执行 
MariaDB []>   source  /tmp/db.dump 

 

 

1.环境准备,准备2台机器 ,一个主 一个从

#1.主库配置如下
第一步:编辑mysql的配置文件
vim /etc/my.cnf 
写入如下内容
[mysqld]
server-id=1
log-bin=s17-mysql-bin

2.创建一个用于同步的用户
create user 'shixun'@'%' identified by 'shixundsb';

3.给予这个账号,一个从的身份
grant replication slave on *.* to 'shixun'@'%';

4.导出当前数据库的数据,发送给从库,进行导入
mysqldump -u root -p --all-databases > /tmp/db.dump

5.发送主库的mysql数据,给从库
scp  /tmp/db.dump   root@从库ip:/opt/
    
#从库操作如下:
1.编辑从库的 mysql配置文件,写入  一个 身份id号,区别于主库
vim  /etc/my.cnf  
写入主机身份id
server-id=10

2.通过一条命令,确保主从成功
change master to master_host='192.168.11.229',
master_user='shixun',
master_password='shixundsb',
master_log_file='s17-mysql-bin.000001',
master_log_pos=1510;

3.开启slave同步
start slave ;

4.检查主从同步是否正常
show slave status\G

5.可以测试往主库写入数据,查看从库数据

1.卸载通过yum安装的redis数据库

yum remove redis -y 

2.通过源码编译安装
    1.下载redis的源代码
        wget http://download.redis.io/releases/redis-4.0.10.tar.gz
    2.解压缩源码
        tar -zxf  redis-4.0.10.tar.gz
    3.进入redis源码目录,编译安装,生成可执行命令
       redis不需要执行configure,因为他已经有了makefile
    4.通过如下2个命令,生成redis的可执行文件  
    make &&  make install
    
    5.此时已经可以启动redis服务端了
    
3.安全性能下的启动redis ,在redis.conf中,更改默认端口,添加密码,开启安全模式

#手动创建redis的配置文件
touch  s17redis.conf 
#s17redis.conf 内容如下
[root@master redis-4.0.10]# cat s17redis.conf 
bind 0.0.0.0
protected-mode yes
port 6888
daemonize yes
requirepass  alexdsb

4.启动redis服务端,指定配置文件
redis-server s17redis.conf 

5.测试访问redis服务端
redis-cli  -p 6888  
进入之后,可以通过auth指令,进行redis密码验证
验证通过后,可以发送ping,得到pong代表redis正常

6.过滤出 空白行,以及注释行意外的,有用信息
grep -v  "^#" redis.conf |  grep -v  "^$"

set  key   value  #设置一个键值对
get   key  #获取key的值
keys *         查看所有key
type key      查看key类型
expire key seconds    过期时间
ttl key     查看key过期剩余时间        -2表示key已经不存在了
persist     取消key的过期时间   -1表示key存在,没有过期时间

exists key     判断key存在    存在返回1    否则0
del keys     删除key    可以删除多个
dbsize         计算key的数量

redis的哈希结构 ,如同python字典套字典
hmset  new:2  title  "tian qi yu bao"  content "tian qi bu cuo"  redian "jiaodain fangtan "  [f

1. rdb模式持久化
第一步,准备一个redis配置文件,  rdbredis.conf  
写入如下内容
daemonize yes           #后台运行redis 
port 6379           #redis端口 
logfile /data/6379/redis.log        #redis日志文件位置
dir /data/6379/            #指定redis数据文件夹放在哪 
dbfilename  s17dump.rdb           #指定rdb的数据文件    
bind 0.0.0.0
requirepass redhat              #指定redis的密码    
save 900 1                  #代表  900秒内 有1个修改key的操作,就进行持久化       
save 300 10                     # 300秒内 有10个修改类的操作,就持久化
save 60  10000      #  60秒内 有10000个修改类的操作,就持久化

2.通过配置文件启动 redis服务端,支持rdb持久化的 服务端
#并且可以通过 save指令 手动触发持久化数据 
redis-server  rdbredis.conf 
2. aof持久化模式 ,不需要你手动的save触发持久化
配置方式如下
1.修改redis的配置文件,如下  ,再次创建一个 新的aof配置文件

touch  aofredis.conf 
#编辑配置文件,写入如下内容
vim  aofredis.conf 
#写入如下内容  
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
appendonly yes    #开启aof持久化的参数,就是这个
appendfsync everysec        #每秒进行一次aof持久化

3.支持aof方式的持久化
redis-server  aofredis.conf 

4.验证 aof持久化,
写入数据后,杀死进程,
再次启动redis,检查数据

1.环境准备  准备一个rdb的redis数据库,并且是2.0版本以上的

2.登陆此时的rdb数据库,通过两条命令,临时修改 切换到aof模式下,也是把rdb数据转化为aof的模式

127.0.0.1:6379> CONFIG set appendonly yes   #开启AOF功能
OK
127.0.0.1:6379> CONFIG SET save ""  #关闭RDB功能
OK

3.此时还是临时生效,必须修改配置文件,永久生效
配置文件,修改为如下
[root@master redis-4.0.10]# cat rdbredis.conf 
daemonize yes       
port 6379           
logfile /data/6379/redis.log
dir /data/6379/         
bind 0.0.0.0
appendonly yes    
appendfsync everysec   

1.环境准备,准备3个redis数据库实例 

准备3个redis配置文件即可

redis-6379.conf 
port 6379
daemonize yes
pidfile /data/6379/redis.pid
loglevel notice
logfile "/data/6379/redis.log"
dbfilename dump.rdb
dir /data/6379


redis-6380.conf 
port 6380
daemonize yes
pidfile /data/6380/redis.pid
loglevel notice
logfile "/data/6380/redis.log"
dbfilename dump.rdb
dir /data/6380
SLAVEOF 127.0.0.1  6379
    
    
redis-6381.conf 
port 6381
daemonize yes
pidfile /data/6381/redis.pid
loglevel notice
logfile "/data/6381/redis.log"
dbfilename dump.rdb
dir /data/6381
SLAVEOF 127.0.0.1  6379

2.分别启动三个 数据库 
3.此时已经是一主两从的身份了 
4.可以演示在主库写入数据,从库读取数据的实验



手动切换主从同步的故障(当主库挂掉的时候,怎么办 )
1.模拟主库挂掉,kill杀死主库的进程
2.此时俩从库,群龙捂手
3.手动的切换两个从库的身份,让其中一个 为新的master
选举6381为新的master,只需要在6381下输入 slaveof on one 
然后配置6380为新的slave  ,只需要 在6380下输入 slaveof  127.0.0.1  6381  
4.此时新的一主一从 就好了
主 63816380  
5,可以测试写入数据 

redis主从
一主两从的方案
1.环境准备,准备一主两从的redis架构
redis-6379.conf 

port 6379
daemonize yes
logfile "6379.log"
dbfilename "dump-6379.rdb"
dir "/opt/redis/6379/"


redis-6380.conf 

port 6380
daemonize yes
logfile "6380.log"
dbfilename "dump-6380.rdb"
dir "/opt/redis/6380/"
slaveof  127.0.0.1  6379


redis-6381.conf 

port 6381
daemonize yes
logfile "6381.log"
dbfilename "dump-6381.rdb"
dir "/opt/redis/6381/"
slaveof  127.0.0.1  6379

2.准备三个数据文件夹
mkdir -p  /opt/redis/{6379,6380,6381}

3。分别启动三个数据库
[root@master sbredis]# redis-server redis-6379.conf 
[root@master sbredis]# redis-server redis-6380.conf 
[root@master sbredis]# redis-server redis-6381.conf 


4.检测主从状态
redis-cli -p 6379   info replication
redis-cli -p 6380   info replication
redis-cli -p 6381   info replication

5.准备三个redis哨兵,进行检测主从状态
准备三个哨兵的配置文件
redis-26379.conf 

port 26379
dir /opt/redis/26379/
logfile "26379.log"
daemonize yes 
sentinel monitor s17ms 127.0.0.1 6379  2
sentinel down-after-milliseconds s17ms   30000
sentinel parallel-syncs s17ms 1
sentinel failover-timeout s17ms 180000

redis-26380.conf 
redis-26381.conf 

#三个配置文件,仅仅是端口的不同,通过命令快速生成配置文件
[root@master sbredis]# sed "s/26379/26380/g"  redis-26379.conf   >  redis-26380.conf  
[root@master sbredis]# sed "s/26379/26381/g"  redis-26379.conf   >  redis-26381.conf  

6.分别启动三个哨兵
[root@master sbredis]# redis-sentinel redis-26379.conf 
[root@master sbredis]# redis-sentinel redis-26380.conf 
[root@master sbredis]# redis-sentinel redis-26381.conf 

7.检测哨兵,主从状态
redis-cli -p 26379  info sentinel
#看到如下信息,就和我一样了
[root@master sbredis]# redis-cli -p 26379  info  sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=s17ms,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3

8.测验,干掉master redis,是否自动切换 
9.再次启动redis  6379 查看它是否加入 主从集群

1.准备6个数据库节点,也就是6个redis实例,也就是6个配置文件
配置文件如下
redis-7000.conf  redis-7002.conf  redis-7004.conf
redis-7001.conf  redis-7003.conf  redis-7005.conf

配置文件,内容如下
port 7000
daemonize yes
dir "/opt/data"
logfile "7000.log"
dbfilename "dump-7000.rdb"
cluster-enabled yes   
cluster-config-file nodes-7000.conf
cluster-require-full-coverage no

分别准备6个redis节点,通过sed命令快速创建,仅仅是端口的区分

[root@master clusterredis]# sed "s/7000/7001/g" redis-7000.conf > redis-7001.conf 
[root@master clusterredis]# 
[root@master clusterredis]# sed "s/7000/7002/g" redis-7000.conf > redis-7002.conf 
[root@master clusterredis]# sed "s/7000/7003/g" redis-7000.conf > redis-7003.conf 
[root@master clusterredis]# 
[root@master clusterredis]# 
[root@master clusterredis]# 
[root@master clusterredis]# sed "s/7000/7004/g" redis-7000.conf > redis-7004.conf 
[root@master clusterredis]# sed "s/7000/7005/g" redis-7000.conf > redis-7005.conf 


2.分别启动6个数据库实例

root@master clusterredis]# redis-server redis-7000.conf 
[root@master clusterredis]# redis-server redis-7001.conf 
[root@master clusterredis]# redis-server redis-7002.conf 
[root@master clusterredis]# redis-server redis-7003.conf 
[root@master clusterredis]# redis-server redis-7004.conf 
[root@master clusterredis]# redis-server redis-7005.conf 


3.开始分配redis数据库的槽位, 通过ruby脚本,自动化分配槽位

4.配置ruby的解释器环境
    1.下载源码
    wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz

    2.释放编译文件
        #安装ruby
        tar -xvf ruby-2.3.1.tar.gz
        ./configure --prefix=/opt/ruby/
        make && make install
    
    3.配置ruby的环境变量
    
    4.下载ruby操作redis的模块
    
        wget http://rubygems.org/downloads/redis-3.3.0.gem
    
    5.通过ruby的包管理工具安装它
    
        gem install -l redis-3.3.0.gem
    
    6.通过ruby的脚本,自动化分配redis虚拟槽位,开启集群功能
    /opt/redis-4.0.10/src/redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
 
    7.验证集群是否开启
            redis-cli -p 7000 cluster info
     
    8.登陆redis集群,写入数据,查看数据流向
    
       数据会在集群中,在节点间重定向
   
    9.redis集群到此完毕

 

posted @ 2020-02-26 18:06  小萍瓶盖儿  阅读(171)  评论(0)    收藏  举报