swarm(Nginx+php)+haproxy+mysql+Discuz论坛搭建

实验环境

ip 服务 备注
192.168.1.11 Docker swarm service(nginx+php) swarm-manager
192.168.1.12 Docker swarm service(nginx+php) node1
192.168.1.13 Docker swarm service(nginx+php) node2
192.168.1.14 mysql+haproxy mysql-haproxy

PMM数据库监控和管理

pmm

PMM数据库监控和管理

PMM相关

PMM(Percona Monitoring and Management),Percona监控和管理

主要为了监控MySQL和MongoDB的性能,专业的数据库监控

其他监控:Lepus(天兔)

​ 1、图形化界面简陋

​ 2、监控项少

​ 3、已停止更新

​ Zabbix

PMM监控:1、web界面比较炫酷

​ 2、监控项多(连接、线程、临时对象、慢查询、主机性能(CPU、MEM、DISK、THREAD))

模拟公司真实环境架构搭建

模拟公司真实环境架构搭建

现要求公司的整体架构达到高可用

实验环境:

client(Ansible):192.168.1.1/192.168.2.2、网关192.168.2.1

透明代理:192.168.1.4(192.168.2.1)

Varnish反向代理:192.168.1.5、网关192.168.1.4

负载均衡+keepalived:192.168.1.6/192.168.1.7

LNMP:192.168.1.8/192.168.1.9

Iscsi共享存储:192.168.1.10

高可用架构结业.png

MySQL+PXC高可用集群(多主)

MySQL高可用—PXC集群

percona xtradb cluster

percona:基于mysql数据库二次开发的数据库产品

xtradb:存储引擎

要搭建pxc集群,需要三台虚拟机。三台虚拟机之间不是主从的模式,而是各自为主,三者属于对等的关系,不分主从,这个叫多主架构

MHA+MySQL高可用

MHA+MySQL高可用

Master High Availability

MHA数据库高可用集群,是一套优秀的最为mysql高可用性环境下故障切换主从的软件,在故障切换的过程中,MHA能够做到在30s自动完成数据可的故障切换,并在切换的过程中最大程度保证数据的一致性,以达到真正意义上的高可用。

MHA的特点:

1.故障转移

2.保证数据的一致性

Haproxy负载均衡web/Mysql群集

Haproxy

Haproxy负载均衡服务器


Haproxy的优点

1、开源免费

2、单进程的工作模式

3、支持拒绝连接,可以防止DDOS攻击

4、支持透明代理

四层负载和七层负载

Nginx/Haproxy/LVS:传输层(四层)负载,基于ip和端口实现,传输的速度非常快,负载不做任何的解析,直接将客户端的请求交给后端服务器,不安全

Ansible-Roles应用---安装MySQL

Ansible-Roles应用—安装MySQL

实验环境

192.168.1.1:Ansible

192.168.1.4:MySQL

192.168.1.5:MySQL

实验目的

使用Ansible的角色功能,安装MySQL服务

Ansible自动化批量部署LNMP

nginx剧本

需要单独在主控端,写一个nginx启动脚本和php测试页面,用来传文件,nginx用copy,php用模板,用copy也行

[root@localhost ~]# vim nginx.yml 
- hosts: dbserver
  remote_user: root
  tasks:
    - name: install nginx
      unarchive: src=/root/nginx-1.11.1.tar.gz dest=/usr/src
    - name: yum install pcre* openssl*
      yum: name=pcre-devel,openssl-devel,gcc,gcc-c++,zlib-devel
    - name: make install nginx
# 以下表示进行shell操作时,先进入/usr/src/nginx-1.11.1目录
      shell: ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-pcre && make && make install
      args:
        chdir: /usr/src/nginx-1.11.1
    - name: lnfile
      file: src=/usr/local/nginx/sbin/nginx dest=/usr/local/sbin/nginx state=link
    - name: create nginx user
      user: name=nginx create_home=no shell=/sbin/nologin state=present
    - name: nginx start script
      copy: src=/root/nginx dest=/etc/init.d/nginx
    - name: xp
      file: path=/etc/init.d/nginx mode=0755
    - name: add system service
      shell: chkconfig --add nginx
    - name: open system auto started
      shell: systemctl enable nginx
    - name: start nginx
      service: name=nginx state=started

[root@localhost ~]# ansible-playbook nginx.yml 

15、备份

备份

概念

备份是将一台服务器的数据,进行复制到另外一台或者多台服务器上的过程,虽然可以通过强化硬件来保证数据安全,但是如果因为宕机出现的数据丢失问题,在没有备份的情况下,无法恢复数据,所以备份可以有效避免数据丢失问题

备份的方式

1、mysqldump

备份库中多表 mysqldump -u user -p密码 要备份的库 要备份的表 表1 表2 > /path

备份多个库 mysqldump -u user -p密码 -B 要备份的库 库1 库2 > /path

option选项: -R:只导出存储过程和函数 -d:只备份表结构,不备份表数据 -t:只备份表数据,不备份表结构 -A:备份所有库 -B:备份多个库

14、日志

MYSQL 日志

概念

Mysql日志记录mysql的日常操作,以及发生的错误信息,不同的日志拥有不同的功能,从日志中可以解决很多问题,比如mysql瓶颈,用户操作信息,修改数据库的信息等等

mysql日志分类

mysql> show variables like 'log_%';
+----------------------------------------+---------------------+
| Variable_name                          | Value               |
+----------------------------------------+---------------------+
| log_bin                                | OFF                 | 是否开启二进制文件
| log_bin_basename                       |                     |
| log_bin_index                          |                     |
| log_bin_trust_function_creators        | OFF                 |
| log_bin_use_v1_row_events              | OFF                 |
| log_error                              | /var/log/mysqld.log |错误日志的路径
| log_output                             | FILE                |日志输出形式
| log_queries_not_using_indexes          | OFF                 |日志是否保存没有使用索引的查询语句
| log_slave_updates                      | OFF                 |是否记录从库更新
| log_slow_admin_statements              | OFF                 |
| log_slow_slave_statements              | OFF                 |
| log_throttle_queries_not_using_indexes | 0                   |
| log_warnings                           | 1                   |是否记录警告记录
+----------------------------------------+---------------------+

1、错误日志:

记录mysql运行时,停止时,所发生的问题

开启错误日志:在/etc/my.cnf中的添加或者查看log-error配置项,如果指定路径会和初始化路径冲突,不写路径默认存放在初始化指定的路径下

13、mysql用户权限

MYSQL用户权限

在mysql中维护了一个存放用户信息的表,user,该表位于mysql数据库中,用户之所以能登录mysql是因为匹配了该表中的用户信息,才能登录成功,否则登录失败

SELECT * FROM mysql.user\G用来查看用户权限的表

一旦删除此表,数据库将会瘫痪

1、用户列

包含user,host,password,使用用户,用户有权限的主机名,和密码(5.7.20之后使用authentication_string保存密码),当用户登录mysql时,之后匹配用户列的内容才能成功登录mysql,user和host列属于联合主键,用来确定用户身份的唯一性

2、权限列

规定了用户只能在给定权限的范围内进行活动,如果该用户没有权限,将不能执行指定的命令,在user表中,如果用户拥有该权限则该权限为Y,如果没有则为N,在priv权限列中,所有的字段使用ENUM枚举进行控制,只有Y和N两个选项,不存在空值

12、触发器

触发器

概念

属于一个特殊的存储过程,属于嵌入到mysql的一段程序,触发器有触发事件来接触,触发事件包含(insert、update、delete),一旦触发触发器,数据则会执行触发器中预先设置好的内容,不需要手动执行,整个过程全部自动完成

触发器属于隐性触发的过程,可能会因为触发触发器而造成的数据表的数据修改,而造成的与原数据不匹配的问题,所以生产环境中将会使用存储过程去替代触发器完成各项任务,在一个表中只能出现两个触发器,且触发时机一个为before,一个为after

11、事务

事务

概念

事务是多条sql语句的集合,要么都成功,要么都失败,且事务是基于存储引擎实现的。

创建的事务都是基于DML语言来操作的


特点

1、原子性(atomicity):一个事务必须被视为一个不可分割的单元

2、一致性(consistency):数据库从一种状态切换到另一张状态 如:银行转账过程中,来回转金额的数量不会改变

3、隔离性(isolation):事务在提交之前对其他事务不可见

4、持久性(durablity):一旦事务提交,永久保存到数据库

9、视图

视图

概念

视图在mysql5.0版本之后退出,主要用于保证数据的安全性

属于一张虚拟表,是占用极小空间的逻辑存在的表,视图不存放数据,所有的数据来源于真实表。

视图可以从一个或者多个表中到处,来源于一个表叫做单表视图,来源于多个表为多表视图


视图的优点

简单化

安全性

逻辑结构独立性:可以帮助用户屏蔽因为真实表结构变化带来的影响

10、MYSQL函数

Mysql函数

运算函数

1、绝对值函数

ABS(x):用于给x求绝对值,一个负数的绝对值等于它的相反数,一个正数的绝对值等于它本身

例:

mysql> SELECT ABS(10.5);
+-----------+
| ABS(10.5) |
+-----------+
|      10.5 |
+-----------+
1 row in set (0.00 sec)

mysql> SELECT ABS(-10.5);
+------------+
| ABS(-10.5) |
+------------+
|       10.5 |
+------------+
1 row in set (0.00 sec)

2、圆周率函数

PI():周长和直径的比值





正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0