106 mysql 安装 主从复制 redis的安装, 支持多实例化, 持久化操作

主要内容:

  mysql的博客地址: https://www.cnblogs.com/pyyu/p/9467289.html

  redis的博客地址: https://www.cnblogs.com/pyyu/p/9843950.html

1 mysql 安装:

  a : mariadb其实就是mysql;  mysql已经被oracle收购,它即将闭源,马上要开始收费了,因此还想免费试用开源的数据库mysql,就在centos7上,将mysql分支为mariadb

  b : 安装mariadb的两种方式:

   通过yum安装:   linux下yum的软件管理目录在/etc/yum.repos.d

          在这个目录底下, 主要是*.repo这个文件, 就会被识别为yum源文件.

   第一种方式:通过阿里云的yum源去下载(第三方的yum源,可能会版本较低,且软件不全,可能找不到)

        安装语句: yum install mariadb-server   #yum安装mariadb    因为这个阿里云特别快,咱们用他去学习,加速下载  300kb/s, 工作上用下一个

   第二种方式: 通过mariadb官方的yum源去下载(一定是这个软件最正确的yum源,且包都是最新的).

        1)  #编辑创建mariadb.repo仓库文件: vi /etc/yum.repos.d/MariaDB.repo

        2) 添加repo仓库配置: 

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

        3)  安装语句:yum install MariaDB-server MariaDB-client #区分大小写 ,这个方式是取国外下载mariadb速度太慢 30kb/s依赖关系解决

        4) 重新启动mariadb:  systemct1 start mariadb

mysql的使用:

  1 初始化mariadb:  mysql_secure_installation    #直接输入这个命令,设置root密码,删除匿名用户等等操作.

  2 配置mariadb远程登录, 可以通过windows, pycharm等客户端进行连接,在远程登录的时候, 必须输入'redhat'密码.

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

    解释: 授予所有的权限在所有的库所有的表, 用户名@"所有的地址".

  3 刷新授权表, 使得权限立即生效: flush  privileges;

  4 更改mysql的密码:   set password = PASSWORD('redhat123');

  5 创建普通用户:  create user s14@'%' identified by 's14666';

  6 查询用户信息: select host, user, password from user

  7 授权语句:     

    grant 权限 on 数据库.表名 to 账户@主机名 对特定数据库中的特定表授权
    grant 权限 on 数据库.* to 账户@主机名   对特定数据库中的所有表给与授权
    grant 权限1,权限2,权限3 on *.* to 账户@主机名    对所有库中的所有表给与多个授权
    grant all privileges on *.* to 账户@主机名    对所有库和所有表授权所有权限
    grant create,select,insert on *.* to root@'%' identified by "密码"

  8 数据库中的中文设置: 防止乱码

    1 ) 查看数据库编码: \s

    2 ) 修改mysql中的配置文件:   vim  /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

    3) 修改了配置文件, 重启服务:systemctl restart mariadb 

    4 ) 查看数据库创建的编码, 只有在跟新了数据库编码之后, 创建的数据库, 才会使用这个编码   show create database s16

3  数据库的备份

    1) 通过命令导出全部数据:  mysqldump -u root -p --all-databases > /data/db.dump

    2) 进入到mariadb数据库, 删除一个db

      执行命令:

[root@master ~]# mysql -uroot -p
MariaDB [(none)]> drop database s11;

    3) 进行数据恢复, 把刚才重定向的备份的数据库文件导入到mysql中

[root@master ~]# mysql -uroot -p < /data/db.dump

4 mysql的主从复制:

   1) 主从复制的原理

    a : 主库master, 用户可以在这里读写数据

    b : 将变动的数据写入到二进制文件bin_log中, 记录数据库中的变化

    c : 从服务器指名要和谁同步, 然后slave机器开启一个线程, 取读取主库中的二进制文件

    d : 从服务器中将那些sql变动写入到自己的中继日志中, 然后将这些sql语句在自己的slave本机在执行一次.

   2 ) 应用场景:

    利用复制功能吧maser服务器出现问题时, 我们可以人工的切换到服务器继续提供服务, 此时服务器的数据和宕机时的数据几乎完全一致. 复制功能也可用作数据备份, 但是如果人为的执行drop, delete等语句, 那么从库的备份功能也就失效了.

  3 )  主库和从库的配置:

     a : 主库的配置:

        1) 开启binlog功能, 修改/etc/my.cnf

[mysqld]
server-id=1   #指明主库的身份id为1
log-bin=mysqls14-bin   #指明binlog的日志名

        2) 修改配置文件, 重启mariadb, 使得binlog生效:   systemct1  restart mariadb

        3) 登录mysql, 检查主库的状态:  show  master  status;

        4) 创建一个用户, 用于进行主从同步:create user 'kangchen'@'%' identified by 'kangchen666';

        5) 授予账号权限, 授予一个从库的身份权限:grant replication slave on *.* to 'kangchen'@'%';

        6) 锁定mysql表, 防止数据写入:  flush table with read lock;

        7) 主从同步, 将从库与主库的数据, 保持一致后, 他两在同一起跑线上, 然后解除锁表, 然后解除数据, 保证数据的一致性.

          a : 导出当前数据, 用于slave机器导入数据, 保证在一个起始点.:mysqldump -u root -p --all-databases > /data/db.dump

          b : 将此文件远程传输给slave机器, 用于导入: scp /data/db.dump  root@192.168.12.87:/tmp/

          c : 登录从库, 导入主库的数据信息:source /tmp/db.dump

        8) .查看主库的状态信息,binlog信息  : show master status;

        9) .解锁表,开始主从同步 : unlock tables;

    b: 从库的设置:

        1) .在/etc/my.cnf当中打开server-id   :  vim /etc/my.cnf

        2) .重启myariadb

        3) .查看slave机器的身份信息
          show variables like 'server_id';
          show variables like 'log_bin';

        4) .通过命令,开启主从同步技术

change master to master_host='192.168.12.96',
master_user='kangchen',
master_password='kangchen666',
master_log_file='mysqls14-bin.000001',
master_log_pos=671;

         5) .开启slave  : start slave;

         6) .检查slave状态,检查两条参数,如果都是yes,即主从ok
        Slave_IO_Running: Yes
        Slave_SQL_Running: Yes

         7) .此时可以在主库中写入数据,查看从库中是否生成了记录

5 redis的安装

  1) 在线下载redis源码包: wget http://download.redis.io/releases/redis-4.0.10.tar.gz

  2) 解压缩源码包, 如果源码包带有.gz结尾, 需要通过gzip指令扩展, 也就是-z的参数:tar -zxvf redis-4.0.10.tar.gz  #解压缩这个文件,且显示解压缩过程

  3) 切换目录到源码包:

  4) 由于redis没有configure脚本, 直接就有了makefile, 因此可以直接编译且安装:  make  编译   make install  安装

    两条命令可以缩写成一条: make && make install

  5) 编译安装完成后, redia默认将redis的命令添加到环境变量中/usr/local/bin下面

6 redis的使用:

  1) 改名字: mv redis.conf  redis.conf.bak

  2) 对bak文件进行操作: 去掉所有的#开头的和空行, 将筛选的值写入到redis.conf中, conf写入一下内容.

port 6379
	daemonize no  #后台运行redis
	pidfile /data/6379/redis.pid #将redis进程的id写入到redis.pid这个文件
	loglevel notice  #日志级别
	logfile "/data/6379/redis.log"
	dir /data/6379  #配置redis数据存放点
	protected-mode yes  #redis3.0之后的安全模式
	requirepass qiangdademima  #给redis添加密码
	

  3) 此时执行redis-server redis.conf, 此时开启redis服务, 开启一个客户端来连接它.

  4) redis的安全模式, 可能会阻挡你远程连接, 为了解决这个安全模式, 给redis设置一个密码:

    使用密码登录的连接的方法:

[root@smile ~]#redis-cli -p 6379
127.0.0.1:6379> auth passwd1

    检查redis是否设置了密码:  CONFIG get requirepass

    如果没有, 还可以给redis设置密码: CONFIG set requirepass "xxxxxx"

7 redis的多实例功能, 可以在一个机器上, 启动多个redis服务端

  1)准备一个新的配置文件, redis默认支持多实例, 再准备一个新的配置文件redis-6380.conf,内容如下:

port 6380
		bind 0.0.0.0
		daemonize yes
		pidfile /data/6380/redis.pid 
		loglevel notice 
		logfile "/data/6380/redis.log"
		dir /data/6380
		protected-mode yes
		requirepass zeiqiangdademima

  2) 可以启动第二个实例(第二个数据库):  redis-server redis-6380.conf 

8 redis的发布订阅:

  1 一个发布者, 多个订阅者

  2 支持正则的匹配订阅者

    1) 执行步骤, 开启三个redis-cli:  两个为订阅者, 一个为发布者

    2) 执行流程如下:

-a	参数意思是指定redis的密码登录
一般不用这种方法登录, 不安全, 使用下面的方法进行登录
redis-cli -p 端口号
auth 密码
redis-cli -a qiangdademima   #启动1个redis客户端 (订阅者1)
	SUBSCRIBE  频道名字   
	PSUBSCRIBE  频道名*  

redis-cli -a qiangdademima   #启动2个redis客户端(订阅者2)
	SUBSCRIBE  频道名字 
	PSUBSCRIBE  频道名*
	
redis-cli -a qiangdademima   #启动3个redis客户端(发布者)
	PUBLISH   频道名字  想发送的消息   
	PUBLISH   频道名字*   发送的消息

9 redis的持久化值RDB和AOF

  持久化

    定义:  redis是一种内存型数据库, 一旦服务器进程退出, 数据库中的数据就会丢失, 为了解决这个问题, redis提供了两种持续化的方案, 将内存的数据保存到磁盘中, 避免数据的丢失.

  RDB模式配置:

    定义: redis提供了RDB持久化的功能,这个功能可以将redis在内存中的的状态保存到硬盘中,它可以手动执行。也可以再redis.conf中配置,定期执行

    RDB持久化产生的RDB文件是一个经过压缩的二进制文件,这个文件被保存在硬盘中,redis可以通过这个文件还原数据库当时的状态。

    1) 在配置文件中写入参数, 支持rdb模式,  vim redis.conf 

port 6379
bind 0.0.0.0
daemonize yes
pidfile /data/6379/redis.pid 
loglevel notice 
logfile "/data/6379/redis.log"
dir /data/6379 
protected-mode yes
requirepass qiangdademima
加入下面四句 dbfilename dbmp.rdb save 900 1 save 300 10 save 60 10000

    2) 启动redis服务, 此时可以设置redis的key, 通过save命令触发rdb持久化

    3) 此时/data/6379/会出现dbmp.rdb文件

    4) 此时关闭redis服务, 客户端的数据会保存, 不会丢失

  AOF 模式设置:

    定义: 记录服务器执行的所有变更操作命令(例如set del等),并在服务器启动时,通过重新执行这些命令来还原数据集.

    AOF 文件中的命令全部以redis协议的格式保存,新命令追加到文件末尾。

    优缺点: 最大程度保证数据不丢失, 日志记录非常大.

    1) 编辑vim redis.conf 写入以下:

daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
dbfilename  dbmp.rdb
requirepass redhat
save 900 1
save 300 10
save 60  10000
加入下面两句代码: appendonly yes appendfsync everysec

    2) 启动reids-sever服务端, 默认就会生成appendonly.aof持久化文件, 此时进入到redis-cli的操作都会记录到持久化文件中, 如果关闭redis服务, 在重新开启会重新执行持久化文件, 将数据保存.

  redis持久化的方式, 不同之处

    1) 持久化的方式:  RDB 和AOF

    2) 不同点: rbd: 基于快照的持久化, 速度更快, 一般用作备份, 主从复制也是依赖于rdb持久化功能; aof: 已追加的方式记录redis操作日志的文件. 可以最大程度的保证redis数据安全, 类似于mysqld的binlog.

 

 

 

     

      

 

 

  

posted @ 2018-12-05 15:33  ...绿茵  阅读(243)  评论(0编辑  收藏  举报
1