本文的目的是介绍mysql如何设置主从的详细情况,特别关注读写分离,redis发布功能,以及redis的持久化存储的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解my
本文的目的是介绍mysql 如何设置主从的详细情况,特别关注读写分离,redis 发布功能,以及 redis 的持久化存储的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解mysql 如何设置主从的机会,同时也不会遗漏关于003. 图解分析 redis 的 RDB 和 AOF 两种持久化机制的工作原理、15.4,redis 不重启,切换 RDB 备份到 AOF 备份、Linux 安装 Redis Redis 持久化 (RDB AOF) 发布订阅、mysql如何设置主从(读写分离),redis发布功能,以及redis的持久化存储(rdb,aof)的知识。
本文目录一览:- mysql 如何设置主从(读写分离),redis 发布功能,以及 redis 的持久化存储(rdb,aof)
- 003. 图解分析 redis 的 RDB 和 AOF 两种持久化机制的工作原理
- 15.4,redis 不重启,切换 RDB 备份到 AOF 备份
- Linux 安装 Redis Redis 持久化 (RDB AOF) 发布订阅
- mysql如何设置主从(读写分离),redis发布功能,以及redis的持久化存储(rdb,aof)
mysql 如何设置主从(读写分离),redis 发布功能,以及 redis 的持久化存储(rdb,aof)
1 mysql 基本命令
1.启动mysql
systemctl start mariadb
2.linux客户端连接自己
mysql -uroot -p -h 127.0.0.1
3.远程链接mysql服务端
mysql -uroot -p -h 192.168.1.197
远程授权:
grant all privileges on *.* to root@"192.168.1.100" identified by "redhat";
flush privileges
4.修改mysql密码
MariaDB [(none)]> set password = PASSWORD(''redhat123'');
5.创建mysql用户
create user xiaochun@''%'' identified by ''xc666'';
6.查询mysql库中的用户信息
use mysql;
select host,user,password from user;
7.授权语句
给李俊这个用户,授予创建数据库的权限
mysql使用grant命令对账户进行授权,grant命令常见格式如下
grant 权限 on 数据库.表名 to 账户@主机名 对特定数据库中的特定表授权
grant 权限 on 数据库.* to 账户@主机名 对特定数据库中的所有表给与授权
grant 权限1,权限2,权限3 on *.* to 账户@主机名 对所有库中的所有表给与多个授权
grant all privileges on *.* to 账户@主机名 对所有库和所有表授权所有权限
#授予小春创建的权限,对于所有的库表生效
grant create on *.* to xiaochun@"%" identified by ''xc666'';
#授予小春用户,只有创建mymysql数据库的权限
grant create on mymysql.* to xiaochun@"%" identified by ''xc666'';
#授予用户最大的权限,所有的权限
grant all privileges on *.* to username@''%'' identified by ''password'';
8.移除权限
MariaDB [(none)]> revoke all privileges on *.* from xiaochun@"%" identified by ''xc666'';
9.数据库的备份与恢复
#备份
mysqldump -u root -p --all-databases > /tmp/db.sql
#数据导入,方式有2种
source /tmp/db.sql;
第二种
mysql -uroot -p < /tmp/db.sql
第三种
navicat
第四种,如果你数据量特别大的话,使用第三方工具
xtrabackup
2 mariadb 主从复制
主从复制7步曲:
1. 主数据库写入数据之后, 会有data changes(数据变化)记录
2. 有变化记录之后,将增删改的一些sql语句记录到本地的Binary log(二进制日志)中
3. 从库会一直开启着一个线程
4. 通过线程去读取这个二进制日志的内容
5. 从库会将数据写入到自己的Relay log(中继日志)中
6. 从库会将中继日志中的操作转化为SQL thread(SQL语句)
7. 通过转化的SQL语句写入到自己的数据库, 两边的数据就一致了
3 mariadb 主从复制实验
3.1 需求:
准备两台数据库服务器
主服务器: 192.168.12.249
从服务器: 192.168.12.200
3.2 在主服务器上操作
3.2.1 停止主服务器 mariadb 数据库服务
systemctl stop mariadb
3.2.2 修改主服务器配置文件
[mysqld]
server-id=1 #服务器的代号,可随意改,尽量按1到10
log-bin=qishi-logbin #设置日志文件名
3.2.3 启动 mariadb
systemctl start mariadb
3.2.4 新建用于主从同步的用户 lijun, 用来从库连接主库 ''192.168.12.249''
create user ''lijun''@''%'' identified by ''lj666'';
3.2.5. 给从库账号授权,说明给 lijun 从库复制的权限,在 192.168.12.249 机器上复制
grant replication slave on *.* to ''lijun''@''%'';
3.2.6 检查主库创建的复制账号
select user,host from mysql.user;
3.2.7 检查授权账号的权限
show grants for xiaochun@''%'';
3.2.8 实现对主数据库锁表只读,防止数据写入,数据复制失败
flush table with read lock;
3.2.9 检查主库的状态,并记录下日志文件的名字,和位置
MariaDB [(none)]> show master status;
记录下主数据库的写入状态和日志文件的名字,因为从库连接主库要用到
3.2.10 锁表后,一定要单独再打开一个 SSH 窗口,导出数据库的所有数据,
** 注意,一定要单独再打开一个 SSH 窗口,否则写入状态码会发生变化,导致无法同步。
3.2.11 在主库上导出数据
mysqldump -u root -p --all-databases > /opt/qishimaster.sql
3.3 在从库上配置
3.3.1 关闭数据库服务
systemctl stop mariadb
3.3.2 在从库 192.168.12.200 上打开 /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
server-id=3
read-only=true
3.3.3 重启数据库
systemctl restart mariadb
3.3.4 将主库导出的数据库文件拷贝到从库中
scp 192.168.12.249:/opt/qishimaster.sql /opt/
3.3.5 导入主库传过来的数据库文件,保持从库的数据与主库一致
mysql -u root -p
source /opt/qishimaster.sql
3.3.6 配置复制的参数,Slave 从库连接 Master 主库的配置
mysql > change master to master_host=''192.168.12.240'',
master_user=''caiwenjun'',
master_password=''123456'',
master_log_file=''qishi-logbin.000002'',
master_log_pos=245;
3.3.7 启动从库的同步开关,测试主从复制的情况
start slave;
3.3.8 查看复制状态
show slave status\G;
注意: 如果看到 Slave_IO_Running 和 Slave_SQL_Running 这两个参数都为 yes, 说明主从同步配置成功,否则需要检查并重新配置
如果发现有问题的话,建议推倒重来 (最好是恢复快照)
3.4 最后在主库上操作
3.4.1 解锁主库的写入
unlock tables;
3.4.2 如果从库上面的普通用户无法在从库上登录,就重新创建一个用户
create user ''lijie''@''%'' identified by ''lj666'';
grant replication slave on *.* to ''lijie''@''%'';
或者在主库上给 zhengge 授权,只能授于查看的权限
grant select on *.* to lijie@"%" identified by "lj666";
3.4.3 验证主从读写分离的效果如图显示
4. 发布订阅
4.1 发布者 PUBLISH 发送消息
publish channel 消息
4.2 订阅者 SUBSCRIBE 订阅消息
等待发送者,向管道发送消息
subscribe channel channel2 channel3
4.3 频道 channel
自定义频道的名字
4.4 支持正则的频道订阅
psubscribe 支持正则的频道
publish channel 消息
5. redis 持久化
5.1 redis 特性
redis 是内存型的数据库
redis数据放在内存中
重启服务器丢失数据
重启redis服务丢失数据
断电丢失数据
为了防止 redis 数据丢失,进行持久化,所以将数据写入到一个文件中来实现
5.2 RDB 持久化
5.2.1. 在配置文件中,添加 rdb 持久化参数
redis-6379.conf
写入如下配置
port 6379
daemonize yes
pidfile /data/6379/redis.pid
loglevel notice
logfile "/data/6379/redis.log"
dir /data/6379
protected-mode yes
dbfilename dbmp.rdb
save 900 1 # rdb机制 每900秒 有1个修改记录
save 300 10 # 每300秒 10个修改记录
save 60 10000 # 每60秒内 10000修改记录
注意:修改完配置之后,需要重启 redis 服务,不准玩游戏
5.2.2. 触发 rdb 持久化,可以手动 save 命令即可,生成 dump.rdb 持久化文件
5.2.3. 重启 redis,数据不再丢失
5.2.4.rdb 数据文件是二进制文件,人为的看不懂
5.3 AOF 持久化
5.3.1. 在配置文件中,添加 aof 参数
在 redis-6379.conf 中添加参数,开启 aof 功能
appendonly yes
appendfsync everysec
5.3.2. 重启 redis 数据库,加载 aof 功能
5.4 redis 持久化 RDB 转化 AOF
5.4.1 删除现有的 aof 文件,备份 RDB 文件
cd /data/6379
rm -rf appendonly.aof
cp qishi5.rdb qishi5.rdb.bak
5.4.2 配置 RDB 切换到 AOF
# 先进入redis客户端
redis-cli
# 配置开启AOF
127.0.0.1:6379> config set appendonly yes
# 关闭RDB
127.0.0.1:6379> config set save ""
5.4.3 以上配置重启后会失效,如果需要永久将 RDB 切换到 AOF, 还是需要修改配置文件才可以
003. 图解分析 redis 的 RDB 和 AOF 两种持久化机制的工作原理
[toc]
我们已经知道对于一个企业级的 redis 架构来说,持久化是不可减少的
tip 牢记企业级 redis 集群架构是用来支撑海量数据、高并发、高可用 持久化主要是做灾难恢复、数据恢复,也可以归类到高可用的一个环节里面去
比如你 redis 整个挂了,redis 就不可用了,你要做的事情是让 redis 变得可用,尽快变得可用你会怎么做?
你会重启 redis,尽快让它对外提供服务,但是就像上一讲说,如果你没做数据备份,这个时候 redis 就算启动了,也不可用,数据没有了,如果这个时候大量的请求过来,缓存全部无法命中,在 redis 里根本找不到数据,这个时候就死定了,缓存雪崩(后面会讲解)问题,所有请求没有在 redis 命中,就会去 mysql 数据库这种数据源头中去找,一下子 mysql 承接高并发,然后就挂了
mysql 挂掉,你都没法去找数据恢复到 redis 里面去,redis 的数据从哪儿来?从 mysql 来,所以这个事情在大型互联网项目中是恐怖的
具体的完整的缓存雪崩的场景,还有企业级的解决方案,到后面讲
如果你把 redis 的持久化做好,备份和恢复方案做到企业级的程度,那么即使你的 redis 故障了,也可以通过备份数据,快速恢复,一旦恢复立即对外提供服务
redis 的持久化跟高可用是有关系的,放在企业级 redis 架构中去讲解
redis 持久化的两种机制:RDB,AOF
RDB
对 redis 中的数据执行周期性的持久化,如下图
AOF
每条写入命令作为日志,写入 aof 文件中
为了保证性能,会先写入 os cache 中,然后定期强制执行 fsync 操作将数据刷入磁盘
它的原理:
- 因为每台单机 redis 的数据量是受内存限制的,所以 aof 文件不会无限增长
- 且当数据超过内存限制的时候,会自动使用 LRU 算法将一部分数据淘汰掉
- AOF 存放的是每条写入命令,所以会不断膨胀,当达到一定时候,会做 rewrite 操作
- rewrite 操作:基于当时 redis 内存中的数据,重新构造一个更小的 aof 文件,然后删除旧的 aof 文件
如上图,总结一下: aof 不断被追加,内存中数据有最大限制会自动淘汰,当 aof 中的数据大于内存中数据时,就会执行 rewrite 操作,生成新的 aof 文件
AOF 机制对每条写入命令作为日志,以 append-only 的模式写入一个日志文件中,在 redis 重启的时候,可以通过回放 AOF 日志中的写入指令来重新构建整个数据集
小结
通过 RDB 或 AOF,都可以将 redis 内存中的数据给持久化到磁盘上面来,然后可以将这些数据备份到别的地方去,比如说阿里云,云服务
如果 redis 挂了,服务器上的内存和磁盘上的数据都丢了,可以从云服务上拷贝回来之前的数据,放到指定的目录中,然后重新启动 redis,redis 就会自动根据持久化数据文件中的数据,去恢复内存中的数据,继续对外提供服务
如果同时使用 RDB 和 AOF 两种持久化机制,那么在 redis 重启的时候,会使用 AOF 来重新构建数据,因为 AOF 中的数据更加完整
## 参考
- 中华石杉:亿级流量电商详情页系统实战(第二版):缓存架构 + 高可用服务架构 + 微服务架构 -Mrcode 笔记本
15.4,redis 不重启,切换 RDB 备份到 AOF 备份
确保 redis 版本在 2.2 以上
[root@pyyuc /data 22:23:30]#redis-server -v
Redis server v=4.0.10 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=64cb6afcf41664c
本文在 redis4.0 中,通过 config set 命令,达到不重启 redis 服务,从 RDB 持久化切换为 AOF
实验环境准备
redis.conf 服务端配置文件
daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
dbfilename dbmp.rdb
save 900 1 #rdb机制 每900秒 有1个修改记录
save 300 10 #每300秒 10个修改记录
save 60 10000 #每60秒内 10000修改记录
启动 redis 服务端
redis-server redis.conf
登录 redis-cli 插入数据,手动持久化
127.0.0.1:6379> set name chaoge
OK
127.0.0.1:6379> set age 18
OK
127.0.0.1:6379> set addr shahe
OK
127.0.0.1:6379> save
OK
检查 RDB 文件
[root@pyyuc /data 22:34:16]#ls 6379/
dbmp.rdb redis.log
备份这个 rdb 文件,保证数据安全
[root@pyyuc /data/6379 22:35:38]#cp dbmp.rdb /opt/
执行命令,开启 AOF 持久化
127.0.0.1:6379> CONFIG set appendonly yes #开启AOF功能
OK
127.0.0.1:6379> CONFIG SET save "" #关闭RDB功能
OK
确保数据库的 key 数量正确
127.0.0.1:6379> keys *
1) "addr"
2) "age"
3) "name"
确保插入新的 key,AOF 文件会记录
127.0.0.1:6379> set title golang
OK
此时 RDB 已经正确切换 AOF,注意还得修改 redis.conf 添加 AOF 设置,不然重启后,通过 config set 的配置将丢失
Linux 安装 Redis Redis 持久化 (RDB AOF) 发布订阅
linux redis 学习
-
安装 redis 的方式 -yum (删除这个 yum 安装的 redis,我们只用源码编译安装的) -rpm - 源码编译
-
删除原本的 redis yum remove redis -y
-
下载 redis 源码 wget http://download.redis.io/releases/redis-4.0.10.tar.gz
-
解压缩 tar -zxf redis-4.0.10.tar.gz
-
切换 redis 源码目录 cd redis-4.0.10
-
编译源文件 make
- 编译好后,src / 目录下有编译好的 redis 指令
- make install 安装到指定目录,
-
默认在 /usr/local/bin
-
指定 redis 的配置文件 启动 redis
redis-6666.conf 内容如下port 6666 #redis端口 daemonize yes #后台运行redis pidfile /data/6666/redis.pid # pid号码 loglevel notice #日志等级 logfile "/data/6666/redis.log" #日志文件存放路径 dir /data/6666 #redis数据目录 requirepass haohaio #redis的密码
-
指定配置文件启动 redis 服务端 redis-server redis-6666.conf
-
检查 redis 的进程,端口 ps -ef |grep redis netstat -tunlp |grep redis
-
登录 redis 数据库 redis-cli -p 6666
登录后 输入密码才可访问 auth haohaio
redis 持久化之 RDB 持久化
-
rdb 持久化,可以手动触发持久化,通过 redis 的 save 命令,触发
-
rdb 数据文件是压缩过的 二进制文件,认为看不懂,redis 通过这个文件恢复数据
-
rdb 持久化还有时间策略 save 900 1 # 秒 1 个修改类的操作 save 300 10 # 秒 10 个操作 save 60 10000 # 秒 10000 个操作
-
使用 rdb 持久化的方式,在配置文件中,打开 rdb 持久化 cat redis-6666.conf
内容如下port 6666 daemonize yes pidfile /data/6666/redis.pid loglevel notice logfile "/data/6666/redis.log" dir /data/6666 dbfilename redis.dump
-
关闭 redis 服务端,准备重启 redis-cli -p 6666 -a haohaio shutdown
-
使用新的支持 rdb 持久化的配置文件启动 redis-server redis-6666.conf
-
手动触发 rdb 持久化
通过 save 指令 -
让配置文件支持定期持久化
port 6666 daemonize yes pidfile /data/6666/redis.pid loglevel notice logfile "/data/6666/redis.log" dir /data/6666 dbfilename redis.dump save 900 1 #rdb机制 每900秒 有1个修改记录 save 300 10 #每300秒 10个修改记录 save 60 10000 ~
redis 持久化之 AOF
-
配置 redis 支持 aof 持久化 cat redis-6666.conf 内容如下
port 6666 daemonize yes pidfile /data/6666/redis.pid loglevel notice logfile "/data/6666/redis.log" dir /data/6666 appendonly yes appendfsync everysec
-
指定配置文件启动,支持 aof redis-server redis-6666.conf 在第一次启动的时候,就开启了 aof 持久化
-
不重启 redis,切换 rdb 数据到 aof 数据中
-
准备一个 rdb 的 redis 数据库
port 6666 daemonize yes pidfile /data/6666/redis.pid loglevel notice logfile "/data/6666/redis.log" dir /data/6666 dbfilename redis.dump save 900 1 save 300 10 save 60 10000
-
启动 redis 支持 rdb 的数据库
-
设置 redis 的数据,手动 save 触发持久化,生成持久化数据文件
-
通过命令,切换持久化模式 127.0.0.1:6379> CONFIG set appendonly yes #开启 AOF 功能 OK 127.0.0.1:6379> CONFIG SET save "" #关闭 RDB 功能 OK
-
修改 redis 的配置文件,改为 aof,便于以后重启,完全切换到 aof 模式 redis-6666.conf 内容如下
port 6666 daemonize yes pidfile /data/6666/redis.pid loglevel notice logfile "/data/6666/redis.log" dir /data/6666 appendonly yes appendfsync everysec
-
实验完毕
redis-server redis.conf
-
redis 发布订阅:
-
PUBLISH channel msg 将信息 message 发送到指定的频道 channel
-
SUBSCRIBE channel [channel ...] 订阅频道,可以同时订阅多个频道
-
UNSUBSCRIBE [channel ...] 取消订阅指定的频道,如果不指定频道,则会取消订阅所有频道
-
PSUBSCRIBE pattern [pattern ...] 订阅一个或多个符合给定模式的频道,每个模式以 * 作为匹配符,比如 it* 匹配所 有以 it 开头的频道 ( it.news 、 it.blog 、 it.tweets 等等), news.* 匹配所有 以 news. 开头的频道 ( news.it 、 news.global.today 等等),诸如此类
-
PUNSUBSCRIBE [pattern [pattern ...]] 退订指定的规则,如果没有参数则会退订所有规则
-
PUBSUB subcommand [argument [argument ...]] 查看订阅与发布系统状态
-
** 注意:** 使用发布订阅模式实现的消息队列,当有客户端订阅 channel 后只能收到后续发布到该频道的消息,之前发送的不会缓存,必须 Provider 和 Consumer 同时在线。
博客地址: https://www.cnblogs.com/pyyu/p/9276851.html 博客汇总 https://www.cnblogs.com/pyyu/p/9843950.html redis
mysql如何设置主从(读写分离),redis发布功能,以及redis的持久化存储(rdb,aof)
1 mysql基本命令
1.启动mysql
systemctl start mariadb
2.linux客户端连接自己
mysql -uroot -p -h 127.0.0.1
3.远程链接mysql服务端
mysql -uroot -p -h 192.168.1.197
远程授权:
grant all privileges on *.* to root@"192.168.1.100" identified by "redhat";
flush privileges
4.修改mysql密码
MariaDB [(none)]> set password = PASSWORD(''redhat123'');
5.创建mysql用户
create user xiaochun@''%'' identified by ''xc666'';
6.查询mysql库中的用户信息
use mysql;
select host,user,password from user;
7.授权语句
给李俊这个用户,授予创建数据库的权限
mysql使用grant命令对账户进行授权,grant命令常见格式如下
grant 权限 on 数据库.表名 to 账户@主机名 对特定数据库中的特定表授权
grant 权限 on 数据库.* to 账户@主机名 对特定数据库中的所有表给与授权
grant 权限1,权限2,权限3 on *.* to 账户@主机名 对所有库中的所有表给与多个授权
grant all privileges on *.* to 账户@主机名 对所有库和所有表授权所有权限
#授予小春创建的权限,对于所有的库表生效
grant create on *.* to xiaochun@"%" identified by ''xc666'';
#授予小春用户,只有创建mymysql数据库的权限
grant create on mymysql.* to xiaochun@"%" identified by ''xc666'';
#授予用户最大的权限,所有的权限
grant all privileges on *.* to username@''%'' identified by ''password'';
8.移除权限
MariaDB [(none)]> revoke all privileges on *.* from xiaochun@"%" identified by ''xc666'';
9.数据库的备份与恢复
#备份
mysqldump -u root -p --all-databases > /tmp/db.sql
#数据导入,方式有2种
source /tmp/db.sql;
第二种
mysql -uroot -p < /tmp/db.sql
第三种
navicat
第四种,如果你数据量特别大的话,使用第三方工具
xtrabackup
2 mariadb主从复制
主从复制7步曲:
1. 主数据库写入数据之后, 会有data changes(数据变化)记录
2. 有变化记录之后,将增删改的一些sql语句记录到本地的Binary log(二进制日志)中
3. 从库会一直开启着一个线程
4. 通过线程去读取这个二进制日志的内容
5. 从库会将数据写入到自己的Relay log(中继日志)中
6. 从库会将中继日志中的操作转化为SQL thread(SQL语句)
7. 通过转化的SQL语句写入到自己的数据库, 两边的数据就一致了
3 mariadb主从复制实验
3.1 需求:
准备两台数据库服务器
主服务器: 192.168.12.249
从服务器: 192.168.12.200
3.2 在主服务器上操作
3.2.1 停止主服务器mariadb数据库服务
systemctl stop mariadb
3.2.2 修改主服务器配置文件
[mysqld]
server-id=1 #服务器的代号,可随意改,尽量按1到10
log-bin=qishi-logbin #设置日志文件名
3.2.3 启动mariadb
systemctl start mariadb
3.2.4新建用于主从同步的用户lijun,用来从库连接主库''192.168.12.249''
create user ''lijun''@''%'' identified by ''lj666'';
3.2.5.给从库账号授权,说明给lijun从库复制的权限,在192.168.12.249机器上复制
grant replication slave on *.* to ''lijun''@''%'';
3.2.6 检查主库创建的复制账号
select user,host from mysql.user;
3.2.7 检查授权账号的权限
show grants for xiaochun@''%'';
3.2.8 实现对主数据库锁表只读,防止数据写入,数据复制失败
flush table with read lock;
3.2.9 检查主库的状态, 并记录下日志文件的名字,和位置
MariaDB [(none)]> show master status;
记录下主数据库的写入状态和日志文件的名字,因为从库连接主库要用到
3.2.10 锁表后,一定要单独再打开一个SSH窗口,导出数据库的所有数据,
**注意,一定要单独再打开一个SSH窗口,否则写入状态码会发生变化,导致无法同步。
3.2.11 在主库上导出数据
mysqldump -u root -p --all-databases > /opt/qishimaster.sql
3.3 在从库上配置
3.3.1 关闭数据库服务
systemctl stop mariadb
3.3.2 在从库192.168.12.200上打开/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
server-id=3
read-only=true
3.3.3 重启数据库
systemctl restart mariadb
3.3.4 将主库导出的数据库文件拷贝到从库中
scp 192.168.12.249:/opt/qishimaster.sql /opt/
3.3.5 导入主库传过来的数据库文件,保持从库的数据与主库一致
mysql -u root -p
source /opt/qishimaster.sql
3.3.6 配置复制的参数,Slave从库连接Master主库的配置
mysql > change master to master_host=''192.168.12.240'',
master_user=''caiwenjun'',
master_password=''123456'',
master_log_file=''qishi-logbin.000002'',
master_log_pos=245;
3.3.7 启动从库的同步开关,测试主从复制的情况
start slave;
3.3.8 查看复制状态
show slave status\G;
注意: 如果看到Slave_IO_Running和Slave_SQL_Running这两个参数都为yes, 说明主从同步配置成功,否则需要检查并重新配置
如果发现有问题的话,建议推倒重来(最好是恢复快照)
3.4 最后在主库上操作
3.4.1 解锁主库的写入
unlock tables;
3.4.2 如果从库上面的普通用户无法在从库上登录,就重新创建一个用户
create user ''lijie''@''%'' identified by ''lj666'';
grant replication slave on *.* to ''lijie''@''%'';
或者在主库上给zhengge授权, 只能授于查看的权限
grant select on *.* to lijie@"%" identified by "lj666";
3.4.3 验证主从读写分离的效果如图显示
4. 发布订阅
4.1 发布者 PUBLISH 发送消息
publish channel 消息
4.2订阅者 SUBSCRIBE 订阅消息
等待发送者,向管道发送消息
subscribe channel channel2 channel3
4.3 频道 channel
自定义频道的名字
4.4 支持正则的频道订阅
psubscribe 支持正则的频道
publish channel 消息
5. redis持久化
5.1 redis特性
redis是内存型的数据库
redis数据放在内存中
重启服务器丢失数据
重启redis服务丢失数据
断电丢失数据
为了防止redis数据丢失,进行持久化,所以将数据写入到一个文件中来实现
5.2 RDB持久化
5.2.1.在配置文件中,添加rdb持久化参数
redis-6379.conf
写入如下配置
port 6379
daemonize yes
pidfile /data/6379/redis.pid
loglevel notice
logfile "/data/6379/redis.log"
dir /data/6379
protected-mode yes
dbfilename dbmp.rdb
save 900 1 # rdb机制 每900秒 有1个修改记录
save 300 10 # 每300秒 10个修改记录
save 60 10000 # 每60秒内 10000修改记录
注意: 修改完配置之后,需要重启redis服务, 不准玩游戏
5.2.2.触发rdb持久化,可以手动save命令即可,生成 dump.rdb持久化文件
5.2.3.重启redis,数据不再丢失
5.2.4.rdb数据文件是二进制文件,人为的看不懂
5.3 AOF持久化
5.3.1.在配置文件中,添加aof参数
在redis-6379.conf中添加参数,开启aof功能
appendonly yes
appendfsync everysec
5.3.2.重启redis数据库,加载aof功能
5.4 redis持久化RDB转化AOF
5.4.1 删除现有的aof文件,备份RDB文件
cd /data/6379
rm -rf appendonly.aof
cp qishi5.rdb qishi5.rdb.bak
5.4.2 配置RDB切换到AOF
# 先进入redis客户端
redis-cli
# 配置开启AOF
127.0.0.1:6379> config set appendonly yes
# 关闭RDB
127.0.0.1:6379> config set save ""
5.4.3 以上配置重启后会失效,如果需要永久将RDB切换到AOF, 还是需要修改配置文件才可以
我们今天的关于mysql 如何设置主从和读写分离,redis 发布功能,以及 redis 的持久化存储的分享已经告一段落,感谢您的关注,如果您想了解更多关于003. 图解分析 redis 的 RDB 和 AOF 两种持久化机制的工作原理、15.4,redis 不重启,切换 RDB 备份到 AOF 备份、Linux 安装 Redis Redis 持久化 (RDB AOF) 发布订阅、mysql如何设置主从(读写分离),redis发布功能,以及redis的持久化存储(rdb,aof)的相关信息,请在本站查询。
本文标签: