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 status\G

 

  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,可以測試寫入數據

 

 

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM