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