zoukankan      html  css  js  c++  java
  • 106 mysql 安装 主从复制 redis的安装, 支持多实例化, 持久化操作

    主要内容:

      mysql的博客地址: https://www.cnblogs.com/pyyu/p/9467289.html

      redis的博客地址: https://www.cnblogs.com/pyyu/p/9843950.html

    1 mysql 安装:

      a : mariadb其实就是mysql;  mysql已经被oracle收购,它即将闭源,马上要开始收费了,因此还想免费试用开源的数据库mysql,就在centos7上,将mysql分支为mariadb

      b : 安装mariadb的两种方式:

       通过yum安装:   linux下yum的软件管理目录在/etc/yum.repos.d

              在这个目录底下, 主要是*.repo这个文件, 就会被识别为yum源文件.

       第一种方式:通过阿里云的yum源去下载(第三方的yum源,可能会版本较低,且软件不全,可能找不到)

            安装语句: yum install mariadb-server   #yum安装mariadb    因为这个阿里云特别快,咱们用他去学习,加速下载  300kb/s, 工作上用下一个

       第二种方式: 通过mariadb官方的yum源去下载(一定是这个软件最正确的yum源,且包都是最新的).

            1)  #编辑创建mariadb.repo仓库文件: vi /etc/yum.repos.d/MariaDB.repo

            2) 添加repo仓库配置: 

    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.1/centos7-amd64
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1
    

            3)  安装语句:yum install MariaDB-server MariaDB-client #区分大小写 ,这个方式是取国外下载mariadb速度太慢 30kb/s依赖关系解决

            4) 重新启动mariadb:  systemct1 start mariadb

    mysql的使用:

      1 初始化mariadb:  mysql_secure_installation    #直接输入这个命令,设置root密码,删除匿名用户等等操作.

      2 配置mariadb远程登录, 可以通过windows, pycharm等客户端进行连接,在远程登录的时候, 必须输入'redhat'密码.

        grant all privileges on *.* to root@'%' identified by 'redhat';

        解释: 授予所有的权限在所有的库所有的表, 用户名@"所有的地址".

      3 刷新授权表, 使得权限立即生效: flush  privileges;

      4 更改mysql的密码:   set password = PASSWORD('redhat123');

      5 创建普通用户:  create user s14@'%' identified by 's14666';

      6 查询用户信息: select host, user, password from user

      7 授权语句:     

        grant 权限 on 数据库.表名 to 账户@主机名 对特定数据库中的特定表授权
        grant 权限 on 数据库.* to 账户@主机名   对特定数据库中的所有表给与授权
        grant 权限1,权限2,权限3 on *.* to 账户@主机名    对所有库中的所有表给与多个授权
        grant all privileges on *.* to 账户@主机名    对所有库和所有表授权所有权限
        grant create,select,insert on *.* to root@'%' identified by "密码"

      8 数据库中的中文设置: 防止乱码

        1 ) 查看数据库编码: s

        2 ) 修改mysql中的配置文件:   vim  /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
    

        3) 修改了配置文件, 重启服务:systemctl restart mariadb 

        4 ) 查看数据库创建的编码, 只有在跟新了数据库编码之后, 创建的数据库, 才会使用这个编码   show create database s16

    3  数据库的备份

        1) 通过命令导出全部数据:  mysqldump -u root -p --all-databases > /data/db.dump

        2) 进入到mariadb数据库, 删除一个db

          执行命令:

    [root@master ~]# mysql -uroot -p
    MariaDB [(none)]> drop database s11;
    

        3) 进行数据恢复, 把刚才重定向的备份的数据库文件导入到mysql中

    [root@master ~]# mysql -uroot -p < /data/db.dump
    

    4 mysql的主从复制:

       1) 主从复制的原理

        a : 主库master, 用户可以在这里读写数据

        b : 将变动的数据写入到二进制文件bin_log中, 记录数据库中的变化

        c : 从服务器指名要和谁同步, 然后slave机器开启一个线程, 取读取主库中的二进制文件

        d : 从服务器中将那些sql变动写入到自己的中继日志中, 然后将这些sql语句在自己的slave本机在执行一次.

       2 ) 应用场景:

        利用复制功能吧maser服务器出现问题时, 我们可以人工的切换到服务器继续提供服务, 此时服务器的数据和宕机时的数据几乎完全一致. 复制功能也可用作数据备份, 但是如果人为的执行drop, delete等语句, 那么从库的备份功能也就失效了.

      3 )  主库和从库的配置:

         a : 主库的配置:

            1) 开启binlog功能, 修改/etc/my.cnf

    [mysqld]
    server-id=1   #指明主库的身份id为1
    log-bin=mysqls14-bin   #指明binlog的日志名
    

            2) 修改配置文件, 重启mariadb, 使得binlog生效:   systemct1  restart mariadb

            3) 登录mysql, 检查主库的状态:  show  master  status;

            4) 创建一个用户, 用于进行主从同步:create user 'kangchen'@'%' identified by 'kangchen666';

            5) 授予账号权限, 授予一个从库的身份权限:grant replication slave on *.* to 'kangchen'@'%';

            6) 锁定mysql表, 防止数据写入:  flush table with read lock;

            7) 主从同步, 将从库与主库的数据, 保持一致后, 他两在同一起跑线上, 然后解除锁表, 然后解除数据, 保证数据的一致性.

              a : 导出当前数据, 用于slave机器导入数据, 保证在一个起始点.:mysqldump -u root -p --all-databases > /data/db.dump

              b : 将此文件远程传输给slave机器, 用于导入: scp /data/db.dump  root@192.168.12.87:/tmp/

              c : 登录从库, 导入主库的数据信息:source /tmp/db.dump

            8) .查看主库的状态信息,binlog信息  : show master status;

            9) .解锁表,开始主从同步 : unlock tables;

        b: 从库的设置:

            1) .在/etc/my.cnf当中打开server-id   :  vim /etc/my.cnf

            2) .重启myariadb

            3) .查看slave机器的身份信息
              show variables like 'server_id';
              show variables like 'log_bin';

            4) .通过命令,开启主从同步技术

    change master to master_host='192.168.12.96',
    master_user='kangchen',
    master_password='kangchen666',
    master_log_file='mysqls14-bin.000001',
    master_log_pos=671;
    

             5) .开启slave  : start slave;

             6) .检查slave状态,检查两条参数,如果都是yes,即主从ok
            Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

             7) .此时可以在主库中写入数据,查看从库中是否生成了记录

    5 redis的安装

      1) 在线下载redis源码包: wget http://download.redis.io/releases/redis-4.0.10.tar.gz

      2) 解压缩源码包, 如果源码包带有.gz结尾, 需要通过gzip指令扩展, 也就是-z的参数:tar -zxvf redis-4.0.10.tar.gz  #解压缩这个文件,且显示解压缩过程

      3) 切换目录到源码包:

      4) 由于redis没有configure脚本, 直接就有了makefile, 因此可以直接编译且安装:  make  编译   make install  安装

        两条命令可以缩写成一条: make && make install

      5) 编译安装完成后, redia默认将redis的命令添加到环境变量中/usr/local/bin下面

    6 redis的使用:

      1) 改名字: mv redis.conf  redis.conf.bak

      2) 对bak文件进行操作: 去掉所有的#开头的和空行, 将筛选的值写入到redis.conf中, conf写入一下内容.

    port 6379
    	daemonize no  #后台运行redis
    	pidfile /data/6379/redis.pid #将redis进程的id写入到redis.pid这个文件
    	loglevel notice  #日志级别
    	logfile "/data/6379/redis.log"
    	dir /data/6379  #配置redis数据存放点
    	protected-mode yes  #redis3.0之后的安全模式
    	requirepass qiangdademima  #给redis添加密码
    	

      3) 此时执行redis-server redis.conf, 此时开启redis服务, 开启一个客户端来连接它.

      4) redis的安全模式, 可能会阻挡你远程连接, 为了解决这个安全模式, 给redis设置一个密码:

        使用密码登录的连接的方法:

    [root@smile ~]#redis-cli -p 6379
    127.0.0.1:6379> auth passwd1
    

        检查redis是否设置了密码:  CONFIG get requirepass

        如果没有, 还可以给redis设置密码: CONFIG set requirepass "xxxxxx"

    7 redis的多实例功能, 可以在一个机器上, 启动多个redis服务端

      1)准备一个新的配置文件, redis默认支持多实例, 再准备一个新的配置文件redis-6380.conf,内容如下:

    port 6380
    		bind 0.0.0.0
    		daemonize yes
    		pidfile /data/6380/redis.pid 
    		loglevel notice 
    		logfile "/data/6380/redis.log"
    		dir /data/6380
    		protected-mode yes
    		requirepass zeiqiangdademima
    

      2) 可以启动第二个实例(第二个数据库):  redis-server redis-6380.conf 

    8 redis的发布订阅:

      1 一个发布者, 多个订阅者

      2 支持正则的匹配订阅者

        1) 执行步骤, 开启三个redis-cli:  两个为订阅者, 一个为发布者

        2) 执行流程如下:

    -a	参数意思是指定redis的密码登录
    一般不用这种方法登录, 不安全, 使用下面的方法进行登录
    redis-cli -p 端口号
    auth 密码
    redis-cli -a qiangdademima   #启动1个redis客户端 (订阅者1)
    	SUBSCRIBE  频道名字   
    	PSUBSCRIBE  频道名*  
    
    redis-cli -a qiangdademima   #启动2个redis客户端(订阅者2)
    	SUBSCRIBE  频道名字 
    	PSUBSCRIBE  频道名*
    	
    redis-cli -a qiangdademima   #启动3个redis客户端(发布者)
    	PUBLISH   频道名字  想发送的消息   
    	PUBLISH   频道名字*   发送的消息
    

    9 redis的持久化值RDB和AOF

      持久化

        定义:  redis是一种内存型数据库, 一旦服务器进程退出, 数据库中的数据就会丢失, 为了解决这个问题, redis提供了两种持续化的方案, 将内存的数据保存到磁盘中, 避免数据的丢失.

      RDB模式配置:

        定义: redis提供了RDB持久化的功能,这个功能可以将redis在内存中的的状态保存到硬盘中,它可以手动执行。也可以再redis.conf中配置,定期执行

        RDB持久化产生的RDB文件是一个经过压缩的二进制文件,这个文件被保存在硬盘中,redis可以通过这个文件还原数据库当时的状态。

        1) 在配置文件中写入参数, 支持rdb模式,  vim redis.conf 

    port 6379
    bind 0.0.0.0
    daemonize yes
    pidfile /data/6379/redis.pid 
    loglevel notice 
    logfile "/data/6379/redis.log"
    dir /data/6379 
    protected-mode yes
    requirepass qiangdademima
    加入下面四句 dbfilename dbmp.rdb save 900 1 save 300 10 save 60 10000

        2) 启动redis服务, 此时可以设置redis的key, 通过save命令触发rdb持久化

        3) 此时/data/6379/会出现dbmp.rdb文件

        4) 此时关闭redis服务, 客户端的数据会保存, 不会丢失

      AOF 模式设置:

        定义: 记录服务器执行的所有变更操作命令(例如set del等),并在服务器启动时,通过重新执行这些命令来还原数据集.

        AOF 文件中的命令全部以redis协议的格式保存,新命令追加到文件末尾。

        优缺点: 最大程度保证数据不丢失, 日志记录非常大.

        1) 编辑vim redis.conf 写入以下:

    daemonize yes
    port 6379
    logfile /data/6379/redis.log
    dir /data/6379
    dbfilename  dbmp.rdb
    requirepass redhat
    save 900 1
    save 300 10
    save 60  10000
    加入下面两句代码: appendonly yes appendfsync everysec

        2) 启动reids-sever服务端, 默认就会生成appendonly.aof持久化文件, 此时进入到redis-cli的操作都会记录到持久化文件中, 如果关闭redis服务, 在重新开启会重新执行持久化文件, 将数据保存.

      redis持久化的方式, 不同之处

        1) 持久化的方式:  RDB 和AOF

        2) 不同点: rbd: 基于快照的持久化, 速度更快, 一般用作备份, 主从复制也是依赖于rdb持久化功能; aof: 已追加的方式记录redis操作日志的文件. 可以最大程度的保证redis数据安全, 类似于mysqld的binlog.

         

          

      

  • 相关阅读:
    springboot整合springmvc应用
    spring注解使用
    亨元模式 四大引用 逃逸引用 池化思想
    springboot整合连接池
    springboot整合mybatis(待更新)
    php安装imagick扩展
    js复制功能代码
    PHP7兼容mysql_connect的方法
    linux开机启动
    centos8安装php扩展memcached报错
  • 原文地址:https://www.cnblogs.com/gyh412724/p/10071232.html
Copyright © 2011-2022 走看看