images\cherry_red.png1 实训二前期LNMP简易架构
      images\cherry_blue.png1.1 php server安装
      images\cherry_blue.png1.2 安装初始化数据库
   images\cherry_red.png2 Mysql数据库
      images\cherry_blue.png2.1 Mysql5.7安装
         images\cherry_orange.png2.1.1 rpm安装
         images\cherry_orange.png2.1.2 yum安装
         images\cherry_orange.png2.1.3 源码安装
         images\cherry_orange.png2.1.4 编译好的非rpm包安装
         images\cherry_orange.png2.1.5 my.cnf常见选项
      images\cherry_blue.png2.2 Mysql基础
         images\cherry_orange.png2.2.1 MySql数据库操作
         images\cherry_orange.png2.2.2 MySql数据类型
            images\cherry_cyan.png2.2.2.1 整型
            images\cherry_cyan.png2.2.2.2 浮点数和定数
            images\cherry_cyan.png2.2.2.3 字符串类型
            images\cherry_cyan.png2.2.2.4 日期和时间类型
            images\cherry_cyan.png2.2.2.5 字段修饰和约束
            images\cherry_cyan.png2.2.2.6 业务建表练习
         images\cherry_orange.png2.2.3 MySql表操作
         images\cherry_orange.png2.2.4 MySql体系结构
         images\cherry_orange.png2.2.5 MySql存储引擎
      images\cherry_blue.png2.3 MySql操作
         images\cherry_orange.png2.3.1 MySql数据操作
         images\cherry_orange.png2.3.2 MySql单表查询
         images\cherry_orange.png2.3.3 MySql多表查询
         images\cherry_orange.png2.3.4 MySql存储过程与函数
      images\cherry_blue.png2.4 MySql操作-2
         images\cherry_orange.png2.4.1 MySql安全机制
         images\cherry_orange.png2.4.2 MySql日志管理
         images\cherry_orange.png2.4.3 MySql复制概述
         images\cherry_orange.png2.4.4 主从同步
      images\cherry_blue.png2.5 最基本sql语句及主从架构
      images\cherry_blue.png2.6 MyCat中间件
         images\cherry_orange.png2.6.1 部署Mycat
         images\cherry_orange.png2.6.2 配置读写分离
            images\cherry_cyan.png2.6.2.1 安全的读写分离
         images\cherry_orange.png2.6.3 XML语法格式
         images\cherry_orange.png2.6.4 mycat 分表分库
      images\cherry_blue.png2.7 Mysql MHA
         images\cherry_orange.png2.7.1 MHA-部署
         images\cherry_orange.png2.7.2 MHA-故障切换VIP透明
            images\cherry_cyan.png2.7.2.1 VIP切换脚本内容
            images\cherry_cyan.png2.7.2.2 VIP-手动在线切换脚本
         images\cherry_orange.png2.7.3 MHA+Mycat高可用Mysql读写分离
         images\cherry_orange.png2.7.4 MHA+VIP+Mycat
         images\cherry_orange.png2.7.5 MHA-故障切换邮件报警
         images\cherry_orange.png2.7.6 自动配置Slave主机
   images\cherry_red.png3 实验
      images\cherry_blue.png3.1 mysql授权问题
      images\cherry_blue.png3.2 1.单节点数据库
      images\cherry_blue.png3.3 2.主从同步
      images\cherry_blue.png3.4 3.实验(高可用)
         images\cherry_orange.png3.4.1 高可用keepalived
            images\cherry_cyan.png3.4.1.1 keepalived install
      images\cherry_blue.png3.5 4.实验(高可用+大并发)
         images\cherry_orange.png3.5.1 HAproxy代理
      images\cherry_blue.png3.6 4.实验(mycat-读写分离)
         images\cherry_orange.png3.6.1 mycat安装部署
         images\cherry_orange.png3.6.2 读写分离高可用
         images\cherry_orange.png3.6.3 mycat管理端口命令
      images\cherry_blue.png3.7 5.双主双从-读写分离-高可用
      images\cherry_blue.png3.8 6.mycat分库操作
      images\cherry_blue.png3.9 7.mycat分表
      images\cherry_blue.png3.10 8.mycat分库分表之下实现读写分离
   images\cherry_red.png4 Shell脚本编程
   images\cherry_red.png5 Zabbix监控
      images\cherry_blue.png5.1 zabbix设置邮件报警--自定义报警媒介
      images\cherry_blue.png5.2 zabbix解决中文界面乱码问题
      images\cherry_blue.png5.3 ziabbix自带的template Linux OS
      images\cherry_blue.png5.4 zabbix-agent自定义收集数据
      images\cherry_blue.png5.5 zabbix监控Nginx性能
      images\cherry_blue.png5.6 综合配置
      images\cherry_blue.png5.7 实验:监控nginx端口实现告警
   images\cherry_red.png6 ELK日志分析
      images\cherry_blue.png6.1 PS
      images\cherry_blue.png6.2 es-head插件安装
      images\cherry_blue.png6.3 安装filebeat nginx日志模板


主从同步,又称为 AB 复制 ############################

复制的好处有三方面:
1,如果主库出现问题,可以快速切换到从库提供服务。
2,可以在从库上执行查询操作,降低主库的访问压力。
3,可以在从库上执行备份,以避免备份期间影响主库的服务。


异步复制 半同步复制完全同步复制

在MySQL5.5之前,MySQL的复制是异步操作,即主库的更新操作不关心是否成功复制到了从库,
只要主库的数据更新完成,就认为数据更新成功。因此主库和从库的数据之间存在一定的延迟,有数据丢失的隐患。

为了解决这个问题,从 5.5 开始引入了 半同步复制 ,当主库执行完commit提交操作后,并从 其中一个从库 上接受到Binlog事务并成功写入中继日志后,
主库才返回 commit 操作成功给客户端。

半同步复制保证了事务成功提交后,至少有两份日志记录,一份在主库的 Binlog 日志上,另一份在至少一个
从库的中继日志上,从而进一步保证了数据的完整性。






架设基础的 AB 主从复制 ( Mysql 5.7.24 版本 ) ====================================


images\31-1.png


1. 在主库上把数据更改(DDL DML DCL)事件 记录到二进制日志(Binary Log)中。
2. 备库 I/O线程 将主库上的日志复制到自己的中继日志(Relay Log)中。
3. 备库 SQL线程读取中继日志中的事件,将其重放到备库数据库之上。


images\31-2.png


一、 主服务器
1.vim /etc/my.cf
bin-log=/var/lib/mysql/mysql-bin
server-id=1
query_cache_type=OFF
binlog-ignore-db=mysql
binlog-ignore-db=test
binlog-ignore-db=performance_schema
binlog-ignore-db=sys


2.授权用于从服务器同步数据的用户及密码
mysql> GRANT REPLICATION SLAVE ON *.* TO 'abc'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.10 sec)

3.重启数据库在次进入数据库
images\31-3.png


4.对数据不要做任何操作或者锁定数据库





二、 从服务器

1、安装mysql5.7.24

2、 启动从服务器 : systemctl start mysqld # 账号密码与主服务器一致 。 ##此时中继日志还未产生。

3、 进入数据库设置
mysql > stop slave;
mysql > reset slave;
mysql > change master to master_host='192.168.88.105',master_user='abc',master_password='123456',master_log_file='mysql-bin.00001',master_log_pos=154;
| |
使用root或者一个专门用于复制的账户 从主服务器获取 上述 信息 。
权限可以给高一些,授权 从 服务器 可以连接
192.168.10.%

mysql > start slave; ## 此时从服务器开始进行同步, 并且生成 中继日志
mysql > show slave status \G

images\31-4.png


10 、 如果主从状态 OK , 释放 主服务器的 业务连接。 主从架构上线。


三、 测试主从架构,做一些安全加固。

主从架构中。 从 服务器 不能 进行 写入操作。
从服务器 添加以下 设置 并重启
super_read_only=ON
skip-slave-start=ON ##控制 从服务器 在 恢复服务后,是否自动启动,去同步 之前 的 主服务器。

1、 主从在线, 主服务更新数据,验证从服务器是否更新
2、 从服务器离线, 期间,主服务插入 若干条数据, 再让从 服务器启动, 观察 是否能追上 主的数据。
3、 主服务器离线, 再次启动, 从是否还能够 保持 在线状态 。
4 、 查看
从服务器查看 进程 状态信息 :
images\31-5.png



主服务器上查看进程 状态 信息 :
images\31-6.png



四、 监控脚本思路 。


mysql -e "show slave status \G" | grep -E "(Slave_IO_Running:|Slave_SQL_Running:)"





这两个是启用relaylog的自动修复功能,避免由于网络之类的外因造成日志损坏,主从停止。
relay_log_purge = 1
  relay_log_recovery = 1

  
这两个参数会将master.info和relay.info保存在表中,默认是Myisam引擎,官方建议用
  master_info_repository = TABLE

  relay_log_info_repository = TABLE

  
改为Innodb引擎,防止表损坏后自行修复
  alter table slave_master_info engine=innodb;

  alter table slave_relay_log_info engine=innodb;

  alter table slave_worker_info engine=innodb;

  。


3.在my.cnf中设置
relay_log_info_repository = TABLE
master_info_repository = TABLE
relay_log_recovery = on

mysql> show variables like '%relay_log_info_repository%';
+---------------------------+-------+
| Variable_name | Value |
+---------------------------+-------+
| relay_log_info_repository | FILE |
+---------------------------+-------+
1 row in set (0.00 sec)

mysql> show variables like '%master_info_repository%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| master_info_repository | FILE |
+------------------------+-------+
1 row in set (0.00 sec)







日志过滤器。 ====================================

可否有选择的复制二进制日志? 例如我们只希望备份其中的一个或者多个数据库,其他的库动作不需要执行

images\31-7.png


请注意 上图 中 ,漏斗 所在位置。




主: =============================

决定了 主服务器 的 二进制日志 监听哪 个 数据库

binlog-do-db= # 复制谁
binlog-ignore-db= # 忽略谁

images\31-8.png


从: ==============================

决定了 从服务器 从接受到的 中继日志中 ,过滤 某些 表/库 的 操作,来 应用

replicate-do-db=
replicate-ignore-db=

replicate-do-table=
replicate-ignore-table=
replicate-wild-do-table= 支持通配符,匹配多个表
replicate-wild-ignore-table=

images\31-9.png