zoukankan      html  css  js  c++  java
  • mysql搭建主从复制(一主一从,双主双从)

    主从复制原理

    Mysql 中有一个binlog 二进制日志,这个日志会记录下所有修改了的SQL 语句,从服务器把主服务器上的binlog二进制日志在指定的位置开始复制主服务器所进行修改的语句到从服务器上执行一遍。

    流程图

    搭建一主一从 

     前期环境准备

    Linux:centos7
    mysql版本:mysql5.7(安装教程:https://blog.csdn.net/weixin_45797918/article/details/104929127
    主服务器:10.10.10.130
    从服务器:10.10.10.133

    修改配置文件

    主机配置

    vim /etc/my.cnf

    添加配置

     #主服务器唯一ID
    server-id=1
    #启用二进制日志
    log-bin=mysql-bin
    #设置不要复制的数据库(可设置多个)
    binlog-ignore-db=mysql binlog-ignore-db=information_schema
    #设置需要复制的数据库
    binlog-do-db=需要复制的主数据库名字
    #设置logbin格式
    binlog_format=STATEMENT

    从机配置

    vim /etc/my.cnf

    添加配置

     #从服务器唯一ID
    server-id=2
    #启用中继日志
    relay-log=mysql-relay

    配置主机

     在主机MySQL里执行授权命令

    GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';

     查询master的状态

    show master status;

     #记录下File和Position的值
    #执行完此步骤后不要再操作主服务器MySQL,防止主服务器状态值变化

    配置从机

    在主机MySQL里执行

    CHANGE MASTER TO MASTER_HOST='10.10.10.130',
    MASTER_USER='slave',
    MASTER_PASSWORD='123456',
    MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;

     CHANGE MASTER TO MASTER_HOST=‘主机的IP地址’,
    MASTER_USER=‘slave’,
    MASTER_PASSWORD=‘123456’,
    MASTER_LOG_FILE=‘mysql-bin.具体数字’,MASTER_LOG_POS=具体值;

    启动从服务器复制功能

    start slave;

    查看从服务器状态

    show slave statusG;

    测试一主一从

    主机创建testdb数据库和表user

     

    从机直接刷新

    搭建双主双从

    前期环境准备

    Master1:10.10.10.130
    Slave1:10.10.10.133
    Master2:10.10.10.134
    Slave2:10.10.10.135

    停止一主一从(没有启动的跳过)

    从机上执行

    stop slave;

    重设

    reset slave;

    删除主机从机testdb数据库

    修改配置文件

    编辑Master1

    修改配置文件,添加

    vim /etc/my.cnf

     #主服务器唯一ID
    server-id=1
    #启用二进制日志
    log-bin=mysql-bin
    #设置不要复制的数据库(可设置多个)
    binlog-ignore-db=mysql
    binlog-ignore-db=information_schema
    #设置需要复制的数据库
    binlog-do-db=需要复制的主数据库名字
    #设置logbin格式
    binlog_format=STATEMENT
    #在作为从数据库的时候,有写入操作也要更新二进制日志文件
    log-slave-updates
    #表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 … 65535
    auto-increment-increment=2
    #表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 … 65535
    auto-increment-offset=1

    编辑Master2

    修改配置文件,添加

    vim /etc/my.cnf

     #主服务器唯一ID
    server-id=3
    #启用二进制日志
    log-bin=mysql-bin
    #设置不要复制的数据库(可设置多个)
    binlog-ignore-db=mysql
    binlog-ignore-db=information_schema
    #设置需要复制的数据库
    binlog-do-db=需要复制的主数据库名字
    #设置logbin格式
    binlog_format=STATEMENT
    #在作为从数据库的时候,有写入操作也要更新二进制日志文件
    log-slave-updates
    #表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1 … 65535
    auto-increment-increment=2
    #表示自增长字段从哪个数开始,指字段一次递增多少,他的取值范围是1 … 65535
    auto-increment-offset=2

    编辑Slave1

    修改配置文件,添加

    vim /etc/my.cnf

     #从服务器唯一ID
    server-id=2
    #启用中继日志
    relay-log=mysql-relay

    编辑Slave2

    修改配置文件,添加

    vim /etc/my.cnf

    #从服务器唯一ID
    server-id=4
    #启用中继日志
    relay-log=mysql-relay

    Master1、Master2授权slave并查看状态

    Master1主机

    MySQL里执行授权命令

    GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';

    Master1

    show master status;

     Master2主机

    MySQL里执行授权命令

    GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';

    Master1

    show master status;

    启动双主双从

    Slave1

    执行

    CHANGE MASTER TO MASTER_HOST='10.10.10.130',
    MASTER_USER='slave',
    MASTER_PASSWORD='123456',
    MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=766;

    启动两台从服务器复制功能

    start slave;

    查看从服务器状态

    show slave statusG;

     Slave2

    执行

    CHANGE MASTER TO MASTER_HOST='10.10.10.134',
    MASTER_USER='slave',
    MASTER_PASSWORD='123456',
    MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;

    启动两台从服务器复制功能

    start slave;

    查看从服务器状态

    show slave statusG;

    两个主机互相复制

    Master2

    执行

    CHANGE MASTER TO MASTER_HOST='10.10.10.130',
    MASTER_USER='slave',
    MASTER_PASSWORD='123456',
    MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=766;

    启动两台从服务器复制功能

    start slave;

    查看从服务器状态

    show slave statusG;

    Master1

    执行

    CHANGE MASTER TO MASTER_HOST='10.10.10.134',
    MASTER_USER='slave',
    MASTER_PASSWORD='123456',
    MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=154;

    启动两台从服务器复制功能

    start slave;

    查看从服务器状态

    show slave statusG;

     #复制主机的命令
    CHANGE MASTER TO MASTER_HOST=‘主机的IP地址’,
    MASTER_USER=‘slave’,
    MASTER_PASSWORD=‘123456’,
    MASTER_LOG_FILE=‘mysql-bin.具体数字’,MASTER_LOG_POS=具体值;

    测试双主双从

    在Master1创建数据库testdb

    其他三个数据库刷新查询出现testdb数据库

    在Master2创建user表

    其他上数据库刷新出现user表

  • 相关阅读:
    Java实现查找二叉树&C++的做法
    bootstrap搜索栏
    动态样式语言less初识
    动态改变伪元素样式的方(用:after和:before生成的元素)
    利用javascript动态加载头部出现点击事件与hover事件无效解决方法
    bootstrap的下拉菜单组件与导航条
    bootstrap的表单form
    php中mysqli_error($conn)的用法
    ajax的jQuery的表单序列化获取参数serialize()
    bootstrap基础样式学习(二)——栅格
  • 原文地址:https://www.cnblogs.com/lzhdonald/p/12689712.html
Copyright © 2011-2022 走看看