# :-: **Mysql 5.7 复制**
[TOC]
## 主从复制基本知识了解
1. Mysql复制为 **异步** 复制
2. 主从复制原理 Master 主库 Slave 从库
![](https://box.kancloud.cn/cac3d683f1fa997d9c88d7a011b1b4d4_1076x724.png)
3. TPS 并发读写数 一般在 几百上下/s 也有部分可以达到 几千上下/s
4. 一般主从之间 避免延迟导致的数据 **延迟性** 可使用 **假一致性** (必要的时候 从主库读取实时数据 不必要的用户 依旧读取从库数据)
5. Mysql复制 基于**BinLog**日志
> 日志存在三种格式
> * Statement:BinLog中存储SQL语句,存储日志量最小
> * Row:存储event数据,存储量大,但是不能直接的进行读取
> * Mixed:介于两者之间的存储方式,对不确定的操作使用Row记录,如果每天数据操作量很大,产生日志较多,可以考虑Mixed格式。
> 注意:一般主从复制 不适用Statement日志格式,避免影响主从数据不一致。
6. ![](https://box.kancloud.cn/fbadd7ffd669517a2a84198f44d29e70_525x211.png)
--binglog-do-db : 同步数据库
--binglog-ignore-db : 不同步数据库
7. ![](https://box.kancloud.cn/a3cb58147dc9f39aa1a3d94b7d2516f0_580x343.png)
8. Mysql 复制类型
>* [ √ ] 基于二进制日志复制 (Mysql5.5之前唯一支持的复制类型)
>* [ √ ] 使用GTID(全局事务标识符)完成基于事务的复制
9. Mysql 支持半同步复制。
![](https://box.kancloud.cn/75c1b9747345ab47be7bfead1aa51812_496x404.png) 5.6
![](https://box.kancloud.cn/dc72c2c12efe152c57394527e80b128e_519x412.png) 5.7
*****
## 主从复制搭建 (主从均为Linux服务器)
>### 一、创建复制用户 (主库)
```
——不推荐使用——
IP:192.168.1.100 或 192.168.1.%匹配整个1网段
grant replication slave on *.* to '用户名'@'从库IP' identified by '密码';
——推荐——
先创建用户
create user '用户名'@'从库IP' identified by '密码';
授权用户
grant replication slave on *.* to 用户名@'从库IP';
```
>### 二、使用mysqldump导出数据(主库)
```
进入到需要导出的文件位置中
例如 导出到 /tmp/下
mysqldump --single-transaction --master-data=2 --triggers --routines --all-databases -uroot -p> all.sql
按照提示输入密码
```
> ### 三、将导出sql文件传入 从库 中(主库)
```
scp all.sql root@192.168.2.202:/tmp/
```
>### 四、查看all.sql中的MASTER_LOG_FILE、MASTER_LOG_POS(从库)
```
more all.sql
查看 CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;
MASTER_LOG_FILE
MASTER_LOG_POS
将两个值记录下来
```
>### 五、从库配置
```
此处用户密码 使用 主库create生成的用户密码
mysql>change master to marset_host='主库IP',
>master_user = '用户',
>master_password='密码',
>master_log_file=上面查看的 MASTER_LOG_FILE值,
>master_log_pos=上面查看的 MASTER_LOG_POS值;
```
>### 六、开启slave
```
start slave;
```
>### 七、 查看slave status
![](https://box.kancloud.cn/da11cf0aa112946c4316f5b5ad7fd742_1028x855.png)
```
show slave status \G;
Slave_IO_Running: No
Slave_SQL_Running: Yes
查看 slave链接状态 都为yes时 连接成功
连接失败时 查看此信息
Last_IO_Errno: 1593
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.
```
> **中间可能会因为个人的环境问题 有一些报错,相信大家都可以动手解决掉,解决问题的同时,学习到更广面的知识**
*****
## 扩展知识
>### 主动延时复制
在从库中进入MySQL 进行设置 主动延时复制
**设置延时操作时 先关闭slave服务**
`mysql> change master to master_delay=3600;`
> 设置完成之后,输入一下命令查询
`mysql> use performance_schema;
`
`mysql> show tables;`
![](https://box.kancloud.cn/f7e98fc59898d075e127113360c6262d_583x676.png)
> replication_***开头的表 都是主从配置的视图表
`mysql>select * from replication_applier_configuration ;`
![](https://box.kancloud.cn/b69aa39d2db45e861be685971e715d64_1007x236.png)
CHANNEL_NAME : 复制链路名称,MySQL支持多链路复制,可以存在一条空字符串的channel_name,当存在多条复制链路时链路的channel_name都不能一样。
DESIRED_DELAY:主从复制延迟,该字段用来配置当主进行操作之后延迟多少秒后才被复制到slave节点。
`mysql>select * from replication_applier_status`;
![](https://box.kancloud.cn/47087727ba17e3d8ee0536f1a96ca8ce_727x106.png)
SERVICE_STATE:复制状态
REMAINING_DELAY:下次主从同步时间
多线程复制视图表
replication_applier_status_by_coordinator
replication_applier_status_by_worker
主从同步配置信息
replication_connection_configuration
链接状态
replication_connection_status
## 基于日志复制 在线转换为 基于事务的复制
![](https://box.kancloud.cn/12476f22b09547e4491ba6ec7afd3b12_1287x462.png)
**基于事务的复制 对于数据的完整性 更加安全 推荐使用 基于事务的复制**
*****
### 转换分为九个步骤
![](https://box.kancloud.cn/95ac52757b306145339bc924c3d9268d_1117x420.png)
![](https://box.kancloud.cn/2ff5e0b883ec5d28843093d4cbca99a4_1208x360.png)
### 以下为实际操作代码块
#### 查看版本信息
`mysql> show variables like 'version';
`
#### 查看服务器gtid_mode
`mysql> show variables like 'gtid_mode';`
#### 设置gtid_consistency (主库和从库)
`mysql> set @@global.enforce_gtid_consistency=warn;
`
#### 查看当前的错误日志配置 查询日志位置
`mysql> show variables like 'log_error';`
查看错误日志 确定没有报错的情况下
#### 再次设置gtid_consistency (主库和从库)
`
mysql> set @@global.enforce_gtid_consistency=on;
`
> gtid_mode 四种值 只能按顺序设置
> off 关闭
> off_permissive 关闭准备
> on_permissive 启动准备
> on 启动
#### 修改gtid_mode(主库和从库)
`mysql> set @@global.gtid_mode = off_permissive;
`
`mysql> set @@global.gtid_mode = on_permissive;
`
#### 查看是否有匿名复制(日志复制)
为空即可
`mysql> show status like 'ongoing_anonymounse_transcation_count';`
#### 确认没有匿名复制之后继续修改gtid_mode(主库和从库)
`mysql> set @@global.gtid_mode = on;
`
然后查看一下gtid_mode
`mysql> show variables like 'gtid_mode';`
#### 重启slave(从库)
`mysql> stop slave`
`mysql> change master to master_auro_position=1;`
`mysql> start slave`
- 关于我们
- ApiCloud
- 支付模块
- 微信支付--wxPay(客户端)
- 微信支付--wxPay(服务端)
- 支付宝支付--aliPay(客户端配置)
- 支付宝支付--aliPay(服务端配置)
- DoT模板
- 缓存模块
- 监听模块
- 百度定位模块
- 设置状态栏字体颜色
- 选择城市插件
- 跨页面执行方法
- 安卓-点击返回事件
- 上传图片模块
- 点击弹出放大图片层
- 魅族手机apiready问题
- 分享
- 跨win或frm执行脚本
- 关于ios数字自动识别成手机号
- 百度地图bMap
- 语音识别模块
- tabBarMenu底部导航
- 第三方登录
- QQ网站和appQQ账号的统一问题解决
- 微信登录
- QQ登录
- 微博登录
- 上拉加载、下拉刷新模块
- 图片缓存
- 文件和图片缓存机制分享
- PHP
- 支付宝及时到账
- no input file specified报错解决
- thinkphp 整合kindeditor
- 整合tpshop微信模块到thinkcmf中
- thinkphp3.1.3整合支付宝
- 网站接入QQ OAuth2.0登录教程
- ThinkPHP整合百度编辑器Ueditor
- PHP加快执行效率的写法规范
- ThinkPHP操作大全
- PHP操作大全
- Thinkphp中SQL操作返回值
- php5.3 foreach 使用&(与运算符)引用赋值要注意的问题
- mysql给字段追加值
- 阿里大鱼短信平台接入
- Navicat 导出 Mysql 数据字典
- php 面向对象全面教程
- PHP5下调用SOAP
- PHP处理时间格式添加空格
- 伪装URL请求(.htaccess)
- url请求参数加解密
- JS插件
- artDialog弹窗-页面传值
- jQuery点击遮罩弹出层固定居中
- jeBox原生弹窗
- bxslider轮播
- js生成指定位数随机数
- 发送短信倒计时
- js调试
- jQuery.validator 表单验证规则
- Swiper 轮播
- 获得焦点时-图片抖动
- uploadify无刷新上传图片
- 导航下拉隐藏上拉显示
- 获得焦点时-加黑色蒙版
- jquery.qrcode.js生成二维条形码(支持中文)
- jquery.qrcode.js生成二维条形码(官方不支持中文)
- nth-child 选择器
- 无刷新点击实现加载更多数据
- 刷新页面方法
- 判断滚动条向上向下
- 跨浏览器复制jQuery-zclip
- js校验表单后提交表单的三种方法
- 用JS判断下拉框是否选中
- div中滚动
- 提交时弹出模态框
- 当图片不显示时替换方法
- 前端
- CSS3
- HTML5
- css技巧
- 移动端rem
- Flex布局
- 电商详情滚动条监听
- VueCircleMenu圆环按钮
- iframe自适应页面高度
- 百度Echart
- input:radio改变选中颜色
- Jquery
- 响应式布局基本实现Media Query
- 循环输出只输出新内容
- 小程序
- wx.request坑
- 概要
- git操作
- 本地记住密码
- 操作
- 生成ssh公钥 记住密码
- git避坑
- ES6学习手札
- 调试小插件
- 谷歌插件Postman
- PHP调试助手
- WordPress
- 缓存服务器Redis
- 在线代码运行 Docker
- 在ubuntu下怎样安装https
- BrowserSync 浏览器同步测试工具
- getmarkman高效的设计稿标注、测量工具
- PHPstrom软件
- 服务器
- linux 安装搭建服务器配置及nginx配置
- tpshop的nginx 服务器配置方法
- (服务器访问文件404解决办法)IIS 之 添加MIME扩展类型及常用的MIME类型列表
- mysql部分
- mysql缓存
- MySql监控工具--mytop
- MySql主从搭建
- mysql优化
- Mysql 复制 (主从复制)
- iOS开发笔记 - 上线流程
- VUE避坑指南
- 从零开始学Vue
- Vue-cli
- Webpack
- VUE小记
- npm打包空白
- 打包背景图片/项目图片不显示
- VUE避坑指南/elementUI upload 自定义http-request上传
- 关于watch监听路由重复加载方法
- 解决加载内容的时候闪动问题
- vuecli没有network访问地址
- python学习
- python初始
- pytho内置函数大全
- win10 播放器播放TS文件问题
- 设计网站
- VUE避坑指南/VUE-CLI部署空白
- swiper使用问题
- uni-app学习手册
- 目录结构
- layUI
- nodesass版本sassloader版本问题