shenzhang 发表于 2018-10-10 06:54:50

mysql缓存 (redis)

  Mysq需要注意的地方:
  mysql主从复制 延迟来自于 sql线程(解决:myslq5.7 可设置成多线程并行)
  数据库监控:lepus
  大型数据库的删除(安全快速的方法 一部分一部分删除)(不推荐暴力的删除 DELETE DROP 会造成主从不一致)
  expire_log_days 0 (默认数据库不会删除)
  set global expire_logs_days=7 (设置七天后删除)
  TiDB(分布式)
  数据备份一定要在slave上做 以免加重master的负担
  数据库缓存:redis(nosql的缺点:数据无法持久化因为工作在内存 而且内存容量有限 优点:速度快 但redis可以数据保持 工作在内存 数据会保存在磁盘)
  读写分离:加代理(数据库访问层 proxy)
  nosql数据库可以直接连接一个redis (速度超快)
  但是数据与数据之间是有关系的所以还得连接mysql:
  client(KV) -->redis --(钩子函数)>mysql
  高并发mysql:(肯定要走读写分离)
  client -->中间键(专门开发 做分发 确认客户需求 因为LVS不懂这些 只做转发)-->LVS(开发:等价路由 扩展多个LVS)-->nginx(多个一个LVS对应一个nginx)-->BD(cluster)
  数据库缓存:(redis)
  三台虚拟机:
  dd1:(nginx php)
  查看之前是否安装过:
  rpm -qa | grep php
  rpm -qa | grep httpd

  yum install -y nginx-1.8.0-1.el6.ngx.x86_64.rpm
  rpm -ivh php-cli-5.3.3-38.el6.x86_64.rpm php-common-5.3.3-38.el6.x86_64.rpm
  rpm -ivh php-mysql-5.3.3-38.el6.x86_64.rpmphp-pdo-5.3.3-38.el6.x86_64.rpm
  yum install php-5.3.3-38.el6.x86_64.rpm
  cd /etc/php-fpm.d
  vim www.conf (更改用户名用户组 nginx)
  /etc/init.d/php-fpm start

  netstat -antlpe | grep php

  cd /etc/nginx/conf.d
  vim default.conf (nginx开启php模块)

  nginx -t
  nginx (开启nginx)
  netstat -antlpe | grep nginx

  cd /usr/share/nginx/html/
  测试:nginx php是否安装成功

  dd3:yum install mysql-server -y (版本太低 只适合测试用)
  /etc/init.d/mysqld start
  dd1:scp redis-3.2.5.tar.gz root@172.25.42.11:
  dd2:
  tar zxf redis-3.2.5.tar.gz
  cd redis-3.2.5
  make && make install
  cd utils
  ./install_server.sh
  netstat –antlpe

  cd /etc/redis
  vim 6379.conf (绑定监听端口)
  /etc/init.d/redis_6379 restart
  redis-cli

  dd1:(php 加载redis模块)

  yum install unzip -y
  unzip phpredis-master.zip
  yum install php-devel-5.3.3-38.el6.x86_64.rpm
  cd phpredis-master
  phpize (指定模块安装路径)

  ./configure
  make && make install
  vim /etc/php.ini (更改时区)

  cd /etc/php.d
  cp mysql.ini redis.ini
  vim redis.ini


  /etc/init.d/php-fpm>  php -m | grep redis (查看加载模块是否成功)

  cp test.php /usr/share/nginx/html/index.php(测试页面)
  vim /usr/share/nginx/html/index.php

  scp test.sql 172.25.42.12:(redis) (数据库内容)
  dd3:

  grant select on test.* to redis@'172.25.42.%'>
  select * from test

  测试:
  页面测试:第一次访问的是数据库 第二此访问的是cache

  缺陷:如果更新mysql数据库的内容,cache不会察觉,里面数据内容不会更改, 用户访问的时候,得到的还是缓存里面旧的内容,只能手动删除cache里面的旧的数据 才能重新更新

  update test set name='westos'where>
  redis主从:(备份) redis是单进程的解决办法:跑多个进程 将进程与cpu绑定
  dd3:(不同服务不同端口 为了避免多开虚拟机 就在dd3上面做啦~)
  tar zxf redis-3.2.5.tar.gz
  cd redis-3.2.5
  make && make install (yum install gcc -y)
  cd utils/
  ./install_server.sh

  cd /etc/redis/
  vim 6379.conf (slaveof)

  /etc/init.d/redis_6379 restart
  测试:redis-cli
  主从切换:(一主多从 一主双从)
  dd1:(不同服务不同端口 为了避免多开虚拟机 就在dd1上面做啦~)
  tar zxf redis-3.2.5.tar.gz
  cd redis-3.2.5
  make && make install (yum install gcc -y)
  cd utils/
  ./install_server.sh
  cd /etc/redis/
  vim 6379.conf (slaveof)

  /etc/init.d/redis_6379 restart

  cd redis-3.2.5
  cp sentinel.conf/etc/redis
  vim sentinel.conf



  scp sentinel.conf root@172.25.42.12:/etc/redis/
  scp sentinel.conf root@172.25.42.11:/etc/redis/
  redis-server /etc/redis/sentinel.conf --sentinel (三台都做) (会打开一个新的监控端口)
  查看:redis-cli -p 26379 (26379:监控每一个端口

  redis-cli
  127.0.0.1:6379> monitor (master 每一秒都在给slave发包)


页: [1]
查看完整版本: mysql缓存 (redis)