黑马程序员

微信号:heiniu526

传智播客旗下互联网资讯,学习资源免费分享平台

1

什么是MySQL的复制

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

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

2

MySQL复制的原理

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

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

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

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

3

MySQL复制搭建

⒈环境说明

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

· 系统环境说明

IP

主机名

角色

系统版本

MySQL版本

10.1.1.10

master.MissHou.cc

(master)

Centos 7.5

MySQL-5.6.35

10.1.1.20

slave.MissHou.cc

(slave)

Centos 7.5

MySQL-5.6.35

· 数据库安装环境说明

角色

安装目录

数据目录

端口

Master

/usr/local/mysql/

/usr/local/mysql/data

3307

Slave

/usr/local/mysql/

/usr/local/mysql/data

3307

⒉从服务器安装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来同步所有数据。

⒊修改主和从的配置文件

注意:

· 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

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

· 主服务器停止MySQL服务

[root@master ~]# mysqladmin shutdown -p123

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

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

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

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

· Master上数据同步到slave

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

· 启动Master和Slave数据库

[root@master ~]# service mysql start

[root@slave ~]# service mysql start

⒌主服务器创建复制用户

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;

⒍从服务器配置同步信息

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;

⒎从服务器启动复制线程

mysql> start slave;

mysql> show slave status\G

.....

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

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

⒏主服务器解锁

mysql> unlock tables;

Query OK, 0 rows affected (0.00 sec)

4

主从测试验证

⒈主服务器上插入数据

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   |

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

⒉从服务器查看数据

mysql> select * from db02.t1;

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

| id   | name  |

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

|    1 | mona  |

|    2 | harry |

|    3 | jack  |

|    4 | tom   |

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

5

MySQL主从复制总结

· 主从复制必须保证两台数据库实例的server-id不一致

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

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

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

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

热文推荐

63道java面试真题击破BAT招聘套路!跳槽季助你一臂之力

互联网从业人才报告,非技术岗位月薪也可达23000……

月薪14Kweb大神独家发布:学习路线+首发资源!

文章好看就点这里

▼点击 加程序员交流群

linux配置usb主从_技术 | 手把手教你搭建MySQL主从架构相关推荐

  1. mysql主从架构搭建_技术 | 手把手教你搭建MySQL主从架构

    1 什么是MySQL的复制 MySQL的主从复制可以实现将数据从一台数据库服务器(master)复制到一台或多台数据库服务器(slave)上,进而可以保证数据有多份冗余. 默认情况下,属于异步复制,所 ...

  2. 手把手教你搭建SpringCloud项目(十)集成Hystrix之服务降级

    Spring Cloud全集文章目录: 零.什么是微服务?一看就会系列! 一.手把手教你搭建SpringCloud项目(一)图文详解,傻瓜式操作 二.手把手教你搭建SpringCloud项目(二)生产 ...

  3. 手把手教你搭建SpringCloud项目(十六)集成Stream消息驱动

    Spring Cloud全集文章目录: 零.什么是微服务?一看就会系列! 一.手把手教你搭建SpringCloud项目(一)图文详解,傻瓜式操作 二.手把手教你搭建SpringCloud项目(二)生产 ...

  4. 手把手教你搭建SpringCloud项目(九)集成OpenFeign服务接口调用

    Spring Cloud全集文章目录: 零.什么是微服务?一看就会系列! 一.手把手教你搭建SpringCloud项目(一)图文详解,傻瓜式操作 二.手把手教你搭建SpringCloud项目(二)生产 ...

  5. 手机端创新体验——手把手教你搭建VRAR架构

    声明:本文阿里巴巴技术论坛整理文章,首发于CSDN,未经许可,禁止任何形式的转载. 作者:袁岳峰,阿里移动平台虚拟&互动实验室负责人,GM Lab技术负责人. 责编:钱曙光,关注架构和算法领域 ...

  6. 手把手教你搭建Linux开发环境(VMware+Ubuntu)(二)——安装VMwareTools并设置共享文件夹

    刚刚装好了Ubuntu,安装VMware Tools会让我们有更好的体验,那么为什么要安装VMware Tools?该如何安装呢?本篇博客将手把手教你安装VMware Tools,并设置共享文件夹. ...

  7. 手把手教你搭建属于自己的技术博客(小白教程)

    手把手教你搭建属于自己的技术博客 先放上我自己搭建的博客地址 https://sourl.cn/Tbk7yt 这里我使用的是 Hexo 框架 以及 Github pages 进行的搭建 文章目录 手把 ...

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

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

  9. 手把手教你搭建Linux开发环境(VMware+Ubuntu)(一)——安装VMware虚拟机和Ubuntu

    前言 近期好多小伙伴都开始学习Linux内核了,那么如何搭建一个Linux运行环境,变成Linux内核初学者的拦路虎,今天我就一步步详细解说一下,如何使用虚拟机VMware安装Ubuntu,跟我一起开 ...

最新文章

  1. 英伟达小姐姐的Python隐藏技巧合集,推特2400赞,代码可以直接跑
  2. 独家 | 将人们困于贫穷之中的隐藏算法战争即将到来
  3. oracle函数,oracle编写函数
  4. 安卓高手之路之图形系统(6)ListView继续
  5. [Ubuntu] 如何在Ubuntu11.04将PHP5.3降级到PHP5.2
  6. java接口开发_如果你想学好Java,这些你需要了解
  7. 微课|玩转Python轻松过二级(1.5节):安装扩展库
  8. mysql文件_mysql 的各种文件详细说明
  9. ubuntu切换用户root时认证失败
  10. java矩阵相乘泛型_21.8 实例学习:泛型矩阵类
  11. 计算机等级考试--二级Java的知识点大全
  12. 顶尖互联网公司 类名定义/数据库字段 - 英文名词解释
  13. linux md5校验脚本,Linux md5sum命令的使用方法
  14. 4.6 linux文件系统-虚拟文件系统VFS
  15. 红米NoteX和红米NoteXpro的区别
  16. HDU, 3579 Hello Kiki
  17. 软件自锁c语言,一种C式自锁快速接头的制作方法
  18. android 权威编程指南 笔记 2018-09-01
  19. android魅族升级,Android8.0快来了,魅族手机终于要升级 7.0了!
  20. Ae 表达式语言引用:Camera Light Effect

热门文章

  1. php 动态引用dll文件路径,win平台环境变量与dll动态链接库搜索路径小结
  2. 表单多条相同name数据的获取
  3. 【Python 10】汇率兑换3.0(while循环)
  4. 3529: [Sdoi2014]数表 - BZOJ
  5. 一个优秀的测试如何在敏捷开发中体现自己的价值?
  6. 异常为当IDENTITY_INSERT设置为OFF时 的解决
  7. Delphi 2009 的反射单元(ObjAuto):
  8. 【数据结构】分治代码模板
  9. vs 生成com组件 其他电脑_VS也可以这样进行快捷安装
  10. FFmpeg之视频/图片镜像旋转(十三)