一、最近一直在学习mysql的东西,刚好看到mysql如何搭建主从数据库,搜集了很多资料后大致了解了mysql主从复置的原理。以下是我的理解:

举例master为主数据库,slave为从数据库。

  1. slave需要通过自身的IO进程连接上master数据库,并读取master指定日志文件的指定位置之后的内容(slave会向master请求,“我要XXX日志文件XXX位置之后的内容”);
  2. 这时候master接收到来自slave的请求后会找到该日志文件的制定位置,并复制该位置之后的内容返回给slave;
  3. slave将接收到的日志内容依次添加到slave端的relay-log文件的最末端,并将读取到的master端的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉master“我需要从哪个bin-log的什么位置开始读取”;
  4. slave的Sql进程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。  

二、现在我们开始配置主从数据库:

  这里我准备了两台服务器,系统均为centos7,服务器的系统可以有差别;数据库的话建议大家使用统一版本的。这里我的服务器ip分别是192.168.0.109(master)、192.168.0.133(slave).

  • 服务器:centos7
  • 数据库:Ver 15.1 Distrib 5.5.50-MariaDB, for Linux (x86_64) using readline 5.1
  1. 登录到master的数据库,在master的数据库中建立一个备份帐户:每个slave使用标准的MySQL用户名和密码连接master。进行复制操作的用户会授予REPLICATION SLAVE权限。用户名的密码都会存储在文本文件master.info中

    命令如下:

    mysql > GRANT REPLICATION SLAVE ON *.*
    TO 'slave'@'192.168.0.133'
    IDENTIFIED BY '';//建立root账户,密码是123456,只允许该账户在192.168.0.133这个ip登录(slave的ip),授予REPLICATION SLAVE权限
    mysql > flush privileges;//使权限立即生效
  2. 配置master,slave数据库
    配置master
    vi /etc/my.cnf #编辑配置文件,在[mysqld]部分添加下面内容 server-id= #设置服务器id,为1表示主服务器。
    log_bin=mysql-bin #启动MySQ二进制日志系统。
    binlog-do-db=abc #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
    binlog-ignore-db = mysql,information_schema #忽略写入binlog的库 重启master数据库 systemctl restart mariadb //我这里安装的mysql服务端是mariadb-server 登录master数据库,查看master状态 show master status;

    +------------------+----------+--------------+--------------------------+
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+--------------------------+
    | mysql-bin.000001 | 2722 | | mysql,information_schema |
    +------------------+----------+--------------+--------------------------+

    配置slave
    vi /etc/my.cnf #编辑配置文件,在[mysqld]部分添加下面内容
    server-id= #设置服务器id,为2表示从服务器,这个server-id不做规定,只要主从不一致就好
    log_bin=mysql-bin #启动MySQL二进制日志系统,如果该从服务器还有从服务器的话,需要开启,否则不需要
    binlog-do-db=abc #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
    binlog-ignore-db = mysql,information_schema #忽略写入binlog的库,如果该从服务器还有从服务器的话,需要开启,否则不需要
    重启slave数据库 
    
    systemctl restart mariadb //我这里安装的mysql服务端是mariadb-server
    
    登录从数据库,
    
    change master to master_host='192.168.0.133',master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=2722;//mysql-bin.000001,2722为之前master查到的状态值。
    
    start slave;//开启从数据库
    show slave status; //查看从数据库的状态
  3. 在主mysql创建数据库abc,再从mysql查看已经同步成功!
    create database abc;

    发现从数据库中也会出现数据库abc,说明我们的主从数据库搭建成功啦~

mysql数据库主从搭建的更多相关文章

  1. mysql数据库主从同步

    环境: Mater:   CentOS7.1  5.5.52-MariaDB  192.168.108.133 Slave:   CentOS7.1  5.5.52-MariaDB  192.168. ...

  2. Spring AOP实现Mysql数据库主从切换(一主多从)

    设置数据库主从切换的原因:数据库中经常发生的是“读多写少”,这样读操作对数据库压力比较大,通过采用数据库集群方案, 一个数据库是主库,负责写:其他为从库,负责读,从而实现读写分离增大数据库的容错率.  ...

  3. mysql数据库主从同步读写分离(一)主从同步

    1.mysql数据库主从同步读写分离 1.1.主要解决的生产问题 1.2.原理 a.为什么需要读写分离? 一台服务器满足不了访问需要.数据的访问基本都是2-8原则. b.怎么做?  不往从服务器去写了 ...

  4. ubuntu 下 mysql数据库的搭建 及 数据迁移

    1.mysql的安装 我是使用apt-get直接安装的 :sudo apt-get install mysql-server sudo apt-get install mysql-client 2.配 ...

  5. (转)Mysql数据库主从心得整理

    Mysql数据库主从心得整理 原文:http://blog.sae.sina.com.cn/archives/4666 管理mysql主从有2年多了,管理过200多组mysql主从,几乎涉及到各个版本 ...

  6. MySQL数据库主从同步延迟分析及解决方案

    一.MySQL的数据库主从复制原理 MySQL主从复制实际上基于二进制日志,原理可以用一张图来表示: 分为四步走: 1. 主库对所有DDL和DML产生的日志写进binlog: 2. 主库生成一个 lo ...

  7. Linux下MySQL数据库主从同步配置

    说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备 ...

  8. MySQL数据库主从切换脚本自动化

    MySQL数据库主从切换脚本自动化 本文转载自:https://blog.csdn.net/weixin_36135773/article/details/79514507 在一些实际环境中,如何实现 ...

  9. MySQL数据库主从同步实战过程

       Linux系统MySQL数据库主从同步实战过程 安装环境说明 系统环境: [root@~]# cat /etc/redhat-release CentOS release 6.5 (Final) ...

随机推荐

  1. 7.29 DFS总结

    7.29   黄昏时刻 (一) 全排列 建模: 给了数字n 代表从1-n 个数全排列 思路: 1. 输入n,如果n值为‘0’,则退出程序 2. vis[i] 保存 是否对第i个数字进行访问 3. df ...

  2. 附加被分离DB

    如何附加被分离的质疑数据库?   简介 有些时间,由于日志损坏等原因,导致了数据库质疑.如果此时你分离了数据库,那你会发现你无法再附加上数据库,那后果还是很严重的.因此本文提供了一种方式,可以使得当数 ...

  3. Web Builder

    Web Builder http://www.doc88.com/p-1748774598960.html 初次接触Infopath,我就被它的强大的功能,灵活的表单制作方式,全面对Web Servi ...

  4. 【C++ 中文手册】即将完成

    [C++ 中文手册]即将完成 内容包含C++11,历时一年,日夜赶工,即将完成! 该参考手册主要由以下四部份内容组成: C++ 语言 C++ 继承了 C 语言 的大部分语法,并在其基础上修改或增加部分 ...

  5. 发挥jQuery的威力

    发挥jQuery的威力 由于当前jQuery如此的如雷贯耳,相信不用介绍什么是jQuery了,公司代码中广泛应用了jQuery,但我在看一些小朋友的代码时发现一个问题,小朋友们使用的仅仅是jQuery ...

  6. 企业架构研究总结(42)——企业架构与建模之ArchiMate详述(中)

    2.4 技术层模型元素 技术层模型元素包括了企业在信息基础设施方面(企业中基本的软硬件环境,包括物理设备.系统软件等为信息化提供基本支持的设施)的各种概念元素,以及他们之间的关系.与应用层模型元素相类 ...

  7. 软件Scrum

    软件海贼团 OnePiece (版权所有) 最近迷上了“海贼王”这部动画片,不仅仅是因为其中的人物个个性格鲜明,剧情跌宕起伏扣人心弦,各种耍宝搞笑,还感觉到这个团队很像理想中的敏捷软件团队. 作为一直 ...

  8. Cracking the Coding Interview(Trees and Graphs)

    Cracking the Coding Interview(Trees and Graphs) 树和图的训练平时相对很少,还是要加强训练一些树和图的基础算法.自己对树节点的设计应该不是很合理,多多少少 ...

  9. 基于Redis的CustomerSessionProvider(二)

    接一的考虑,那么就做Redis的SessionProvider就非常简单了,只考虑整个Session的缓存,主要实现以下两个函数就可以了 public override SessionStateSto ...

  10. MongoDB学习(翻译6)

    接上篇.... 字段或属性层次的序列化选项 有许多种让你控制序列化的方式,上一节通过约定方法来控制序列化,你也可以通过代码配置或者成员映射或者使用特性来控制你的序列化,下面说道的序列化的各个方面,我们 ...