• 进程,虚拟环境,Mysql主从


    进程

    查看进程 ps(类似windows任务管理器)

    man 1 ps # 查看命令文档
    ps[options]
    
    1   UNIX options, which may be grouped and must be
               preceded by a dash.
    2   BSD options, which may be grouped and must not be used
               with a dash.
    3   GNU long options, which are preceded by two dashes
    

    支持的命令格式

    • unix格式: -h -e
    • BSD格式:a x u
    • GNU长格式:--help

    选项

    [root@taosiyu~]ps
     `
    a  # 所有的终端 
    ps a
    
    x # 包括不连接终端的进程
    u # 显示进程详细信息 
    f # 显示进程树,进程的从属关系
    k             # 指定排序方式,默认升序k后加-降序
    ps aux k%cpu  # 默认按照cpu升序排列
    ps aux k-%cpu # 降序排列
    
    o             # 显示指定字段,不能和u同时使用
    ps o pid,%cpu,cmd
    ps ax o pid,%cpu,cmd
    
    L 
    # 获取o支持的选项,nice字段代表执行顺序,数值越小执行越先,
    # psr cpu编号 STAT状态 
    # %cpu cpu的占用率 %men内存占用率
    
    -L # 显示线程 LWP
    
    -e # 相当于ax
    -f # 显示详细信息,相当于u
    -F # 显示更详细的信息
    -H # 显示树状结构
    -p # 根据pid寻找该进程状态
    -U # 根据用户查找,可以监控用户
    
    常用选项: aux -ef -eFH
    
    ps -ef|grep sshd # 查找关于某项的进程
    

    ps默认显示格式

    PID TTY TIME CMD
    45246 pts/0 00:00:00 bash
    50768 pts/0 00:00:00 ps
    pid 终端 当前命令占用cpu时间 命令

    u显示详细信息格式

    USER PID %CPU %MEN VSZ RSS TTY STAT START TIME COMMAND
    root 1 0.0 0.2 193816 5288 ? Ss Aug29 0:20 /usr/lib/systemd/systemd --
    root 2 0.0 0.0 0 0 ? S Aug29 0:00 [
    用户 pid 用户占用率 内存占用率 虚拟内存(程序认为可获得) 常驻内存(实际内存) 终端 状态 启动时间 时间命令

    根据名称来查询进程

    pidof name # 根据名称
    
    pidof python
    1169   825
    -s: 仅返回一个进程号;
    -c: 仅显示具有相同"root"目录的进程;
    -x: 显示由脚本开启的进程;
    -o: 指定不显示的进程ID
    

    系统工具

    uptime

     # 可以查看系统是否健康
     09:18:18    up 15:14,       2 users,       load average: 0.00, 0.01, 0.05
     当前时间  当前服务器运行时长  当前的在线用户数    cpu的负载:1分钟负载,5分钟负载,15分钟负载 
     cpu平均负载:在特定时间之内cpu运行的平均进程数,不超过cpu核心数的2倍认为良好
    

    top(实时)

    top- 14:26:49 up 15:14 2users load average: 0.00, 0.01,0.05 l显示与隐藏首部信息
    首部信息 当前时间 当前服务器运行时长 当前的在线用户数 cpu负载:1min负载,5min负载,15min负载
    Tasks: 217 total 1running, 216sleeping, 0stoped, 0zombie
    任务 进程总数 运行数 睡眠数 停止数 僵尸进程
    %Cpu(s): 0.0us, 0.0sy, 0.0ni 99.9 id,0.0wa,0.0si,0.0st cpu分别显示 1(数字)
    cpu占用 用户空间 系统空间 nice值 空闲,wait时间,硬中断,软中断,虚拟机偷走的时间
    KIB Mem 1865308 total, 146820 free, 812016 used, 906472 buff/cache m切换内存的显示方式
    内存信息 总内存 空闲内存 已使用内存 Buffer cache/Page cache
    缓冲区缓存和页面缓存
    排序:默认是cpu的占用率 P 切换成内存 M 切换成CPU占用时间 T
    KiB Swap: 2097148 total, 2088180 free, 8968 used 761920 avail Mem
    虚拟内存(从硬盘划分出来,内存不够时调用)orcle安装时,要求系统中必须有swap空间 m查看内存信息
    # 操作,显示信息操作详见表格最后一栏
    退出:q
    修改刷新频率: s time # 默认是三秒
    杀死进程: k          #  默认是杀死第一个
    保存文件: W          # 写入 .toprc
    选项:-d time         # 指定刷新时间
    		-b          # 显示所有信息
    		-n num      # 刷新num次退出**
    

    htop

    epel源
    # 下载
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    # 安装
    yum install -y htop
    # 调整样式
    F2
    # 杀掉进程
    k
    

    性能分析

    free内存

    -b 以字节形式
    -k kb
    -m mb
    -h 人类易读方式
    -c num 刷新num次
    

    vmstat

    vmstat [options] [delay [count]]
    vmstat 1 3 # 每秒刷新一次,刷新三次退出
    [root@taosiyu test] # vmstat
    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
     1  0   8968 144792     76 909228    0    0    12     1   23   22  0  0 100  0  0
     
    procs:
    r:正在运行的进程个数
    b:阻塞队列的长度
    
    memory:
    swap:虚拟内存大小
    free:空闲物理内存大小
    buff:用于缓存大小
    cache:用于chache的大小
    
    swap:
    si:从磁盘交换到内存的数据速率(kb/s) # 读取速度
    so:从内存到磁盘的数据速率(kb/s)     # 写入速度
    
    io:
    bi:从磁盘读取到系统的速率(kb/s)     # 读取速度    
    bo:从系统写入到磁盘的速率(kb/s)     # 写入速度
    
    system:
    in:中断频率
    cs:进程之前切换的频率
    
    
    cpu:
    us:用户空间
    sy:系统空间
    id:cpu空闲时间
    wa:等待时间
    st:虚拟机偷走的时间
    

    iostat

    查看磁盘读写速度

    iostat num
    

    dstat 查看所有

    yum instattl dstat
    # dsk 磁盘 paging 配置页
    
    dstat # 显示所有部分
    -c  # CPU
    -d  # 硬盘
    -n  # 网络
    -m  # 内存 
    -p  # 进程
    -r  # IO
    -swap # swao空间
    
    --top-cpu  # 显示占用cpu最多的进程
    --top-io   # 显示占用io最多的进程
    --top-mem  # 显示占用内存最多的进程
    --tcp      # 显示tcp的信息
    --udp      # 显示udp的信息
    

    iftop显示网卡的流量

    进程的管理工具

    kill(64个命令)

    # 向进程发送信号,实现对进程的管理,每个信号,对应不同的值也对应不同的含义.不区分大小写
    
    # 查看可用信号kill -l
    1)sighub  不需要关闭程序,重新加载配置文件
    2)signint 终止进程,相当于ctrl+c
    9)sigkill 强制杀死进程 
    15)SIGTERM 终止正在运行的进程
    18)SIGCONT 继续  # 可以和-19配合使用继续后台休眠的程序
    19)SIGSTOP 后台休眠
    # 使用方法
    1.ps -ef|grep '进程名称' # 搜索想知道进程的id号
    2.kill -信号序号 进程号
    
    按照pid查找: pid -n pid
    按照名称: killall -n name   pkill -n name # 用名称执行的操作范围比较大,方便但小心使用
    killall -9 sshd 
    

    作业管理

    • 前台作业:一直占用终端的作业
    • 后台作业:不占用当前终端的作业
    让作业运行于后台:
    对于启动中     # ctrl + z 
    对于没有启动的  # command & 
    # ping www.baidu.com & 也会输出到终端
    
    • 脱离终端
    1.nohup
    nohup command &>/dev/null &
    # 此条会多显示一条信息,会生成一个文件写入文件中
    nohup ping www.baidu.com &>/dev/null &
    # 不显示提示信息,会生成一个文件写入文件中
    tail -f nohup.out # 追踪显示新追加到nohup里的内容
    # 终止进程时依然是杀死command
    
    2.screen
    yum install screen
    
    screen ping www.baidu.com
    # 此时关掉终端仍在运行
    screen -list
    # 查看所有的screen窗口
    -r 进入窗口
    # 如果有多个可以输入pid选择进入哪个
    screen -r pid
    

    安全

    防火墙

    公司一般采用硬件防火墙,几乎不用该防火墙
    硬件防火墙:1.绿盟2.深信服3.启明星辰4.飞塔5.思科6.华为7.华三
    
    4表5链
    
    iptables    # 防火墙
    iptables -L # 查看防火墙信息,默认查看链 input output
    iptables -F # 清空防火墙
    systemctl disabled friewalld # 开机不启动
    systmectl stop friewalld     # 关闭防火墙
    

    selinux

    美国国家安全局
    
    配置文件下 vim /etc/selinux/config
    SELINUX=disabled
    # 重启服务,永久生效
    
    setenforce 0 # 临时生效,改完状态为第二个等级
    getenforce   # 查看selinux状态
    
    红帽证书: 1.rhcea 2.rhce 3.rhca
    思科证书: 1.ccnp 2.ccie 3.ccia
    

    编译后的软件如果想删除,直接删除编译生成目录即可

    虚拟环境

    python3默认支持虚拟环境
    
    pip3 list 查看安装包
    
    1.安装
    pip3 install virtualenv -i https://pypi.douban.com/simple
    
    2.创建虚拟环境
    virtualenv --help   # 查看虚拟环境的操作
     --no-site-packages DEPRECATED. Retained only for backward compatib
     # --不推荐使用任何网站包  已弃用。仅为向后兼容保留
     # 解释:创建一个全新的python环境,不放在第三方包里 
                        # lib > site-packpages 第三方包
     --python           # 指定以哪个python虚拟环境进行创建
     操作:
     virtualenv --no-site-packages django_tao
     
    3.进入虚拟环境
      source django_tao/bin/activate # 进入虚拟环境
      # source envdir/bin/activate
      echo $PATH # 此时打印环境就在djngo_tao里 
      pip3 install django==1.11 -i https://pypi.douban.com/simple
      
    4.退出虚拟环境
      deactivate
      
    5.确保环境一致 # 将windows安装的东西导入linux系统中
      # 在windows的cmd上执行如下命令:将windows上安装的包做快照
      pip freeze > requirement.txt
      将requirement.txt传到linux中,切换虚拟机
    6.安装
      # 在虚拟机内
      pip install -r requirement.txt -i https://pypi.douban.com/simple
      # 逐行安装
    

    虚拟环境管理工具

    virtualenvwrapper

    # 为了解决虚拟环境管理的问题,因为虚拟环境可以在任何目录下创建
    1.安装
    pip3 install virtualenvwrapper -i https://pypi.douban.com/simple
    vim ~/.bashrc
    2.修改文件
    vim ~/.bashrc
    export WORKON_HOME=/envdir   
    # 设置virtualenv的同一管理目录,以后虚拟环境只能正在envdir目录下
    export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' 
    # 添加virtualenvwraaper的参数,生成干净隔绝的环境 
    export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3
    # 指定python解释器
    source /opt/python36/bin/virtualenvwrapper.sh
    # 执行virtualenvwrapper安装脚本
    3.加载~/.bashrc
    source ~/.bashrc
    4.创建环境
    mkvirtualenv django_tao 创建并切换
    5.进入虚拟环境
    workon name
    6.切换当前虚拟环境的文件夹
    cdvirtualenv
    7.切换到当前虚拟环境的第三方包的文件夹
    cdsitepackages
    8.退出
    deacticate
    9.列出当前管理的虚拟环境
    lsvirtualenv
    10.列出当前虚拟环境的第三方包
    lssitepackages
    11.删除虚拟环境
    rmvirtualenv django20^C # 必须要退出才能删除
    

    Mysql

    mariadb是mysql的分支

    可以直接在官方网站下载

    下载

    wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar
    

    解压

    tar xf MySQL-5.6.44-1.el7.x86_64.rpm-bundle.tar
    

    安装

    yum install -y *.rpm  # 下载5.7
    # 默认安装目录:/var/lib/mysql
    
    # 配置文件
    vim /etc/my.cnf
    # 文件下配置
    datadir=/mydata/mysql # 数据库文件夹
    socket=/mydata/mysql/mysql/mysql.sock
    设置
    [mysql]
    socket=/mydata/mysql/mysql/mysql.sock
    
    # 创建刚才配置的目录
    mkdir -p /mydata/mysql  
    # 把 mysql账号 设置有读写权限
    chown mysql -R /mydata/mysql
    
    # 日志文件
    /var/log/mysqld.log
    

    报错信息:

    2019-08-30T11:18:22.976635Z 0 [Warning] Can't create test file /mydata/mysql/localhost.lower-test
    2019-08-30T11:18:22.976687Z 0 [Note] /usr/sbin/mysqld (mysqld 5.7.27) starting as process 2788 ...
    2019-08-30T11:18:22.980289Z 0 [Warning] Can't create test file /mydata/mysql/localhost.lower-test
    2019-08-30T11:18:22.980338Z 0 [Warning] Can't create test file /mydata/mysql/localhost.lower-test
    
    # 解决办法:
    setenforce 0
    

    重置密码

    默认密码:
    grep 'pass' /var/log/mysqld.log
    # cat .mysql_secret现在版本不在这里面 
    # 这个密码,登陆一次后必须重新设置密码
    mysql_secure_installation
    
    输入root密码
    是否要修改密码
    是否要修改root密码(大小写、数字、特殊字符)
    是否要删除匿名用户
    是否禁止root远程登录
    是否要删除test数据库
    是否要刷新表的权限
    
    systemctl start mysqld
    # 这里可以用ss查看有没有3306端口号
    
    setenforce 0 
    # 如果起服务起不来 可以用ss -anlp查看是否端口冲突,mysql默认端口3306
    

    密码校验规则

    # 设置密码的校验规则
    mysql > set global validate_password_policy=0;
    0 校验级别最低,只校验密码的长度,长度可以设定.
    1 必须包裹大写字母,小写字母,数字,特殊字符.
    2 必须满足上面两条,并且对于密码中任意连续的4个(或者4个以上) 字符不能是字典中的单词.
    
    # 修改密码的最短长度
    mysql > set global validate_password_length=3; 修改密码的最短长度
    

    创建用户

    create user 'username'@'ip' identified by 'password'
    全部ip则是%
    

    查看权限

    show grants;
    # 如果格式不会 help grants
    

    用户授权

    # 给账号授权
    mysql > grant all on *.* to 'eva'@'%' identified by 'passwd';
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    mysql > flush privileges;	# 刷新使授权立即生效
    Query OK, 0 rows affected (0.00 sec)
    

    Mysql 主从

    zc

    主服务器配置如下

    # 纯净干净的情况下做主从
    # 配置文件
    vim /etc/my.cnf
    server-id=1
    log-bin=/mydata/log/master-bin        # 启动binlog日志
    sync_binlog=1                         # 确保主从复制事务的安全
    # 常见配置的文件夹
    mkdir /mydata/log
    # 给文件夹设置权限
    chown mysql -R /mydata/
    systemctl restart mysqld              # 重启服务
    
    # 有数据的情况下可以用数据备份
    #语法:
    # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql
    #示例:
    #单库备份
    mysqldump -uroot -p123 db1 > db1.sql
    mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql
    #多库备份
    mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql
    #备份所有库
    mysqldump -uroot -p123 --all-databases > all.sql
    
    # 从服务器在此练习中为了方便可以复制一个服务器暂做练习
    

    主服务器执行如下sql

    mysql > grant replication slave on *.* to 'slave'@'192.168.21.131' identified by 'password';
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.01 sec)
    
    show master statusG
    # grant replication '用户名' on *.* to 'slave'@identified by '密码'
    

    从服务配置如下:

    vim /etc/my.cnf
    
    server-id =12
    relay_log =/mydata/log/slave-log
    sync_binlog = 1
    # 只读
    read-only=ON
    

    从服务器执行如下sql

    CHANGE MASTER TO
      MASTER_HOST='master2.example.com',  # 主服务器ip 
      MASTER_USER='replication',          # 用户名
      MASTER_PASSWORD='password',         # 密码
      MASTER_PORT=3306,                   # 端口
      MASTER_LOG_FILE='master2-bin.001',  # 此处填写主服务器的log文件
      MASTER_LOG_POS=4,                   # 此处写主服务器的Position
      MASTER_CONNECT_RETRY=10;            # 监控主服务器的时间
    # 连接主库
    change master to master_host='192.168.21.128',master_user='slave',master_password='1234';
    # 启动进程
    start slave;
    # 查看状态
    show slave statusG
    
    # Slave_SQL_Running: Yes 
    # Slave_IO_Running: Yes
    # 看到这两条状态即代表成功
    
    CHANGE MASTER TO
      MASTER_HOST='192.168.26.128',  
      MASTER_USER='slave',          
      MASTER_PASSWORD='1234',         
      MASTER_PORT=3306,                   
      MASTER_LOG_FILE='master-bin.000002',  
      MASTER_LOG_POS=603,                   
      MASTER_CONNECT_RETRY=10;            
    

    问题:

    Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
    # 查看uuid
    [root@taosiyu ~]#cat /mydata/mysql/auto.cnf
    [auto]
    server-uuid=23204da4-cbcb-11e9-b26b-000c29397cf8
    
    # 解决办法:
    rm -rf /mydata/mysql/auto.cnf
    systemctl restart mysqld
    
  • 相关阅读:
    angular $apply()以及$digest()讲解1
    AngularJs + Bootstrap
    angular service讲解
    末班方法代码实战和总结
    JS基础学习1——什么是基础js类和原型?
    背景图片background-size兼容ie8以下浏览器解决
    magento2 客户端模式less样式修改。
    git贡献代码流程
    React模板
    获取iframe src中参数
  • 原文地址:https://www.cnblogs.com/taosiyu/p/11440554.html
Copyright © 2020-2023  润新知