环境:

linux64位,一台机器两个实例,主库3306端口,从库3307端口

步骤:

一、下载安装

先下载安装mysql,这里使用了5.7.21版本,具体过程不做详细说明,可自行查资料如何下载

二、配置

1.master配置,/etc/my.cnf文件入下
[mysqld]
port=3306
server-id=1
basedir=/home/shared_disk/mysql-5.7.21
datadir=/home/shared_disk/mysql-5.7.21/data
socket=/home/shared_disk/mysql-5.7.21/data/mysql.sock
symbolic-links=0
log-error=/home/shared_disk/mysql-5.7.21/data/error.log
pid-file=/home/shared_disk/mysql-5.7.21/data/mysql.pid

#skip-grant-tables

#开启gtid模式,global transaction identified
gtid-mode=on
#保证gtid强一致性
enforce-gtid-consistency=1
#slave记录binlog,否则slave执行完relay log后就删了,找不到slave的执行记录
log_slave_updates
#按行记录binlog
binlog_format=row
#binlog文件名
log-bin=/home/shared_disk/mysql_datadir/mysql-bin
#需要记录binlog的数据库,即需要同步的数据库,同步是通过binlog实现的
binlog-do-db=allen
#不需要记录binlog的数据库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys

其中红色部分是主从同步必须的配置

2.启动主库,安装到系统服务的直接service命令启动即可,没安装的运行mysqld --defaults-file=/etc/my.cnf --user=mysql &

3.登录主库,创建主从复制的账号
create user 'sync'@'localhost' identified by 'sync';
给账号授权
grant file,replication slave on *.* to 'sync'@'localhost' identified by 'sync';

4.slave配置

配置文件/etc/my-slave.cnf入下
[mysqld]
port=3307
server-id=2
basedir=/home/shared_disk/mysql-slave
datadir=/home/shared_disk/mysql-slave/data
socket=/home/shared_disk/mysql-slave/data/mysql.sock
symbolic-links=0
log-error=/home/shared_disk/mysql-slave/data/error.log
pid-file=/home/shared_disk/mysql-slave/data/mysql.pid

#skip-grant-tables

gtid-mode=on
enforce-gtid-consistency=1
log_slave_updates
binlog_format=row
log-bin=/home/shared_disk/mysql_datadir/mysql-bin
#从库启动时跳过自动启动slave这一步
skip_slave_start=1
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys

5.启动从库,service命令或mysqld --defaults-file=/etc/my-slave.cnf --user=mysql &

启动后登录进去,执行
stop slave;
change master to master_host='locahost',master_port=3306,master_user='sync',master_password='sync',master_auto_position=1;
start slave;
show slave status\G;
看到以下两个YES即说明主从已经搭建成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

PS:
当slave遇到问题时候,我们可以show slave status\G;看到同步情况
Retrieved_Gtid_Set: 9461bcc7-4850-11e8-a9f7-525400045eeb:1-7
Executed_Gtid_Set: 4f7a4829-9a29-11e8-aa21-525400045eeb:1-5,9461bcc7-4850-11e8-a9f7-525400045eeb:1-7。
其中9461bcc7-4850-11e8-a9f7-525400045eeb是主库的mysql实例唯一id,4f7a4829-9a29-11e8-aa21-525400045eeb是从库的mysql实例唯一id,
Retrieved_Gtid_Set和Executed_Gtid_Set分别为已接收的和已执行的gtid,已执行的gtid中有一个和Retrieved_Gtid一样的,表明是执行了从主库同步过来的事务,另一个则是本机自己执行的事务。
假设现在Executed_Gtid_Set如下:
Executed_Gtid_Set: 4f7a4829-9a29-11e8-aa21-525400045eeb:1-5,9461bcc7-4850-11e8-a9f7-525400045eeb:1-3
我们可以看到同步的gtid从4之后就没执行了,应该是遇到错误了导致slave停止了,我们可以用以下操作跳过第四个gtid,让slave继续工作
stop slave;
set gtid_next='9461bcc7-4850-11e8-a9f7-525400045eeb:4';
begin;
commit;
set gtid_next='automatic';
start slave;
show slave status\G;
原理就是让下一个事务指到第四个,然后begin接着commit,中间为空实现,让slave以为这个事务执行成功了。

三、验证

主库建表,插入数据,去从库看是否存在相同数据。

从库使用show slave status\G;命令查看Retrieved_Gtid_Set和Executed_Gtid_Set。

MySql主从搭建详细步骤的更多相关文章

  1. MySQL主从同步详细步骤

    前情提要: 本文档以Ubuntu作为主服务器,Win7作为从服务器进行测试.要保证主从服务器之间能够互相通信(即能相互ping通). 主服务器ip地址:192.168.13.81 从服务器ip地址:1 ...

  2. mysql 主从搭建步骤

    mysql 主从搭建步骤 1:主库开启master端bin-log 2:主库创建备份用户 3:主库全备 4:从库导入全备数据 5:从库修改change master to信息 6:从库slave st ...

  3. SUSE Storage6 环境搭建详细步骤 - Win10 + VMware WorkStation

    学习 SUSE Storage 系列文章 (1)SUSE Storage6 实验环境搭建详细步骤 - Win10 + VMware WorkStation (2)SUSE Linux Enterpri ...

  4. ### MySQL主从搭建Position

    一.MySQL主从搭建 搭建主从架构的MySQL常用的有两种实现方式: 基于binlog的fileName + postion模式完成主从同步. 基于gtid完成主从同步搭建. 本篇就介绍如何使用第一 ...

  5. 顶 最新简捷实用的JSP动态网站环境搭建详细步骤

    阿里西西小编给您推荐这个最新简捷实用的JSP动态网站环境搭建详细步骤讲解,这里还有关于JSP 动态网站 环境 搭建 的教程,希望您能够喜欢并学到东西提升自己的知识与技能,下面是内容详细阅读: 最新简捷 ...

  6. MySQL数据库迁移详细步骤(转)

    ========================================================================================== 一.背景简介 == ...

  7. MySQL数据库迁移详细步骤

    转载自:http://sofar.blog.51cto.com/353572/1598364 ===================================================== ...

  8. SSH框架搭建详细步骤整理

    学习Java面前有两座山,一座山叫SSM,一座山叫SSH,跨越了这两座山之后才能感受到这个语言的魅力所在,SSM框架的搭建详细在之前博客已经涉及了,今天来整理SSH框架详细步骤: 生有涯 而 学无涯 ...

  9. SQL Server、MySQL主从搭建,EF Core读写分离代码实现

    一.SQL Server的主从复制搭建 1.1.SQL Server主从复制结构图 SQL Server的主从通过发布订阅来实现 1.2.基于SQL Server2016实现主从 新建一个主库&quo ...

随机推荐

  1. JS宽高理解

    1.clentWidth和clientHeight ①加入无padding.无滚动条显示占据位置 clientWidth=style.width ②假如有padding.无滚动 clientWidth ...

  2. 从客户端取到浏览器返回的oauth凭证

    这个随便记录一下,也是朋友问我的一个问题. 在网上找了下,没找到相关的,用英文也搜索了一下,可能我的关键词没找对,找了一会没找到. 想到以前用过的rclone也是用的这样的方式,去看了下相关部分源码. ...

  3. Latex 经常见到的问题和解决方法

    Latex 经常见到的问题和解决方法 2017-04-10  22:05:48 [资源下载]Texlive 2018 下载地址:http://mirror.lzu.edu.cn/CTAN/system ...

  4. 将vmware虚拟机转换成qcow2格式的方法

    将vmware虚拟机转换成qcow2格式的方法 http://blog.51cto.com/13570993/2074071 关于qemu安装出现的问题 1.配置qemu是出现can't find p ...

  5. Java后台判断是否是ajax请求,并进行处理

    Java过滤器处理Ajax请求,Java拦截器处理Ajax请求,拦截器Ajax请求 >>>>>>>>>>>>>>&g ...

  6. 从事三年java开发后, 我打算转人工智能

    作为一个2015年参加java培训,2016年计算机科学与技术本科毕业后一直从事java开发的程序员来说, 做出这一步真的不容易, 可是我没赶上java最火的时候,反而渐渐感受到了java的没落, 目 ...

  7. 剑指offer:反转链表

    问题描述 输入一个链表,反转链表后,输出新链表的表头. c++代码 /* struct ListNode { int val; struct ListNode *next; ListNode(int ...

  8. mybatis中mapper接口的参数设置几种方法

    方法一:忽略parameterType,加@param("xxx")注解 在mapper接口中加上@param("xxx")注解,则在配置文件中直接用即可 Li ...

  9. 蚂蚁金服mPaaS 3.0发布 助力客户智能化构建超级App生态

    1月4日,蚂蚁金融科技宣布蚂蚁金服移动开发平台mPaaS(mobile Platform-as-a-Service)升级到3.0版本,“新版本以智能技术助力客户构建自己的超级 App,企业可以拥有等同 ...

  10. xilinx Vivado的使用详细介绍(2):创建工程、添加文件、综合、实现、管脚约束、产生比特流文件、烧写程序、硬件验证

    xilinx Vivado的使用详细介绍(2):创建工程.添加文件.综合.实现.管脚约束.产生比特流文件.烧写程序.硬件验证 Author:zhangxianhe 新建工程 打开Vivado软件,直接 ...