- 第一天-date相关
- 第二天-常用技巧
- 快捷方式的使用方法
- 1、Linux改密码方法 centos7
- 2、vi使用技巧
- 3、更改yum源 为阿里云源 写出方法并实战
- 4、一个软件安装好了,如何利用rpm命令进行卸载
- 5、如何创建多个用户(创建100个用户 zk1..zk100)
- 6、已知一个服务的名称,请告知服务的端口号是什么
- 7、编辑一个测试文件
- 8、如何将一个目录中以.txt结尾的文件,统一进行压缩处理
- 9、如何找出/data目录中.txt结尾的文件,将找出的文件进行统一删除
- 10、如何找出/data目录中.txt结尾的文件,将找出的文件进行批量复制/移动到/tmp目录中
- 11、centos6里面如何用uid区分不同的用户类型
- 12、总结linux系统中常用的压缩和解压命令 tar zip rar
- 13、查找服务器.doc文件结尾的文件找到并删除
- 14、权限说明
- 15、修改服务器22端口为30002并禁止使用密码登录使用秘钥认证登录
- 第三天-查找统计压缩
- 第四天-进程之类
- 第五天-awk
- 第六天-find
- 第七天-sed
- 1、利sed 取出ifconfIg ens33命令中本机的IPv4地址 可以百度扩展 了解即可
- 2、把/etc/passwd 复制到/root/test.txt,用sed打印所有行
- 3、打印test.txt的3到10行
- 4、打印test.txt 中包含 ‘root’ 的行
- 5、删除test.txt 的15行以及以后所有行
- 6、删除test.txt中包含 ‘bash’ 的行
- 7、替换test.txt 中 ‘root’ 为 ‘ha’
- 8、替换test.txt中 ‘/sbin/nologin’ 为 ‘/bin/login’
- 9、打印/etc/passwd的奇数行?
- 10、打印/etc/passwd的偶数行?
- 11、把/etc/httpd/conf/httpd.conf?件内的Linsten 80改为Listen 8081 sed 完成
- 第八天-firewalld
- 第九天
- 1、查询file.txt 以abc结尾的行
- 2、删除file.txt文件中的空行
- 3、打印file.txt 文件中的第10行
- 4、对MySQL数据库test进行备份和恢复
- 5、在11月份,每天的早上6点到12点中,每隔2个小时执行一次/usr/bin/httpd.sh 怎么实现
- 6、iptables和firewalld 都学习下 禁止 ip 10.10.10.1 访问本地80端口
- 7、查看http的并发请求数及其tcp连接数
- 8、统计80端口连接数
- 9、统计已经链接上的,状态为established
- 10、查出哪个IP地址连接最多
- 11、统计apache的access.log中访问量最多的ip
- 12、如何查看占用端口8080的进程
- 第十天-cron定时任务
- 1、实战测试每隔3天 夜里2点 执行数据备份
- 2、每5分钟用ping命令测试www.wanmei.com网站100次,并将结果保存到/root/network.log
- 3、每天凌晨3:05 执行脚本tongji.sh并将输出的信息追加到/dev/null
- 4、crontab里0 2 1 /data/postmall/shell/a.sh
- 5、00 22 rm -rf /test/ >>/tmp/log 2>&1
- 6、50 16 rm -rf /abc/ >>/dev/null 2>&1
- 7、50 17 1 tar zcf ./backup-date +%Y%m%d.tar.gz /data >/dev/null 2>&1
- 8、15 03 6 sh /home/shell/collect.pl >/dev/null 2>&1
- 9、00 00 1 tar zcf /tmp/etc-date +%F.tar.gz /etc
- 10、00 06-18/3,13 10 sh /opt/backup.sh
- 第十一天
- 第十二天-数据库
- 数据库项目经验:要实战出来 都可以写到自己简历上
- 第十三天-redis集群
第一天-date相关
1、修改当前时间为明天日期
date -s 20210830
2、 把当前目录file文件复制到/home 显示格式如下 file.2020-09-24
cp /file /home/file.$(date +%Y-%m-%d)
3、实时同步时间实操题
0 12 * * *
#分 时 日 月 周
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null
4、软硬链接的区别
软连接是连接到一个虚拟目录用多少占用多少空间
硬链接是直接链接到一个和原始文件一样大小的目录删除的时候 rm /usr/local 这样只删除软连接; rm /usr/local/ 则带源文件一起删除
5、使用find 查看当前目录下以a.开头的所有文件
find . -name "a.*"
6、查看/etc/passwd的第六行 使用head和tail
head -n 7 /etc/passwd | tail -n 1
7、查看已使用总内存
echo "剩余内存:free -mh| awk "NR==2" | awk '{print $3}'"
8、echo 3 >/proc/sys/vm/drop_caches 是什么意思
把一个字符3输入到drop_caches里面覆盖模式
9、MySQL的默认端口号是啥
3306
10、在/linux目录下查找权限为644的文件,并移动到/tmp目录下
-type f 只查询文件
xargs 把管道前边的值传递给一个过滤器
mv -t destdir sourcedir 将sourcedir所有文件移动到 destdir目录
find /usr/local -perm 644 -type f | xargs mv -t /tmp/
11、用sed修改test.txt的第十行的Linux为test
sed -i '10 s/Linux/text/' test.txt
12、给一个文件a.sh 加一个执行权限
chmod +x a.sh
第二天-常用技巧
快捷方式的使用方法
ctrl+e 将光标快速移动到行尾
ctrl+?? ?? 将光标按单词快速左右移动
ctrl+w 将空格分隔的一个字符串整体进行删除(剪切)
ctrl+u 将光标所在位置到行首内容进行删除(剪切)
ctrl+k 将光标所在位置到行尾内容进行删除(剪切)
ctrl+y 粘贴剪切的内容
ctrl+s xshell进入到了锁定状态 suo锁
ctrl+q 解除锁定状态 quit推出锁定状态
1、Linux改密码方法 centos7
重启的时候出现centos选项到时候按e
找到Linux16开头的再末尾加上init=/bin/sh
按快捷键ctrl+x进入单用户 输入mount -o remount,rw /
输入passwd 输入新的密码
输入touch /.autorelabel 输入exec /sbin/init等待重启
2、vi使用技巧
vi 文件信息
i —- 进入编辑模式
ESC —- 退出编辑模式
:wq —- 保存并退出
:wq!—- 强制保存退出
:q! —- 强制退出
3、更改yum源 为阿里云源 写出方法并实战
把原来的yum源重命名不以repo结尾
curl -o /etc/yum.repos.d/aliyun.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all && yum makecache
4、一个软件安装好了,如何利用rpm命令进行卸载
安装:rpm -ivh 软件名 卸载:rmp -e 软件名
5、如何创建多个用户(创建100个用户 zk1..zk100)
#!/bin/bash
for((i=1;i<101;i++));do
useradd "zk${i}"
done
6、已知一个服务的名称,请告知服务的端口号是什么
netstat -ano | grep 服务名
7、编辑一个测试文件
[root@oldboyedu ~]# cat >> /oldboy/test.txt <<EOF
zh01
zk01
olddog01
zk02
oldgirl02
olddog02
EOF
7.1、请筛选出有oldboy的信息
cat test.txt | grep 'oldboy'
7.2、筛选有oldgirl的信息,但是要有oldgirl信息的下一行信息也显示
cat test.txt | grep -A 1 'oldgirl'
7.3、修改test.txt文件内容 将所有oldboy信息修改替换为 python
sed -i 's/oldboy/python' test.txt
7.4、修改test.txt文件内容 将所有python信息修改替换为 oldboy 使用tr
cat test.txt | tr "python" "oldboy" > test.txt
8、如何将一个目录中以.txt结尾的文件,统一进行压缩处理
find ./ -name "*.txt" | xargs zip txt.zip
9、如何找出/data目录中.txt结尾的文件,将找出的文件进行统一删除
find /data -name "*.txt" | xargs rm -rf
10、如何找出/data目录中.txt结尾的文件,将找出的文件进行批量复制/移动到/tmp目录中
find /tmp -name "*.sh" | xargs mv -t /usr/local
11、centos6里面如何用uid区分不同的用户类型
id 用户名称
ID=0 系统管理员
ID=1~499 系统服务相关
ID=500~65535 用户使用
12、总结linux系统中常用的压缩和解压命令 tar zip rar
tar -zxvf tar包名 || tar -czvf tar包名 待打包的文件
zip zip包名 待打包的文件 || unzip zip包名
rar a rar包名 待打包的文件 || rar x rar包名
13、查找服务器.doc文件结尾的文件找到并删除
find / -name "*.doc" | xargs rm -rf
14、权限说明
rwx -- 700
rw--w---x 621
rwx-wx--- 730
r---wx-w- 432
15、修改服务器22端口为30002并禁止使用密码登录使用秘钥认证登录
修改端口:
vim /etc/ssh/sshd_config
将port 22改为30002 保存退出
systemctl restart sshd
使用密钥登录:
1、a服务器登录b服务器 使用秘钥连接
执行:ssh-keygen -t rsa
这时.ssh目录下会生成私钥和公钥的键值对id_rsa,id_rsa.pub
[root@a ~]# scp /root/.ssh/id_rsa.pub root@192.168.1.101:/root/.ssh/authorized_keys
[root@b ~]# chmod 600 /root/.ssh/authorized_keys
[root@a ~]# ssh -l root 192.168.1.101
也可以这样:
输入命令:ssh-keygen,一直按回车,直至完成操作
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.100.11
2、a和b互相免密连接
执行:ssh-keygen -t rsa
cd /root/.ssh
mv id_rsa.pub authorized_keys
scp -r /root/.ssh 192.168.100.11:/root
3、windows 服务器产生秘钥 使用xhsell 使用公钥远程连接服务器
使用xshell 生成一对key
公钥复制到linux 服务器上 /root/.ssh/authorized_keys
sed -i "s/PasswordAuthentication yes/PasswordAuthentication no/" /etc/ssh/sshd_config
systemctl restart shhd
第三天-查找统计压缩
1、find使用方法:
1.1、根据文件大小查找命令:
find ./ -type f -size 0
1.2、根据文件权限查找数据:
find ./ -type f -perm 777
2、把 abc压缩成格式如 2020-09-29.abc.tar.gz
tar -czvf $(date +%Y-%m-%d).abc.tar.gz abc
3、解压如上文件
tar -zxvf 2021*.tar.gz
4、美元符号:$ 表达什么:
$() 变量<br /> ! 作用:history历史命令里 !序号或者开头单词 可以直接执行相应的历史命令<br /> | 作用:左边的输出为右边的参数 ||则是左边失败后执行右边<br /> xargs 作用:相当于过滤器 给参数加一个执行的组合命令配合|
5、查找指定数据信息进行复制 查找出*.txt文件,批量复制到/tmp目录
find ./ -name "*.txt" -exec cp {} /tmp \;
6、查找指定数据信息进行移动 查找出*.txt文件,批量移动到/tmp目录
find ./ -name "*.txt" -exec mv {} /tmp \;
7、将以abc开头的行找出来?
cat a.txt | grep "^abc"
8、将以linux结尾的行找出来?
cat a.txt | grep "linux$"
9、将全部内容显示,但不要显示空行
cat a.txt | grep -Ev "^$"
10、利用linux什么命令真正统计目录的大小?
du -hs 目录名
第四天-进程之类
1、说一些你比较常用linux指令
find top cat ls grep awk wc cd date ps -ef vim net stat
2、查看进程(例:如何查看所有xx进程)
ps -ef | grep nginx
3、杀掉进程
kill -9 进程号
4、启动/停止服务
systemctl start 服务名
systemctl stop 服务名
或者services
5、查看日志
cat /var/log/具体日志名
6、查看端口:(如查看某个端口是否被占用)
netstat -ano | grep 端口号
7、查找文件
7.1、查找大小超过xx的文件:
find ./ -type f -size xxM
7.2、通过文件名:
find ./ -type f -name "文件名"
8、vim(vi)编辑器
:wq 保存退出
:q 不保存退出
GG 跳转到最后一行
gg 跳转到开始
yy 复制一行
p 粘贴
o 在当前行的下面新建一行
i 编辑
:set nu 显示行号
/关键字 查找关键字 n下一个关键字位置
第五天-awk
1、用awk 打印整个test.txt (以下操作都是用awk工具实现,针对test.txt)
awk '$0' test.txt
2、查找所有包含 ‘bash’ 的行
awk '/bash/' test.txt
3、用 ‘:’ 作为分隔符,查找第三段等于0的行
awk -F ":" '$3=="0" {print $0}' test.txt
4、用 ‘:’ 作为分隔符,查找第一段为 ‘root’ 的行,并把该段的 ‘root’ 换成 ‘toor’ (可以连同sed一起使用)
awk -F : '$1=="root" {print $0}' test.txt | sed -r 's/root/toor/g'
5、用 ‘:’ 作为分隔符,打印最后一段
awk -F : '{print $NF}' test.txt
6、打印列数大于20的所有行
awk -F : 'NF > 20 {print $0}' test.txt
7、查出实时 哪个IP地址连接最多 哪个ip 访问大于 1000次 截取出来
netstat -natlp|grep ESTABLISHED|awk '{print$5}'|awk -F : '{print$1}'|uniq -c|sort -rn|awk '{if($1>1)print $2}'
第六天-find
1.找出/tmp目录下,属主不是root,且文件名不以f开头的文件
find /tmp -type f -not -user root -not -name "^f"
2.查找/etc/目录下,所有.conf后缀的文件
find /etc/ -type f -name "*.conf"
3.查找/var目录下属主为root,且属组为mail的所有文件
find /var -user root -group mail
4.查找/var目录下7天以前,同时属主不为root,也不是postfix的文件
find /var ! -user root ! -user postfix -mtime -7
5.查找/etc目录下大于1M且类型为普通文件的所有文件
find /etc -type f -size +1M -perm 644
6.查找/etc目录下所有用户都没有写权限的文件
find /etc -type f ! -perm 222
**7.查找/目录下最后创建时间是3天前,后缀是.log的文件
find / -type f -name "*.log" -mtime -3
8.查找/目录下文件名包含txt的文件**
find / -type -name "txt"
9.查找/目录下属主是oldboy并且属组是oldboy的文件
find / -type f -user oldboy -group oldboy
10.查找/目录下属主是oldboy但是属组不是oldboy的文件
find / -type f -user oldboy ! -group oldboy
第七天-sed
1、利sed 取出ifconfIg ens33命令中本机的IPv4地址 可以百度扩展 了解即可
ip addr | grep ens |grep inet |sed 's/^.*inet//'| sed 's/\/24.*//'
2、把/etc/passwd 复制到/root/test.txt,用sed打印所有行
cp /etc/passwd /root/test.txt | sed
3、打印test.txt的3到10行
sed -n '3,10p' test.txt
4、打印test.txt 中包含 ‘root’ 的行
sed -n '/root/p' test.txt
5、删除test.txt 的15行以及以后所有行
sed -n '15,$p' test.txt
6、删除test.txt中包含 ‘bash’ 的行
sed -n '/bash/p' test.txt
7、替换test.txt 中 ‘root’ 为 ‘ha’
sed -n 's/root/ha/p' test.txt
8、替换test.txt中 ‘/sbin/nologin’ 为 ‘/bin/login’
sed -n 's#\/sbin\/nologin#\/bin\/login#p' test.txt
9、打印/etc/passwd的奇数行?
sed -n '1~2p' /etc/passwd
10、打印/etc/passwd的偶数行?
sed -n '0~2p' /etc/passwd
11、把/etc/httpd/conf/httpd.conf?件内的Linsten 80改为Listen 8081 sed 完成
sed -n '/Linsten 80/Listen 8081/p' /etc/httpd/conf/httpd.conf
第八天-firewalld
1、查看默认zone
firewall-cmd --get-default-zone
2、修改默认zone
firewall-cmd --set-default-zone=work
3、在public区域添加协议
firewall-cmd --add-service=ftp --zone=public
4、把http协议永久加入到public 区域
firewall-cmd --zone=pubilc --add-service=http --permanent
5、 拒绝某一个IP 访问
firewall-cmd --add-rich-rule="rule family 'ipv4' source address='192.168.0.4/24'"
6、开放端口服务演示
firewall-cmd --permanent --zone=public --add-port=8080/tcp
6.1、删除端口:
firewall-cmd --permanent --zone=public --remove-port=8080/tcp
6.2、永久生效:
firewall-cmd --permanent --zone=public --add-port=8080/tcp --permanent
6.3、批量添加端口:
firewall-cmd --permanent --zone=public --add-port=8080-8089/tcp
7、屏蔽ip和 删除异常ip 查看屏蔽ip:
firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=屏蔽IP reject"
firewall-cmd --permanent --remove-rich-rule ="rule family=ipv4 source address=屏蔽IP reject"
firewall-cmd --lis-rich-rules
8、端口流量转发
检查是否允许伪装IP:
firewall-cmd --query-masquerade
永久允许防火墙伪装ip:
firewall-cmd --add-masquerade --permanent
3000端口流量转发到192.168.100.10的81端口上:
firewall-cmd --add-forward-port=port=3000:proto=tcp:toaddr=192.168.100.10:toport=81 --permanent
第九天
1、查询file.txt 以abc结尾的行
cat file.txt | grep "abc$"
2、删除file.txt文件中的空行
sed -ir '/(^$)/d' file.txt
3、打印file.txt 文件中的第10行
sed -n '10p' file.txt
4、对MySQL数据库test进行备份和恢复
mysqldump -u用户名 -p密码 数据库名字 test > backup.sql
5、在11月份,每天的早上6点到12点中,每隔2个小时执行一次/usr/bin/httpd.sh 怎么实现
crontab -e
* 6-12/2 * 11 * sh /usr/bin/httpd.sh
6、iptables和firewalld 都学习下 禁止 ip 10.10.10.1 访问本地80端口
iptables -I INPUT -s 10.10.10.1/32 -ptcp --dport 80 -j DROP (-l禁止-D允许)
firewall-mcd --permanent --add-rich-rule="rule family="ipv4" source address = "10.10.10.1" port protocol="tcp" port="80" reject" (reject禁止accept允许 也可以remove移除相应规则)
7、查看http的并发请求数及其tcp连接数
netstat -an | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}'
8、统计80端口连接数
netstat -anp | grep -i "80" | wc -l
9、统计已经链接上的,状态为established
netstat -tn | grep "ESTABLISHED" | wc -l
10、查出哪个IP地址连接最多
netstat -an | grep "ESTABLISHED" | grep -Ev "::" | awk '{print $5}' | awk -F : '{print $1}' | uniq -c | sort -rn | awk "NR == 1" | awk '{print $2}'
11、统计apache的access.log中访问量最多的ip
cat access.log |awk '{print $5}' | uniq -c | sort -nr | head -1
12、如何查看占用端口8080的进程
lsof -i:8080
第十天-cron定时任务
1、实战测试每隔3天 夜里2点 执行数据备份
* 02 */3 * * /bin/cp
2、每5分钟用ping命令测试www.wanmei.com网站100次,并将结果保存到/root/network.log
*/5 * * * * ping -c 100 www.wanmei.com >> /root/network.log 2>&1
2>&1 标准错误重定向到标准输出
3、每天凌晨3:05 执行脚本tongji.sh并将输出的信息追加到/dev/null
05 03 * * * sh /usr/local/tongji.sh >> /dev/null 2>&1
4、crontab里0 2 1 /data/postmall/shell/a.sh
每周一凌晨2点会执行a.sh
5、00 22 rm -rf /test/ >>/tmp/log 2>&1
每天晚上22点会清空/test/的目录,并把输入日志和错误信息追加到/tmp/log中
6、50 16 rm -rf /abc/ >>/dev/null 2>&1
每天下午4点50分会清空/abc/的目录,并把结果追加到/dev/null
7、50 17 1 tar zcf ./backup-date +%Y%m%d.tar.gz /data >/dev/null 2>&1
每周一下午5点50份会将/data目录下的数据打包到./backup.tar.gz中间会按时间区分,并把信息导出到/dev/null
8、15 03 6 sh /home/shell/collect.pl >/dev/null 2>&1
每周六凌晨3点15分会执行collect.pl脚本并把信息导入到/dev/null
9、00 00 1 tar zcf /tmp/etc-date +%F.tar.gz /etc
每天的零点零分打包/etc/目录到/tmp/下并按照时间保存
10、00 06-18/3,13 10 sh /opt/backup.sh
10月的6点-18点每隔3个小时,以及下午13点,执行/opt/backup.sh
第十一天
LVS与nginx的区别
LVS用于4层传输层,nginx用于7层应用层
LVS应用广泛几乎支持所有应用负载,而nginx则能对具体的http请求做异步负载,这一点是lvs所不具备的,所以目前常用的是lvs做前端负载,nginx做后端负载,结合使用提高了nginx网络流量带宽集中的瓶颈,也解决了lvs同步负载单一服务器出问题则全网瘫痪的缺陷
DNS轮询的作用?
DNS服务器将解析请求按照A记录的顺序,逐一分配到不同的IP上,这样就完成了简单的负载均衡
主要是为域名提供多个IP地址
递归查询和迭代查询分别是什么意思
递归是查询到最后返回所需要查询的具体内容,而迭代是告诉你下一次查询是找哪个域名服务器查询(也就是递归能查到底,迭代只能查一级)
企业文件目录增量实时同步 删除不同步 工作用inotify+rsync实时同步实现 实现演示下 %100熟练
都是修改inotify或者sersync的配置来监控指定目录下的读 写 更新 新增等操作在backup机器上做同样的操作
在改动配置文件的时候一定要注意相应的细分,比如增 该放到同一个事件,防止rsync多次同步影响效率和速度
公司web 服务器 突然 挂了,或者服务器被攻击了,如何快速解决
首先确定有没有错误代码 没有看日志,或者wershare抓包定位是到哪个IP出问题根据相应的IP定位服务器然后在检查具体的配置
第十二天-数据库
写出工作数据库常用指令
--单表
select * from 表 where 条件 limit 行数
--多表
select * from 表1
join 表2
on 表1=表2
join 表3
on 表2=表3
where 条件
group by 排序条件
公司单机数据库延伸主从架构 实施
主库修改my.cnf开启二进制日志 重启后创建同步用户slave并授予相应权限
从库用主库创建的slave用户登录测试 mysql -uslave -pslave123 -h172.16.0.7
从库开启二进制日志 并重启数据库
从库执行同步语句:change master to master_host="192.168.0.7",
master_user="slave",
master_password="slave123",
master_port=3306,
master_log_file="mysql-bin.000001",
master_log_pos=587;
启动 start slave;
启动完看 show slave \G;主要是看master和slave两个线程状态
主主模式实战演示
在主从的基础上修改my.cnf配置文件为主主配置,双端都重启数据库
从库创建同步用户,主库测试 测完主库进mysql执行同步操作
start slave启动线程后 看 show slave \G;主要是看master和slave两个线程状态
数据库MHA 高可用实施
环境:1主1从1从+mha
三台机器做ssh分发密钥,保证后边便捷操作
mha主:
修改mysql的主配值文件;安装mha的manager管理端和manager客户端,修改mha配置/etc/mha/app1.cnf;server1一般是master机器,server2一般是slave机器,server3一般是mha机器;需要注意好server块的binlog路径要与mysqld的data路径一致,其他路径保证存在,没有的手动创建;ssh以及用户名密码配置要正确;安装nohub启动yum install coreutils
mha从:
修改mysql主配置文件;安装mha的manager客户端,创建对应的mha用户(另外需要一台开启一个虚拟IP 需要与mha的IP漂移脚本的IP一致,网卡信息要写当前网络上已有的网卡)
都做的操作:
主和从都要开启软连接
ln -s /usr/local/mysql-5.7.26/bin/mysqlbinlog /usr/local/bin/mysqlbinlog
ln -s /usr/local/mysql-5.7.26/bin/mysql /usr/local/bin/mysql
做完后
mha主启动:nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
查看集群状态:masterha_check_status --conf=/etc/mha/app1.cnf
数据库架构延伸 实施读写分离 一个主库负责写 一个从库负责读取
主从的基础上找一台做mycat管理服务器
主从:
创建一个mycat授权的用户
mycat配置:
解压后修改mycat的schema和server配置项
schema主要定义逻辑库和真实库的对照,以及接下来server配置的用户名密码(上面主从配置好的授权用户)
server主要配置schema定义的逻辑用户和逻辑库
启动 ./bin/mycat start
查看默认端口8806是否启用
给开发建立一个用户kf 密码Hello88 授权只能select读取权限
7.0
grant select on *.* to kf@'%' identified by "Hello88";
8.0
create user kf@"%" identified by "Hello88"
grant select on *.* to cao@'192.168.0.%';
flush privileges;
数据库备份命令
mysqldump -uroot -p123 -A > /backup/full.sql
面试问道你公司备份怎么做的?
月定时备份全备 故障恢复一般全量+binlog
数据库项目经验:要实战出来 都可以写到自己简历上
项目 1:数据库故障恢复项目: 会出现到简历上
背景环境:
正在运行的网站系统, 数据库版本 5.6.38,数据量 120G , 日业务增长 2M 备份策略:每天 23.00 执行计划备份
故障时间点: :
故障演练:模拟周三上午 10 点删除数据库恢复思路:
1.停止业务,避免数据二次损坏
2.找一个临时库恢复周三之前数据使用全备
3.截取周三 0 点到 9:59 数据转换,转换 sql, 进行恢复临时库
4.测试可用性和完整性
5.使用临时库顶替生产库
6.开启业务
项目2 :MySQL 数据库高可用解决方案项目背景:
在公司故障模拟演练中,发现目前主从复制架构,切换需要较长时间(15-30 分钟)。随着公司对用户体验的提升,目前的架构出现故障时,业务的实时性,已经不能很好的满足需求。所以,向 公司建议在原有架构的基础上进行改造,进一步提升用户体验。
责任职责:
1.负责调研企业主流高可用架构。
2.经过研究选择 MHA 高可用架构。
3.搭建部署 MHA 高可用架构。
4.搭建一主四从集群,一从库为延时从库(3h),一个从库作为级联从库连接到一个只读从库,用来提供数据分析。
项目结果:
通过搭建 MHA 高可用集群,使业务在主库故障情况下,在 15-30 秒业务恢复正常。通过延迟从库,防止逻辑人为的误删。
项目方案 3:Mysql 读写分离架构实施项目背景:
公司业务随着用户不断增加,数据库无法抗住大并发,经常会造成 mysql 锁表情况发生,为了更好提升用户的体验,对数据库架构进行调整
项目实施:
1、在原有的 mysql 主从架构基础,进行调整。
2、新增服务器一台安装 mycat,进行读写分离配置
3、测试环境测试没有问题时候,在业务量低谷的时候,修改代码连接 mycat
4、实现业务读写分离项目结果:
好处:增加数据库服务器,压力随之分摊到几个服务器中,减小数据库压力通过读写分离架构实施,解决用户量大造成数据库有压力问题,业务效率大大提高坏处:硬件成本大 数据库主从问题哈希一致性问题 单点故障问题
第十三天-redis集群
你们为什么使用redis?
数据库主要用的是MySQL,数据库已经支撑不住如此高的并发,于是引入了缓存中间件,市面上的中间件redis和memcached我们有过了解, redis相比memcached来说用拥有更多的数据结构和支持更丰富的数据操作。 所以像我们公司设计复杂的结构和操作,我们选择了redis
内存上redis可以采用hash结构来做key-value 存储,由于其组合式的压缩使其利用率高于memcached
性能上, redis只使用单核,而memcached 可以使用多核,所以平均每一个核上的redis在存储小数据时比memcached性能要高。
数据持久化支持上,redis提供了两种持久化策略,分别是RDB快照和AOF日志,而memcached 不支持数据持久化操作
redis有哪些数据类型
字符串string,字典hash,列表list,集合set , 有序集合 SortedSet,因为公司涉及到高并发,所以还接触过Bloom Filter,以及支持全文搜索的RediSearch等。
redis是怎么做持久化的?
持久化有两种方式RDB和AOF
RDB做镜像全量持久化,AOF做增量持久化。 我们公司一般RDB和AOF会配合起来使用。 在redis实例重启的时候,会使用RDB持久化文件重构内存,在使用AOF重放近期的操作指令来恢复重启前的状态。
当然reids的机制是AOF开启且存在AOF文件时候,优先加载AOF文件。 AOF关闭或者AOF文件不存在的时候,加载RDB文件。
大流量的时候不要开AOF,开RDB即可
如果服务器突然断电,可以使用AOF恢复,AOF日志有sync属性配置,在高性能场景下使用定时sync,比如1s1次,这样即使断电最多丢失1s的数据。
redis集群你们怎么做的?
1) 主从模式,一主多从。虽然redis单机的qps可以达到10W+,但是在某些高访问场景下依然不够用,一般通过读写分离来增加slave,减少主机压力。
这种方式需要用户自行开发主从切换功能,也就是使用哨兵去探测每个实例的健康状况,然后通过指令进行集群状态的改变。 当集群规模变大可以加入类似zk的主动通知功能,降低风险。一般可以维护几千个redis节点。
2) redis cluster是社区提供的亲生集群方案,官方当前推荐的方案, 主要特点是去中心化,不需要proxy代理。主要的用途是实现数据分片(Data Sharding),同样可以实现HA。
redis cluster 采用了hash槽的概念,集群会预先分配16384个槽,并将这些槽分配给具体的服务节点,通过Key进行CRC16(KEY)%16384 运算得到对应的槽是哪一个,从而将读写操作转发到该槽对应的服务节点。当有新的节点加入或者一处的时候,再来迁移这些槽以及对应的数据。 更方便的动态扩容和缩容。
redis有哪些应用场景
1、键过期:缓存,session会话,优惠劵过期
2、列表:排行榜
3、天然计数器:帖子浏览数,视频播放数,评论留言数
4、集合:兴趣标签,广告投放
5、消息队列:ELK
一个字符串类型的值能存储的最大容量是多少?
512M(官网数据)