• centos安装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.安装号了mariadb,启动服务端 

        systemctl start mariadb

      3.mariadb初始化

        mysql_secure_installation

      4.修改数据库的编码

      中文编码设置,编辑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

      5.远程连接数据库时,要先关闭防火墙

        iptables  -F

        创建普通用户

          create user zhaoshixun@'%' identified by 'zsx666';

        对用户授权,给予root用户远程登录的权限

        #给予root权限,所有的权限,并且可以远程登录

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

        立即刷新授权表

          flush privileges;

    备份mysql的数据
    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

    遇到的问题:ModuleNotFoundError: No module named 'pymysql'

      先查看是否装了pymysql

      pip3 install pymysql

    我自己都无语了:要么没装django, 要么没装pymysql,要么不关防火墙

    mysql主从复制:

      环境准备,准备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/


      从库导入数据

        source /opt/db.dump;

      以上两个库处在同一起始点

      从库操作如下:
      1.编辑从库的 mysql配置文件,写入 一个 身份id号,区别于主库
        vim /etc/my.cnf
      写入主机身份id
        server-id=10


      2.通过一条命令,确保主从成功

        change master to master_host='192.168.253.132',
        master_user='xiaoxue',
        master_password='123456',
        master_log_file='s17-mysql-bin.000005',
        master_log_pos=245;

      3.开启slave同步

        start slave ;


      4.检查主从同步是否正常
        show slave statusG

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

    遇到的问题:  1.防火墙没关  systemctl stop firewalld.service

          2.master_log_file='s17-mysql-bin.000005',  有空格

    查看进程:     ps   -ef|grep   redis

    redis  高速缓存利用内存保存数据,读写速度远超硬盘

      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正常


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

    学习redis 常用命令

      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的数量

      lpush duilie 'alex'  'puxue'   # 新建一个队列,从左边放入两个元素

      lrange duilie 0 -1   # 查看duilie所有元素

    redis的哈希结构 ,如同python字典套字典

    redis持久化  rdb 模式 与aof模式

      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

    查看redis的版本:  redis-server   -v

    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,检查数据

    #在不重启的情况下,切换rdb数据到aof模式下

      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

     redis主从同步机制

      1.环境准备,准备3个redis数据库实例, (准备3个redis配置文件即可)

        可能用到的命令:

          sed 's/6380/6381/g' redis-6380.conf > redis-6381.conf

              替换成6381  g 全局范围内     写到 redis-6381.conf 文件中

      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  中一样   把6379替换成6380

      redis-6381.conf 同理   把6379替换成6381

      2.分别启动三个 数据库


      3.此时已经是一主两从的身份了


      4.可以演示在主库写入数据,从库读取数据的实验

      SLAVEOF 127.0.0.1 6379 # 临时生效   要想永久生效, 写在配置文件中 永久生效(从)

      info replication   # 查看权限信息

      ps -ef|grep redis  # 查看进程

    遇到的问题:  没有关闭防火墙    (重点)  防火墙关闭后 , 重新启动redis

          没有创建 6379 6380 6381 这三个文件夹

    手动切换主从同步的故障(当主库挂掉的时候,怎么办 )

      1.模拟主库挂掉,kill杀死主库的进程

      2.此时俩从库,群龙无手

      3.手动的切换两个从库的身份,让其中一个 为新的master

        选举6381为新的master,只需要在6381下输入 slaveof no one

        然后配置6380为新的slave ,只需要 在6380下输入 slaveof 127.0.0.1 6381

      4.此时新的一主一从 就好了
        主 6381
        从6380

      5,可以测试写入数据

      

  • 相关阅读:
    算法-经典趣题-寻找假银币
    一天一个 Linux 命令(3):cat 命令
    算法-经典趣题-青蛙过河
    常用数据库有哪些?
    SpringBoot2.0入门教程(一) 快速入门,项目构建HelloWorld示例
    一天一个 Linux 命令(2):ls 命令
    算法-经典趣题-爱因斯坦阶梯问题
    一天一个 Linux 命令(1):vim 命令
    什么是开发环境、测试环境、UAT环境、仿真环境、生产环境?
    算法-经典趣题-渔夫捕鱼
  • 原文地址:https://www.cnblogs.com/sypx/p/10498401.html
Copyright © 2020-2023  润新知