环境:

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. centos 7安装phantomjs

    centos 7安装phantomjs wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_6 ...

  2. .net 去除特殊字符

    str = Regex.Replace(str, @"<script[^>]*?>.*?</script>", "", Regex ...

  3. 【Git】【环境搭建】

    Mac下GitHub安装及使用教程: https://blog.csdn.net/u012460084/article/details/45830911

  4. Elasticsearch Windows下安装及配置集群

    首先打开网址:https://www.elastic.co/cn/ 进入如下页面: 下载: 解压: 进入bin文件夹下,运行bat文件: 成功后打开浏览器输入地址: 安装head插件: 首先安装nod ...

  5. day7_子类的拷贝构造与拷贝赋值

  6. Qt551.窗口滚动条

    1.代码的方式来创建 ScrollArea,然后使用 倒是 正常(有滚动条显示),但是此方式太麻烦 不如直接拖控件来的方便直观快捷. 但是,直接拖控件的方式 ScrollArea中无法显示出 滚动条, ...

  7. stress负载生成器使用简介

    一.Stress工具原始网页: https://people.seas.harvard.edu/~apw/stress/ 二.Docker镜像的构建过程(dockerfile): progrium/s ...

  8. 杂记-python

    1.在cmd输入python -V显示当前python的版本信息,一定是大写的V 2.输入python,进入python解释器里面 3.在解释器中,输入exit()或者quit()会退出,一定要加括号 ...

  9. 用node.js启动mock.js

    Node.js Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP.Python.Perl.Ruby 等服务端语言平起平坐的脚本语言.官网下载n ...

  10. laravel框架的注入

    如果项目太大,最好采用注入的方式 首先在 根目录/app/ 下创建个service文件夹来 在控制器层可以调用 调用方法