首页 > 数据库 >mysql5.7主从搭建

mysql5.7主从搭建

时间:2024-10-26 10:48:31浏览次数:5  
标签:binlog slave mysql5.7 master mysql 线程 主从 搭建

mysql下主从(主主)搭建

首先要准备两台服务器,一台主服务器(Master),另一台从服务器(Slave),然后要保证Master与Slave的版本要相同且Master不能高于Slave的版本,一般稳健的做法都是使其版本相同,因为MySQL不同版本之间的binlog(二进制日志)格式可能会不一样,最后会导致同步出现异常。

参考地址:https://blog.51cto.com/moerjinrong/2133121

环境

软件环境

系统:CentOS 7.3
MySQL版本:5.7.33

主机设置:

IP

主机名

角色

10.10.133.47

master-jin

master

10.10.133.48

node1-jin

slave

二、Mysql主从基本原理

Mysql的主从同步就是当master(主库)发生数据变化的时候,会实时同步到slave(从库)。
主从复制可以水平扩展数据库的负载能力,容错,高可用,数据备份。
不管是delete、update、insert,还是创建函数、存储过程,都是在master上,当master有操作的时候,slace会快速的接受到这些操作,从而做同步。

主要的实现原理

在master机器上,主从同步时间会被写道特殊的log文件中(binary-log);

在slave机器上,slave读取主从同步事件,并根据读取的事件变化,在slave库上做相应的更改。

详细的主从同步主要有三种形式:statement、row、mixed

  • statement:会将对数据库操作的sql语句写道binlog中
  • row:会将每一条数据的变化写道binlog中。
  • mixed:statement与row的混合。Mysql决定什么时候写statement格式的,什么时候写row格式的binlog。

在master机器上的操作:

当master上的数据发生变化的时候,该事件变化会按照顺序写入binlog中。当slave链接到master的时候,master机器会为slave开启binlog dunp线程。当master的binlog发生变化的时候,binlog dump线程会通知slave,并将相应的binlog内容发送给slave。

在slave机器上操作:

当主从同步开启的时候,slave上会创建两个线程:I\O线程。该线程连接到master机器,master机器上的binlog dump 线程会将binlog的内容发送给该I\O线程。该I/O线程接收到binlog内容后,再将内容写入到本地的relay log;sql线程。该线程读取到I/O线程写入的ralay log。并且根据relay log。并且根据relay log 的内容对slave数据库做相应的操作。

主从配置

  1. master配置文件设置

vim /etc/my.cnf

在[mysqld]下添加以下配置

#主从配置(master的配置)

server-id=1 # 服务器id (设置唯一标识)

binlog-do-db=UMS # 要给从机同步的库

binlog-ignore-db=mysql # 不给从机同步的库(多个写多行)

binlog-ignore-db=information_schema

binlog-ignore-db=performance_schema

binlog-ignore-db=sys

log-bin=mysql-bin # 打开日志(主机需要打开),可以指定绝对路径;

expire_logs_days=30 # 自动清理 30 天前的log文件,可根据需要修改

  1. slave配置文件设置

vim /etc/my.cnf

在[mysqld]下添加以下配置

#主从配置(slave配置)

server-id=2 # MySQLid 后面2个从服务器需设置不同

skip_slave_start=1 # 复制进程不会随着数据库的启动而启动,重启数据库后需手动启动;

#加上以下参数可以避免更新不及时,SLAVE 重启后导致的主从复制出错。

read_only = 1 # 从库普通账户只读;

master_info_repository=TABLE

relay_log_info_repository=TABLE

  1. 重启mysql生效配置

/etc/init.d/mysql restart

  1. master数据库中建立主从同步账号umpay

umpay为用户名,%表示任何远程地址,如下表示密码为'umpay'的10.10.133段地址的umpay都可以连接master主机,密码为umpay2010。

mysql> grant replication slave on *.* to 'umpay'@'10.10.133.%' identified by 'umpay2010' ; # 创建同步账户

mysql> flush privileges; # 刷新权限

mysql> select Host,User,authentication_string from mysql.user; # 检查是否创建

  1. master数据库事件查看

mysql> show master status \G

*************************** 1. row ***************************

File: mysql-bin.000001

Position: 771

Binlog_Do_DB: UMS

Binlog_Ignore_DB: mysql,information_schema,performance_schema,sys

Executed_Gtid_Set:

1 row in set (0.00 sec)

查看主服务器上当前的二进制日志名和偏移量值,在slave连接时需要用到

File: mysql-bin.000001和Position: 771

  1. slave连接主库

在slave尝试连接主库的授权用户是否可以连通

mysql -h 10.10.133.147 -u umpay -p

mysql>change master to master_host='10.10.133.147',master_port='3508',master_user='umpay', master_password='umpay2010', master_log_file='mysql-bin.000001', master_log_pos=771;

Query OK, 0 rows affected, 1 warning (0.31 sec)

mysql> start slave;

Query OK, 0 rows affected (0.00 sec)

mysql> show slave status \G

查看到以下值为YES,则主从搭建成功。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

  1. 测试

在master上执行

mysql> create schema UMS default character set utf8 collate utf8_general_ci;

mysql> use UMS;

mysql> create table test001(id int auto_increment primary key,name varchar(20) not null);

mysql> insert into test001 values(null,'will');

mysql> insert into test001 values(null,'jim');

mysql> insert into test001 values(null,'tom');

在slave上查看

mysql> select * from UMS.test001;

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

| id | name |

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

| 1 | will |

| 2 | jim |

| 3 | tom |

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

3 rows in set (0.00 sec)

标签:binlog,slave,mysql5.7,master,mysql,线程,主从,搭建
From: https://www.cnblogs.com/xiaobaijin/p/18503751

相关文章

  • Linux下搭建mysql5.7数据库
    Linux下搭建mysql数据库参考网址:https://www.cnblogs.com/dengshihuang/p/8029092.html系统约定系统版本:Centos7.3 Mysql版本:5.7安装文件下载目录:/data/softwareMysql安装目录:/opt/app/mysql数据库保存位置:/opt/app/mysql/data/mysql日志保存位置:/opt/app/mysql/data/mysql/log/my......
  • Mysql主主搭建
    Mysql主主搭建参考网址:https://www.jianshu.com/p/0fadd3c54875IP1:10.10.133.117(主)IP2:10.10.133.118(从主)环境:Centos7.3前提是两台机器都装好了mysql,要同步的数据库数据相同,mysql版本尽量相同Mysql复制原理master服务器将数据的改变都记录到二进制binlog日志中,只要master上......
  • ELK日志管理系统搭建文档
    ELK日志管理系统搭建文档ELK是ElasticsearchLogstashkibana三个开源软件的组合来进行搭建.jianyi1jianyijianyi1建议架构:节点服务器部署程序备注节点1node-110.10.183.211Elasticsearch、kibana、head主节点节点2node-210.10.183.1......
  • Centos7.x搭建FTP文件服务器
    ##参考网址https://blog.csdn.net/wqh0830/article/details/87743928#1、创建用户名并指定家目录,useradd-d/home/ftpuser-s/sbin/nologinftpuseruseradd-d/home/ftpuser-gumpay-s/sbin/nologinftpuser#-d-->更改用户的家目录为/home/ftpuse;此目录与数据目录保持一致#-......
  • Linux下搭建sftp服务
    1.创建sftp组groupaddsftpcat/etc/group2.创建一个sftp用户zyfdsftp并加入到创建的sftp组中,同时修改zyfdsftp用户的密码useradd-gsftp-s/sbin/nologin-d/home/ftpuserzyfdsftppasswdzyfdsftp3.新建/sftp/zyfdsftp目录(需要在/下单独创建目录),并将它指定为......
  • 【RocketMQ】源码以及环境搭建
    1  前言本节我们开始看一下RocketMQ相关的东西,我们主要看一条链路,大致如下:(1)环境的搭建,源码的下载(2)消息的结构以及相关类可能也会看下消息的存储(3)消息的生产以及发送过程(4)消息的消费过程大概看着四方面的内容,本节主要看下源码的下载以及环境的搭建。在看之前,我们顺便回......
  • React项目搭建
    1.环境准备确保你的计算机上已安装以下工具:Node.js:React需要Node.js来运行和管理依赖。你可以从Node.js官网下载并安装最新版本。npm:Node.js安装后会自带npm(NodePackageManager),用于管理项目依赖。2.创建项目使用CreateReactApp是快速创建React应用的推荐方式。打开终......
  • VUE使用什么连接并搭建搭建本地数据库
    VUE连接并搭建搭建本地数据库需要一些项目:vue-cli2全局安装npminstallvue-cli-g局部安装项目vueinitwebpack项目名称例如:vueinitwebpackdemo1二、express-generator1.全局安装npminstallexpress-generator-g2.express–view=ejs。局部安装项目。vueinitwebpack项......
  • 在Windows 10操作系统中搭建FTP
    在Windows10操作系统中搭建FTP(FileTransferProtocol,文件传输协议)服务器,可以为局域网内的用户提供文件共享和传输服务。以下是详细的搭建步骤,包括准备工作、安装与配置FTP服务、以及测试与访问FTP服务器等环节。一、准备工作在搭建FTP服务器之前,需要做好以下准备工作:确......
  • ESP-IDF搭建项目的目录结构
    ESP-IDF中组织项目,下面我将详细介绍ESP-IDF项目的目录结构,并指导您如何设计项目,以便整合之前提供的代码。目录ESP-IDF项目目录结构概述创建ESP-IDF项目项目目录结构详解3.1根目录3.2main目录3.3components目录(可选)配置文件详解4.1CMakeLists.txt文件4.2......