mysql 5.7配置多线程复制,MySQL5.7复制功能实战,基于事务的复制,多源复制和多线程复制配置...
这篇是幕课网-MySQL5.7复制功能实战视频教程的学习笔记。http://www.imooc.com/learn/589
第1章 MySQL复制基础
MySQL是异步复制
采取针对特定用户的读写分离,可以实现假无延迟。
MySQL复制是基于binlog日志进行的。存在三种日志格式:
statement格式 存储SQL语句,存储日志量最小
row格式 存储event数据,日志量大,不能直接进行读取
mixed格式 建议生产环境使用该格式
MySQL复制可以是整个实例,也可以是实例中的某个库或某个表
Master端:
--binlog-do-db
--binlog-ignore-db
Slave端:
--replicate-do-db
--replicate-ignore-db
--replicate-do-table
--replicate-ignore-table
--replicate-wild-do-table
--replicate-wild-ignore-table
数据过滤控制通常在Slave端进行,因为Master端的修改需要重启数据库实例,而Slave端就会容易操作得多,并且Slave端的控制更细
复制类型:
基于二进制日志的复制,重点关注的是主的二进制日志文件名和复制点,一主多从进行主备互换时,确认日志复制点比较麻烦
使用GTID完成基于事务的复制[MySQL5.7成熟],全局事务标识符,由主机标志和自增ID组成,推荐
MySQL支持半同步复制,通过插件实现,Master阻塞事务的提交,只有当收到Slave确认收到日志的消息后,再进地提交。第一张图为MySQL5.6,第二张图为MySQL5.7
第2章 实现基于日志点的复制
实验环境:
Node1:192.168.3.100 5.7.9 Master
Node2:192.168.3.101 5.7.9 Slave
A在Master端建立复制用户
grant replication slave on *.* to 'dba'@'192.168.3.%' identified by '123456'; #老式写法
show warning;
drop user dba@'192.168.3.%';
select user,host from mysql.user;
create user 'dba'@'192.168.3.%' identified by '123456'; #先建立用户
grant replication slave on *.* to dba@'192.168.3.%'; #对用户进行授权
show databases;
create database dba;
use dba
create table t(id int,c1 varchar(10),primary key (id));
insert into t values(1,'aa'),(2,'cc'),(3,'dd');
select * from t;
B备份Master端的数据,并在Slave端恢复
mysqldump --single-transaction --master-data=2 --triggers --routines --all-databases -uroot -p > all.sql
--single-transaction保证事务完整性
--master-data 为1时不注释,为2时注释
--triggers 如果有触发器加上触发器
--routines 存储过程函数
--all-databases 备份所有数据
scp all.sql root@192.168.3.101:/root
mysql -uroot -p < all.sql
more all.sql 查看Master二十制文件名和日志点(--master-data=2的功劳)mysql-bin.000004 POS=1687
C使用change master命令配置复制
change master to
master_host='192.168.3.100',
master_user='dba',
master_password='123456',
master_log_file='mysql-bin.000004',
master_log_pos=1687;
change master to master_host='192.168.3.100',master_user='dba',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=1687;
show slave status \G
start slave;
iptables -L
/etc/init.d/iptables stop #关闭防火墙
主从管理的系统视图
use performance_schema;
show tables;
replication_applier_configuration 通道名称和主动延迟时间,比如1小时(3600秒),那么从需要1小时后才会同步数据,有1小时的反悔期
配置:stop slave;change master to master_delay=3600;start slave;
replication_applier_status 显示通道名称,服务状态,下一次同步剩余时间[主动延迟]
replication_applier_status_by_coordinator 多线程复制
replication_applier_status_by_worker 工作线程,线程状态信息 show processlist;
replication_connection_configuration 连接配置信息,主机、端口、用户等
replication_connection_status 连接状态 show slave status;
replication_group_member_stats
replication_group_members
第3章 如何在线变更复制类型
在线将基于日志的复制变更为基于事务的复制[仅5.7版本]
先决条件:
集群中所有服务器版本均高于5.7.6 #show variables like '%version%';
集群中所有服务器gtid_mode都设为off #show variables like 'gtid_mode';
处理步骤【主/备】:
set @@global.enforce_gtid_consistency=warn; #修改后需要查看mysql-error.log日志信息,只有在没有报错的情况下,才能进行下一步操作
set @@global.enforce_gtid_consistency=on;
set @@global.gtid_mode=off_permissive; #修改后需要查看mysql-error.log日志信息,只有在没有报错的情况下,才能进行下一步操作
set @@global.gtid_mode=on_permissive;
show status like 'ongoing_anonymous_transaction_count'; #应为空值或者0值,其实就是基于日志点的复制的数量
set @@global.gtid_mode=on;
show variables like 'gtid_mode'; #核对均为ON的状态
stop slave;
change master to master_auto_position=1;
start slave;
show slave status; #在备上查看状态,应有Executed_Gtid_Set项,并有值
同时,将gtid-mode=on和enforce-gtid-consistency=on写入my.cnf配置文件中,以使服务重启后能自动进入gtid模式
变更复制类型之后管理视图的变化
use performance_schema;
show tables like 'replication%';
select * from replication_connection_configuration \G #AUTO_POSITION=1
select * from replication_connection_status \G #UUID值
在线将基于事务的复制变更为基于日志的复制[仅5.7版本]
先决条件:
集群中所有服务器版本均高于5.7.6 #show variables like '%version%';
集群中所有服务器gtid_mode都设为on #show variables like 'gtid_mode';
处理步骤【主/备】:stop slave;
change master to master_auto_position=0,master_log_file='filename',master_log_pos=1212;
start slave;
set @@global.gtid_mode=on_permissive;
set @@global.gtid_mode=off_permissive;
select @@global.gtid_owned; #应为空字符串之后,才能进行下一步的操作
set @@global.gtid_mode=off;
set @@global.enforce_gtid_consistency=off;
同时,去掉my.cnf配置文件中gtid-mode=on和enforce-gtid-consistency=on项目,以使服务重启后服务正常
第4章 如何使用多源复制
多源复制也就是多Master复制,允许一个Slave对应多个Master
可以用在跨实例的查询上
change master to option,[option]...[channel_option]
option:
master_bind='interface_name'
master_host='host_name'
master_user='user_name'
master_password='password'
master_port=port_num
master_connect_retry=interval
master_retry_count=count
master_delay=interval
master_heartbeat_period=interval
master_log_file='master_log_name'
master_log_pos=master_log_pos
channel_option:
for channel channel
实验环境:
Node1:192.168.3.100 5.7.9 Master
Node2:192.168.3.101 5.7.9 Slave
Node3:192.168.3.102 5.7.9 Master 数据库N3,表t3
三台服务器均使用的是基于事务的模式,即show variables like 'gtid_mode'; 结果为ON
【Node3 Master】
create database N3;
use N3
create table t3(id int,c1 varchar(10),c3 varchar(10),primary key (id));
show create table t3;
insert into t3 values(1,'aa','bb'),(2,'cc','dd');
select * from t3;
create user dba@'192.168.3.%' identified by '123456'; #创建复制用户
grant replication slave on *.* to dba@'192.168.3.%'; #为用户赋权
【Node2 Slave】
change master to
master_host='192.168.3.102',
master_user='dba',
master_password='123456',
master_auto_position=1 for channel 'N3';
show slave status \G
start slave for channel 'n3';
show slave status \G
错误,因为Node1和Node3都建有dba用户,所以出错,以下是解决方法:
stop slave;
use mysql
select user,host form user;
drop user dba@'192.168.3.%';
start slave;
show slave status \G #正常,此时有两条记录,对应两个Master
show databases; #此时复制正常
管理视图的变化:
【Node2 Slave】
use performance_schema;
show tables like 'replication%';
select * from replication_applier_configuration; #显示两行
select * from replication_applier_status; #显示两行
select * from replication_applier_status_by_coordinator \G
select * from replication_connection_configuration \G #显示两行
select * from replication_connection_status \G #显示两行
第5章 如何使用多线程复制
解决延时问题,在MySQL5.6中就已提供,但是一个线程仅能针对一个数据库。5.7中进行了增强,不再一个线程只能针对一个数据库。
使用:
在Slave服务器上停止所有链路的复制
set global slave_parallel_type='logical_clock'; #别一种类型是‘database’即5.6版本中的类型
set global slave_parallel_workers=4; #设置并发的工作线程数量
start slave;
实际配置:
多线程复制只需要在slave中配置就可以了
show variables like 'slave_parallel%';
stop slave;
set global slave_parallel_type='logical_clock';
set global slave_parallel_workers=4;
start slave;
show processlist;
show slave status \G
视图查看:
use performance_schema
select * from replication_applier_status_by_coordinator; #以前是空,现在有两条记录,控制器
select * from replication_applier_status_by_worker; #8行,每行为一个线程
喜欢 (0)or分享 (0)
mysql 5.7配置多线程复制,MySQL5.7复制功能实战,基于事务的复制,多源复制和多线程复制配置...相关推荐
- linux mysql 5.7 配置_linux下mysql5.7的安装配置
mysql官方下载地址: https://dev.mysql.com/downloads/mysql/ 安装步骤: # https://cdn.mysql.com//Downloads/MySQL-5 ...
- 5.7.24mysql 配置安卓,安卓按键精灵连接MySQL全面解析Windows下安装 mysql5.7的方法
关于在windows下安装mysql 5.7 •要注意的新坑: 5.7版本安装后ROOT账号是有默认的密码的,这个密码在windows下可以在mysql.ini配置文件指定的data文件夹下面,那个为 ...
- mysql 多实例 独立配置文件_三、安装配置多实例MYSQL5.6-多独立配置文件方法
三.安装配置多实例MYSQL5.6-多独立配置文件方法 1.准备工作 检查操作系统版本.内核版本.selinux是否关闭.防火墙策略.IP地址.主机名配置.host表配置.yum配置 上传cmake. ...
- centos7mimi mysql 安装_CentOS7 64位下MySQL5.7安装与配置(YUM)
安装环境:CentOS7 64位 MINI版,安装MySQL5.7 1.配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo ...
- OPC服务器软件Kepware Kepserver实现与Mysql数据库连接交互(一)MySQL5.5数据库Kepserver软件介绍安装配置
目录 一.数据库MySQL数据库简介 二.OPC服务器软件Kepserver软件介绍 三.MySQL5.5数据库安装配置 3.1官网下载MySQL安装包 3.2安装MySQL5.5 3.3配置MySQ ...
- linux安装多个mysql数据库_linux下多个mysql5.7.19(tar.gz)安装图文教程
初级第一次在Linux下安装MySQL-5.7.19版本教程请看上一篇,如果已经会安装了,那么请看这篇linux下安装多个mysql-5.7.19 环境:centos 6.5 1-下载 2-跳过登陆 ...
- MySQL之MHA高可用配置及故障切换(理论加实战详细部署步骤)
MySQL之MHA高可用配置及故障切换(理论加实战详细部署步骤) 文章目录 一.MHA介绍 (一).什么是MHA (二).MHA 的组成 (三).MHA 的特点 二.搭建 MySQL MHA (一). ...
- yum安装mysql后密码_Centos7:yum安装MySQL5.7后如何设置root密码
Centos下安装软件的方式很简单,只需要通过yum install xxx命令即可.第一步当然检查是否有mysql的yum源,命令:yum list|grep mysql-community[主要还 ...
- CentOS7.3下配置 Apache2.4 + MySQL5.7 + PHP7.1.8
本篇文章讲解的是在CentOS7.3下配置 Apache2.4 + MySQL5.7 + PHP7.1.8 一.Apache 1.查看httpd包是否可用 yum list | grep httpd ...
最新文章
- 正点原子探索者原理图_正点原子【STM32-F407探索者】第六章 跑马灯实验
- 深入理解Binder机制4-bindService过程分析
- SSM关联码表的多个字段显示中文流程以及sql写法
- Win7 修改默认Administrator 密码方法
- 操作系统 cpu调度_CPU调度| 操作系统
- 让我们拭目以待的5z20
- 11.8 Ext.util.Event.fire(): Attempting to fire “click“ event on destroyed 问题分析与解决
- YII框架截取字符串长度
- 一篇真正教会你开发移动端页面的文章(二)
- Thrift 对象序列化、反序列化-字节数组分析
- 继续解决YUI3 Panel的yui3-panel-hidden样式带来的问题
- Linux开发(驱动应用)学习路线规划
- 淘口令api权限申请,赚取佣金第一步
- QML Label/Text 文本居中显示
- 小众软件(持续更新)
- 动态创建多个echarts图表
- 常见网络协议总结(五层自顶向下)
- 【转】从一个App跳转到另一APP
- 主机电源全是黑线怎么短接_电脑电源故障 绿线和黑线短接后风扇转一下就停了。...
- c数组(结构体数组)定义与初始化