CentOS7环境下MySQL的主从配置

一、什么叫主从复制

通过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的客户响应时间。通俗点说就是select查询发送到从服务器,修改数据的语句发送到主服务器,以此来降低主服务器的查询处理压力

二、主从复制工作原理

MySQL主从是基于binlog的,主服务器必须开启binlog才能进行主从。3个过程实现,其中一个过程在主服务器上,另外两个过程发生在从服务器上。

  1. master服务器将增删改操作记录写入到binlog里
  2. slave服务器将binlog中(sql语句)同步到自己的relaylog里
  3. slave服务器从relaylog里面的SQL语句按顺序很执行

三、主从复制的优点

  • 数据库备份 假如一台服务器宕机或数据丢失,我们只需把其他服务器上的数据库copy一份就可以了
  • 读写分离 根据2、8原则,系统中80%的请求多是查询(select),20%请求为增删改(insert、delete、update)。当项目请求数足够大的时候,读写分离可以有效的减轻数据库压力

步骤

1、准备数据库服务器

以centos7下的lnmp集成包为例,保持两台主机网络畅通

  • 主(master) 192.168.0.253
  • 从(slave) 192.168.0.251

首先要考虑防火墙影响,要么关闭防火墙;

[root@localhost jack]# systemctl stop firewalld.service

要么在防火墙里添加开放3306端口的规则:

[root@localhost jack]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@localhost jack]# firewall-cmd --reload

2、主服务器配置

1、修改主服务器上:/etc/my.cnf

server-id = 1
log-bin = mysql-bin #主从服务的核心 定义binblog日志的前缀名
binlog-do-db=test #需要同步的数据库,如果没有本行,即表示同步所有的数据库
binlog-do-db=mydb #需要同步的数据库,同时同步test、mydb库
binlog-ignore-db=mysql #被忽略的数据库

在主服务器创建一个专门用来同步的用户,注意下面:

  • *.* 指定能操作所有的表和库;
  • mysync表示在系统中创建一个用户,用于负责主从工作;
  • %表示允许所有主机,
  • 后面跟具体的ip(192.168.0.251),表示针对某一个主机用来做从服务器
    # GRANT REPLICATION SLAVE ON *.* TO 'mysync'@'%' IDENTIFIED BY '12345678';
    
    mysql> GRANT REPLICATION SLAVE ON *.* TO 'mysync'@'192.168.0.251' IDENTIFIED BY '12345678';
    mysql> show master status; // 等着 留意file 和postion字段

    锁定数据库,此时不允许更改任何数据,当然也可以省略这一步,只要我们人为的不操作数据就好

    mysql> flush tables with read lock;  

    查看主服务器当前状态,这些数据是要记录的,一会要在slave服务器端用到

    mysql> show master status;  // 等着 留意file 和postion字段
    +------------------+----------+--------------+------------------+
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000006 | 511 | test,mydb | |
    +------------------+----------+--------------+------------------+

3、从服务器

1、修改主服务器上:/etc/my.cnf

server-id = 251  //保证唯一性

2、设置从服务

mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.253',MASTER_USER='mysync',
MASTER_PASSWORD='12345678',MASTER_LOG_FILE='mysql-bin.000006',MASTER_LOG_POS=511;
  • MASTER_LOG_FILE //从主服务器上看status
  • MASTER_LOG_POS //同上
mysql> start slave  #开启从服务
mysql> show slave status\G #查看从服务状态

如下两个选项都为yes标明主从成功

Slave_IO_Running:Yes
Slave_SQL_Running:yes

出现

Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

解决

find / -name auto.cnf

删除auto.cnf文件内容

4、测试增删改

具体自己测试,聂哥就不管了,其实就简单创建一个表,或添加几条数据就能测试

5、友情提醒

主从复制搭建起来不算难,只要按照上面步骤来,一般不会有问题。但是一旦我们不小心在slave服务器上写了数据,那么主从也就被破坏了。 另外如果非要重启master服务器,一定要先把slave服务器停掉,也就是说需要在slave上去执行 slave stop 命令,然后再去重启master服务器上的mysql服务,否则很有可能就会中断了。 当然重启完后,还需要把slave服务器给开启 slave start.

CentOS7环境下MySQL的主从配置的更多相关文章

  1. Centos7下mysql的主从配置

    最近,有朋友业务并发量比较大,让我帮他配置个主从,来缓解数据库的压力.下面就是我配置的,有需要的朋友可以借鉴下. 首先,我得到2台服务器: 172.18.2.142(主) 172.18.2.141(从 ...

  2. Linux环境下mysql安装并配置远程访问

    环境:centOS 1.下载mysql安装文件 [root@localhost ~]# wget http://dev.mysql.com/get/mysql-community-release-el ...

  3. centos7环境下mysql安装

    1.去官网下载合适的yum源安装包 https://dev.mysql.com/downloads/repo/yum/ 2.yum 本地安装 命令:yum localinstall mysql57-c ...

  4. Linux centos7环境下安装MySQL的步骤详解

    Linux centos7环境下安装MySQL的步骤详解 安装MySQL mysql 有两个跟windows不同的地方 1).my.ini 保存到/etc/my.ini 2).用户权限,单独用户执行 ...

  5. centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解

    centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解 操作系统:centos 7.2 x86_64 安装walle系统服务端 1.以下安装,均在宿主机( ...

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

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

  7. 在ConoHa上Centos7环境下源码安装部署LNMP

    本文记录了从源码,在Centos 7上手动部署LNMP环境的过程,为了方便以后对nginx和mariadb进行升级,这里采用yum的方式进行安装. 1.建立运行网站和数据库的用户和组 groupadd ...

  8. [转帖]mysql数据库主从配置

    mysql数据库主从配置 https://www.toutiao.com/i6680489302947791371/ 多做实验 其实挺简单的 很多东西 要提高自信 去折腾. 架构与我 2019-04- ...

  9. linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦

    linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(一) 一.Linux下安装MySQL 1.下载 下载地址:http://dev.mysql.co ...

  10. [原] KVM 环境下MySQL性能对比

    KVM 环境下MySQL性能对比 标签(空格分隔): Cloud2.0 [TOC] 测试目的 对比MySQL在物理机和KVM环境下性能情况 压测标准 压测遵循单一变量原则,所有的对比都是只改变一个变量 ...

随机推荐

  1. Codeforces Round #730 (Div. 2) A~D题个人题解

    比赛链接:Here 1543A. Exciting Bets math, 给定两个数字 \(a,b (a,b \le 1e18)\) 和以下两种操作: \(a + 1,b+1\) \(a-1,b-1\ ...

  2. 一个“不需要”写代码 的 mock & 代理 工具

    install yarn create @lowcoding/mock start yarn start mock server 默认在本地 3000 端口启动,访问 http://localhost ...

  3. 介绍这个库:C# Blazor中显示Markdown文件

    1 讲目的 前几天上线了一个在线Icon转换工具,为了让大家使用放心,改了点代码,在转换下载Icon图标后立即删除临时文件,并在工具下面贴上了工具的开发步骤和代码,大家看这样改是否合适,见Issue ...

  4. Clock Gating Design

    GPU max power distribution internal power and switch power - 动态功耗(时钟翻转) Leakage power - 漏电功耗(静态功耗,mo ...

  5. P2550 [AHOI2001] 彩票摇奖

    1.题目介绍 [AHOI2001] 彩票摇奖 题目描述 为了丰富人民群众的生活.支持某些社会公益事业,北塔市设置了一项彩票.该彩票的规则是: 每张彩票上印有 \(7\) 个各不相同的号码,且这些号码的 ...

  6. Laravel - 创建项目

    1,创建目录 ( 路径不要带有中文 ) 2,进入目录,执行下列命令 composer create-project --prefer-dist laravel/laravel project

  7. [转帖]各个版本Windows系统中自带的.NET Framework版本

    ① Windows Server : Windows Server版本 自带的.NET Framework 版本 Windows Server 2022 .NET Framework 4.8 Wind ...

  8. [转帖]Unicode标准中定义的3个私有使用区域-一个基本区域+两个补充区域

    Unicode私有使用区域 目录 1.概述 2.Unicode标准中的描述 2.1.基本多语言平面的私有区域 2.2.补充私有区域 2.3.私有区域位置 3.实际测试 3.1.测试代码 3.2.测试结 ...

  9. [转帖]S3FS 简介及部署

    PS:文章一般都会先首发于我的个人Blog上:S3FS 简介及部署 · TonghuaRoot's BloG. ,有需要的小伙伴可以直接订阅我的Blog,获取最新内容. 0x00 前言 S3FS可以把 ...

  10. [转帖]调试springboot数据库系统应用时常用debug日志配置, 解决问题缩小范围时常用

    https://www.yihaomen.com/article/1853.html 摘要: 用 spring boot 开发应用时,在遇到麻烦问题时,经常会打开debug日志,下面记录一个通用的思路 ...