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
mysql缓存 (redis)_ 缓存
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
mysql缓存 (redis)_ 缓存_02
netstat -antlpe | grep php
mysql缓存 (redis)_mysql_03
cd /etc/nginx/conf.d
vim default.conf (nginx
开启php模块)
mysql缓存 (redis)_ 缓存_04
nginx -t
nginx (
开启nginx)
netstat -antlpe | grep nginx

mysql缓存 (redis)_redis_05
cd /usr/share/nginx/html/
测试:nginx php是否安装成功
mysql缓存 (redis)_ 缓存_06
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

mysql缓存 (redis)_redis_07
cd /etc/redis
vim 6379.conf (
绑定监听端口)
 /etc/init.d/redis_6379 restart
redis-cli
mysql缓存 (redis)_ 缓存_08
dd1:
php 加载redis模块

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

mysql缓存 (redis)_ 缓存_10
./configure
make && make install

vim /etc/php.ini
(更改时区)
mysql缓存 (redis)_redis_11
cd /etc/php.d
cp mysql.ini redis.ini
vim redis.ini

mysql缓存 (redis)_mysql_12
/etc/init.d/php-fpm reload
php -m | grep redis
(查看加载模块是否成功)
mysql缓存 (redis)_redis_13
cp test.php /usr/share/nginx/html/index.php
(测试页面)
vim /usr/share/nginx/html/index.php
mysql缓存 (redis)_mysql_14
scp test.sql 172.25.42.12:(redis)
(数据库内容)


dd3:
grant select on test.* to redis@'172.25.42.%' identified by 'westos'

mysql缓存 (redis)_mysql_15
select * from test

mysql缓存 (redis)_redis_16
测试:
页面测试:第一次访问的是数据库 第二此访问的是cache

mysql缓存 (redis)_mysql_17
缺陷:如果更新mysql数据库的内容,cache不会察觉,里面数据内容不会更改, 用户访问的时候,得到的还是缓存里面旧的内容,只能手动删除cache里面的旧的数据 才能重新更新
update test set name='westos'where id =1

mysql缓存 (redis)_redis_18mysql缓存 (redis)_mysql_19


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

mysql缓存 (redis)_ 缓存_20
cd /etc/redis/
vim 6379.conf
(slaveof)

mysql缓存 (redis)_mysql_21
/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)

mysql缓存 (redis)_mysql_22
/etc/init.d/redis_6379 restart

mysql缓存 (redis)_mysql_23
cd redis-3.2.5
cp sentinel.conf  /etc/redis
vim sentinel.conf

mysql缓存 (redis)_ 缓存_24

mysql缓存 (redis)_redis_25

mysql缓存 (redis)_ 缓存_26


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:监控每一个端口
mysql缓存 (redis)_ 缓存_27
redis-cli
127.0.0.1:6379> monitor (master
每一秒都在给slave发包)
mysql缓存 (redis)_redis_28