2016年10月

MySQL高可用和高可扩展

1:分区

  • 分区表原理:

创建表时使用partition by子句定义每个分区存放的数据,执行查询时,优化器会根据分区定义过滤那些没有我们需要数据的分区,这样查询只需查询所需数据在的分区即可。

  • 分区目的:

是将数据按照一个较粗的粒度分在不同的表中,这样可以将相关的数据存放在一起,而且如果想一次性删除整个分区的数据也很方便

  • 适用场景

1:表非常大,热点数据和历史数据。2:分区表更易维护,可以对独立的分区进行独立的操作。3:分区表的数据可以分布在不同的机器上,从而高效使用资源。4:避免某些特殊的瓶颈。5:可以备份和回复独立的分区。

  • 限制

1:一个表最多只能有1024分区。2:5.1版本中,分区表达式必须是整数,5.5可以使用列分区。3:分区字段中如果有主键和唯一索引列,那么主键列和唯一列都必须包含进来。4:分区表中无法使用外键约束。5:需要对现有表的结构进行修改。6:所有分区都必须使用相同的存储引擎。7:分区函数中可以使用的函数和表达式会有一些限制。8:某些存储引擎不支持分区。

2:分库分表

  • 工作原理:通过一些HASH算法或者工具实现将一张数据表垂直或者水平进行物理切分。
  • 适用场景

1:单表记录条数达到百万或千万级别时。2:解决表锁的问题。

  • 分表方式

水平分割:分割后可以降低查询时需要读的数据和索引的页数,同时也降低了索引的层数,提高查询速度
使用场景:1:表中的数据本身就有独立性,例如表中分别记录各个地区的数据或者不同时期的数据,特别是有些数据常用,有些不常用。2:需要把数据存放在不同介质上
水平分表缺点:1:给应用增加复杂度,通常查询时需要多个表明,查询所有数据都需UNION操作。2:在许多数据库应用中,这种复杂性会超过它带来的优点,查询时会增加读一个索引层的磁盘次数


垂直分表:
工作原理:把主键和一些列放在一个表,然后把主键和另外的列放在另一个表中
使用场景:1:一个表中的常用列和不常用列。2:可以使数据行变小,一个数据页能存储更多的数据,查询时减少I/O次数
缺点:管理冗余列,查询所有数据需要JOIN操作

3:MySQL的复制原理及负载均衡

  • 主从复制工作原理:在主库上把更改记录到二进制日志binlog;从库将主库的日志复制到自己的中继日志;从库读取中继日志中的事件,将其重放到从库数据中
  • 解决的问题:

1:数据分布:在不同的地理位置分布数据备份;负载均衡,降低单个服务器的压力;高可用和故障切换,帮助应用程序避免单点失败;升级测试,可以使用更高版本的MySQL作为从库测试

linux常用的命令

1:列举 ls 命令所在路径:/bin/ls 执行权限:所有用户

  • ls -l长格式显示
  • ls -a显示所有文件(包含隐藏文件)
  • ls -hl显示文件大小
  • ls -d显示目录本身

2:提示符

[root@localhost src]#

  • # 超级用户
  • $ 普通用户

3:文件目录操作相关命令

  • cd 切换目录 命令所在路径:shell内置命令 执行权限:所有用户
  • pwd 显示当前所在目录 命令所在路径:/bin/pwd 执行权限:所有用户
  • mkdir 创建目录 命令所在路径:/bin/mkdir 执行权限:所有用户 mkdir -p 11/22/33/44 递归建立目录
  • rmdir 删除目录,只能删除空目录 命令所在路径:/bin/rmdir 执行权限:所有用户
  • touch 创建文件 命令所在路径:/bin/touch 执行权限:所有用户
  • rm 删除文件-rf 文件名 -r 删除目录 -f 强制 命令所在路径:/bin/rm 执行权限:所有用户
  • cat 查看全部文件内容-n 列出行号 命令所在路径:/bin/cat 执行权限:所有用户
  • more 分屏显示文件内容 命令所在路径:/bin/more 执行权限:所有用户 空格向下翻页 b 向上翻页 q 退出
  • head 显示文件前10行head -n 行数 文件名 指定显示文件前n行 命令所在路径:/usr/bin/head 执行权限:所有用户 tail相对
  • ctrl+c 强制终止 ctrl+l 清屏
  • ln 软链接文件ln -s 源文件 目标文件 文件名都必须写绝对路径 命令所在路径:/bin/ln 执行权限:所有用户
  • cp 复制cp 源文件 目标位置 命令所在路径:/bin/cp 执行权限:所有用户
  • mv 剪切或改名 mv 源文件 目标位置 命令所在路径:/bin/mv 执行权限:所有用户
  • linux常见目录:

/ 根目录
/bin 命令保存目录(普通用户就可以读取的命令)
/boot 启动目录,启动相关文件
/dev 设备文件保存目录
/etc 配置文件保存目录
/home 普通用户的家目录
/mnt 系统挂载目录
/media 挂载目录
/root 超级用户的家目录
/tmp 临时目录
/sbin 命令保存目录(超级用户才能使用的目录)
/proc 直接写入内存的
/usr 系统软件资源目录 /usr/bin/ 普通用户 /usr/sbin/超级用户
/var 系统相关文档内容 /var/log/ 系统日志位置

4:权限管理

权限位:-rw-r--r-- 1 root root 0 08-11 01:45 aa
文件类型:- 普通文件 d 目录文件 l 链接文件
属主权限u=user 属组权限g=group 其他人权限o=other

  • chmod 修改权限 命令所在路径:/bin/chmod 执行权限:所有用户 change the permissions mode of a file
chmod  u+x  aa        aa文件的属主加上执行权限
chmod  u-x  aa
chmod  g+w,o+w  aa
chmod  u=rwx  aa
chmod  755  aa        
chmod  644  aa
  • chown 属主和属组 命令所在路径:/bin/chown 执行权限:所有用户 change file ownership
chown  用户名  文件名        改变文件属主
chown  user1  aa        user1必须存在
chown  user1:user1  aa    改变属主同时改变属组
useradd  用户名             添加用户
passwd  用户名            设定用户密码    

5:帮助命令

  • man 查看命令的帮助 命令所在路径:/usr/bin/man 执行权限:所有用户
  • 命令 --help 查看命令的常见选项

6:查找命令

  • whereis 查找命令的命令,同时看到帮助文档位置 命令所在路径:/usr/bin/whereis 执行权限:所有用户
  • find 搜索命令 命令所在路径:/usr/bin/find 执行权限:所有用户
按照文件名查找
find  查找位置   -name  文件名
find  /  -name  aabbcc    按照文件名查找 -iname 不区分大小写

按照用户
-user  用户名 按照属主用户名查找文件
-group 组名 按照属组组名查找文件
-nouser 找没有属主的文件

按照文件类型  权限  文件大小    
-type 类型 按照文件类型查找 f:普通 d:目录 l:链接
find   /root  -perm  644按照权限查找
-size     -5k     +5k    k  M  G
  • grep “字符串” 文件名 查找符合条件的字串行 命令所在路径:/bin/grep 执行权限:所有用户
grep  -i  “root”  /etc/passwd
-v 反向选择
-i 忽略大小写
  • | 管道符
命令1  |  命令2    命令1的执行结果,作为命令2的执行条件
cat  文件名  |  grep  “字串” 提取含有字符串的行
grep  “字符串”  文件名
ls  -l  /etc  |  more                        分屏显示ls内容

7:压缩和解压缩

.gz .bz2 linux可以识别的常见压缩格式
.tar.gz .tar.bz2 常见的压缩和打包命令

  • tar -zcvf 压缩文件名 源文件

tar -zcvf aa.tar.gz aa -z 识别.gz格式 -c: 压缩 -v:显示压缩过程 -f:指定压缩包名

  • tar -zxvf 压缩文件名 解压缩同时解打包
tar  -zxvf  压缩文件名    解压缩同时解打包
tar  -jcvf  压缩文件名  源文件    压缩同时打包
tar  -jcvf  aa.tar.bz2  aa
tar  -jxvf  aa.tar.bz2    解打包同时解压缩
查看不解包
tar  -ztvf  aa.tar.gz    查看不解包
tar  -jtvf  aa.tar.bz2
-t  只查看,不解压
tar -jxvf root.tar.bz2 -C /tmp/    指定解压缩位置

8:关闭和重启命令

  • shutdown -h now 没有特殊情况,使用此命令 -h 关机 -r 重启 命令所在路径:/sbin/shutdown 执行权限:root
  • reboot 命令所在路径:/sbin/reboot 执行权限:root

9:网络命令

  • ifconfig 查询本机网络信息 命令所在路径:/sbin/ifconfig 执行权限:root
  • ping 测试网络连通性 命令所在路径:/bin/ping 执行权限:所有用户 ping -c 次数 ip 探测网络通畅