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,可以测试写入数据

  

原文地址:https://www.cnblogs.com/sypx/p/10498401.html