1、 什么是MySQL的复制

· MySQL的主从复制可以实现将数据从一台数据库服务器(master)复制到一台或多台数据库服务器(slave)上,进而可以保证数据有多份冗余。

· 默认情况下,属于异步复制,所以无需维持长连接。

2、 MySQL复制的原理

1. slave端的IO线程发送请求给master端的binlog dump线程

2. master端binlog dump线程获取二进制日志信息(文件名和位置信息)发送给slave端的IO线程

3. salve端IO线程获取到的内容依次写到slave端relay log里,并把master端的bin-log文件名和位置记录到http://master.info里

4. salve端的SQL线程,检测到relay log中内容更新,就会解析relay log里更新的内容,并执行这些操作,从而达到和master数据一致

三、MySQL复制搭建

1. 环境说明

当前环境中只有一台MySQL数据库服务器,上面已有相关业务数据。现需要在此基础上构建MySQL的主从复制架构。

1 系统环境说明

2 数据库安装环境说明

2. 从服务器安装MySQL数据库

[root@slave ~]# id mysql

id: mysql: no such user

[root@slave ~]# useradd -r -s /sbin/nologin mysql

[root@slave ~]# mkdir /usr/local/mysql

[root@slave ~]# cd /usr/src/

[root@slave src]# ls

debug kernels mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz

[root@slave src]# tar xf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz

[root@slave src]# ls

debug kernels mysql-5.6.35-linux-glibc2.5-x86_64 mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz

[root@slave src]# cp -a mysql-5.6.35-linux-glibc2.5-x86_64/* /usr/local/mysql/

[root@slave src]# chown -R mysql. /usr/local/mysql/

[root@slave src]# cp support-files/mysql.server /etc/init.d/mysql

注意:

暂时不需要初始化数据库文件,只是安装好了和master相同版本的mysql数据库软件;后面向master来同步所有数据。

3. 修改主和从的配置文件

注意:· server-id必须不能一致;

· master需要开启二进制日志

· slave需要开启中继日志

[root@master ~]# cat /etc/my.cnf

[mysqld]

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

port=3307

socket=/usr/local/mysql/mysql.sock

log-error=/usr/local/mysql/data/db01_3307.err

character_set_server=utf8mb4

log-bin=/usr/local/mysql/data/binlog

server-id = 10

[root@slave ~]# cat /etc/my.cnf

[mysqld]

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

socket=/usr/local/mysql/mysql.sock

log-error=/usr/local/mysql/data/db02_3307.err

character_set_server=utf8mb4

server-id=20

relay-log=/usr/local/mysql/data/relaylog

4. 主从两边初始数据保持一致

1 主服务器停止MySQL服务

[root@master ~]# mysqladmin shutdown -p123

2 主服务器删除auto.cnf文件

[root@master ~]# cd /usr/local/mysql/data/

[root@master data]# rm -f auto.cnf

说明:auto.cnf文件里保存的是每个数据库实例的UUID信息,代表数据库的唯一标识

3 Master上数据同步到slave

[root@master ~]# rsync -av /usr/local/mysql/data/ 10.1.1.20:/usr/local/mysql/data

4 启动Master和Slave数据库

[root@master ~]# service mysql start

[root@slave ~]# service mysql start

5. 主服务器创建复制用户

mysql> grant replication slave on *.* to 'slave'@'10.1.1.%' identified by '123';

mysql> flush privileges;

先加锁,防止两边数据不一致

mysql> flush tables with read lock;

查看当前数据库的二进制日志写到什么位置(只有打开二进制日志,这句命令才有结果)

mysql> show master status;

6. 从服务器配置同步信息

mysql> change master to master_host='10.1.1.10',master_user='slave',master_password='123',master_port=3307,master_log_file='mybinlog.000002',master_log_pos=405;

7. 从服务器启动复制线程

mysql> start slave;

mysql> show slave status\G

.....

Slave_IO_Running: Yes 代表成功连接到master并且下载日志

Slave_SQL_Running: Yes 代表成功执行日志中的SQL语句

8. 主服务器解锁

mysql> unlock tables;

Query OK, 0 rows affected (0.00 sec)

四、主从测试验证

1. 主服务器上插入数据

mysql> select * from db02.t1;

+------+-------+

| id | name |

+------+-------+

| 1 | mona |

| 2 | harry |

| 3 | jack |

+------+-------+

3 rows in set (0.00 sec)

mysql> insert into t1 values(4,'tom');

Query OK, 1 row affected (0.00 sec)

mysql> select * from db02.t1;

+------+-------+

| id | name |

+------+-------+

| 1 | mona |

| 2 | harry |

| 3 | jack |

| 4 | tom |

+------+-------+

2. 从服务器查看数据

mysql> select * from db02.t1;

+------+-------+

| id | name |

+------+-------+

| 1 | mona |

| 2 | harry |

| 3 | jack |

| 4 | tom |

+------+-------+

五、MySQL主从复制总结1. 主从复制必须保证两台数据库实例的server-id不一致

2. 主服务器必须开启二进制日志;从服务器必须开启中继日志

3. 主从复制搭建必须保证初始数据一致

4. 主服务器必须要给从服务器创建一个复制用户,并授予复制权限

5. Master—>Slave架构,主写会同步到从;而从写不会同步到主

mysql主从搭建_手把手教你搭建MySQL主从架构相关推荐

  1. 2021win11最新最全MySQL下载安装教程——手把手教你安装MySQL

    2021win11最新最全MySQL下载安装教程--手把手教你安装MySQL 最近重装了win11,给我MySQL整没了,故今天重新装一下. 第一步,进入官网 https://www.mysql.co ...

  2. 云服务器架设网站教程_手把手教你搭建腾讯云服务器入门(图文教程)

    本文由博主 威威喵 原创 博客主页:https://blog.csdn.net/smile_running 背景 暑假期间,愁着无聊但也不能荒废学业吧,毕竟以后想靠技术混口饭吃!为了实施自己的计划,特 ...

  3. python numpy安装教程_手把手教你搭建机器学习开发环境—Python与NumPy的超简安装教程...

    手把手教你搭建机器学习开发环境Python语言是机器学习的基础,所以,想要入门机器学习,配置好Python的开发环境是第一步.本文就手把手的教你配置好基于Python的机器学习开发环境.超简单!第一步 ...

  4. mysql排插问题_手把手教你分析 MySQL 死锁问题

    原标题:手把手教你分析 MySQL 死锁问题 前言 前几天跟一位朋友分析了一个死锁问题,所以有了这篇图文详细的博文,哈哈~ 发生死锁了,如何排查和解决呢?本文将跟你一起探讨这个问题 准备好数据环境 模 ...

  5. mysql中括号_手把手教你看MySQL官方文档

    前言: 在学习和使用MySQL的过程中,难免会遇到各种问题.不知道当你遇到相关问题时会怎么做,我在工作或写文章的过程中,遇到不懂或需要求证的问题时通常会去查阅官方文档.慢慢的,阅读文档也有了一些经验, ...

  6. mysql官方文档中文版_手把手教你看MySQL官方文档

    前言: 在学习和使用MySQL的过程中,难免会遇到各种问题.不知道当你遇到相关问题时会怎么做,我在工作或写文章的过程中,遇到不懂或需要求证的问题时通常会去查阅官方文档.慢慢的,阅读文档也有了一些经验, ...

  7. mysql mtbf计算_手把手教你计算MTBF(平均故障间隔时间),有实例!

    原标题:手把手教你计算MTBF(平均故障间隔时间),有实例! MTBF(平均故障间隔时间) MTBF,即平均故障间隔时间,英文全称是"Mean Time Between Failure&qu ...

  8. mysql ondumplictcate_4.5万字手把手教你实现MySQL TB级数据存储!!

    写在前面 业界对系统的高可用有着基本的要求,简单的说,这些要求可以总结为如下所示. 系统架构中不存在单点问题. 可以最大限度的保障服务的可用性. 一般情况下系统的高可用可以用几个9来评估.所谓的几个9 ...

  9. vue 文字无缝滚动_手把手教你搭建 Vue 聊天室

    WebSocket简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议 WebSocket使得客户端和服务器之间的数据交换变得更加简单,并且允许服务端主动向客户端推送数据.(HTTP协 ...

  10. 我的世界java无法安装包_手把手教你搭建java环境

    前文 由于一些历史原因,开发java程序需要技术人员自行搭建环境,而搭建环境对于新手来说并不友好,不像其他语言那般方便,现如今,为帮助想入门java却无法顺利搭建的同学,编写该教程,如果觉得本文有用, ...

最新文章

  1. python自然语言处理.词性标注
  2. SpringBoot2.1.9 多MongoDB配置
  3. 手机安卓学习 内核开发
  4. php smarty 语法,php之Smarty根本语法和三大变量
  5. 华为机试HJ44:Sudoku(数独问题,深度优先遍历DFS解法)
  6. 自学python买什么教材-学习Python的正确姿势—基础教学,教科书该怎么买?
  7. EMNLP2018 - 语言理解+对话系统的最新进展
  8. oracle实现累加,oracle用sum函数实现累加
  9. 替换swf文件中的图片
  10. 蒲公英 · 积跬步以至千里
  11. 愿有岁月可回首,更敬年少一杯酒
  12. EAGLE 电路板编辑器中的“层”概念
  13. 辽宁大学计算机测控技术专业排名,测控技术与仪器专业大学排名
  14. 东周列国 演绎版 mp3
  15. python:pygame制作中国象棋
  16. 火灾检测——相关数据集
  17. cookie实现自动登陆原理
  18. [mac]-使用pic-go和linux服务器搭建自己的图床
  19. 【MonumentVally】纪念碑谷技术实现
  20. 2018年下半年学习计划

热门文章

  1. SQL Server 2000 Service Pack 4 升级指南
  2. matlab2014 下的 libsvm 安装
  3. Swoole 结合TP5创建http服务
  4. python 2个dict如何合并
  5. mysql必要的监控项目--转自土豆大神的博客
  6. Linux(Ubuntu14.04)下Google Chrome / Chromium标题栏乱码问题
  7. (转)战斗bug技巧全攻略
  8. 八、IO优化(7)减少IO竞争
  9. flex学习笔记 富文本编辑(一)-RichEditableText
  10. 28th Dec, 2012 我自己的问题