IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【linux环境】MySQL主从复制配置原理与详解 -> 正文阅读

[系统运维]【linux环境】MySQL主从复制配置原理与详解

前言

MySQL主从复制实战。以前总听说集群之类的,从来没有好好思考过。如今有空余时间,终于亲自搭建环境得以实现MySQL主从复制。

从搭建虚拟机环境,以及安装Redhat系列的centos7.5服务器,部署MySQL5.6环境。嘿嘿,测试使用虚拟机搭建美滋滋。当然你也可以花money,多建几台云服务器实现集群环境。

正文

MySQL主从复制实战

主要使用到的环境说明

在这里插入图片描述

数据库版本

#使用centos7.3初始安装就可选择安装所需基本环境
5.6.51-log MySQL Community Server (GPL)

操作系统

linux for centos7.3  or centos7.5

测试环境:VMware12虚拟机搭建三台centos7.3服务器
服务器IP地址

IP_MASTER:192.168.245.131
IP_SLAVE:192.168.245.132
IP_SLAVE:192.168.245.132

搭建服务器环境参考文章VMware12配合使用Centos7搭建Linux开发环境

测试模型:一主两从,即(master、slave、slave)
知识宝库:VMware的简单使用,Linux基本命令、MySQL数据库CRUD
tips:VMware8亦可搭建,解决内存过小,这个小伙子有点东西啊!
目标实现:MySQL主从复制

一、binlog与relay-log

1.1 binlog

作用:记录数据库改变的数据,在第四步可以进行验证。

查看binlog日志

/** 查看binlog日志 **/
SHOW BINLOG EVENTS IN 'mysql-bin.000004'

mysqlbinlog查看binlog日志

/** mysqlbinlog查看binlog日志 **/
mysqlbinlog --short-form --force-if-open --base64-output=never /var/lib/mysql/mysql-bin.000004 //对应你MySQL的安装目录

1.2 relay-log

作用:连接master与slave节点的核心

01 master.info
02 relay-log.info

1.3 参考文章(理论知识详解)

第一篇对binlog与relay-log讲解很透彻(个人理解)
https://www.cnblogs.com/ilovejaney/p/13649345.html
第二篇讲解整体性更好
https://juejin.cn/post/6967224081410162696?share_token=a491f9eb-ff33-4ea3-a171-0ad2d878eca8

二、master节点配置

2.1 master节点配置

MySQL数据库配置文件my.cnf

vim /etc/my.cnf

加入配置

[mysqld]
#开启binlog
log-bin=mysql-bin
#不与其它从节点重复即可
server-id=101
#需要同步的数据,如果不配置则同步全部
binlog-do-db=test_db
#binlog日志保留的天数,清除超过10天的日志;防止日志文件过大,导致磁盘空间不足
expire-logs-days=10
#开启混合模式
binlog_format=mixed
innodb_file_per_table=ON
skip_name_resolve=ON

2.2 重启mysql

#readhat7系列使用方式
systemctl restart mysql

2.3 通过命令查看主节点状态

show master status\G;

注意查看:master_log_pos的值,这点很重要,master与搭建集群的两个slave节点保持一致。

2.4 授权slave节点账号

关联授权搭建的两个slave子节点

#关联授权搭建的两个slave子节点
GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.245.132' IDENTIFIED BY '123456';
#关联授权搭建的两个slave子节点
GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.245.133' IDENTIFIED BY '123456';

刷新权限

#刷新权限
flush privileges;

2.5 查看验证

显示查看日志

#显示查看日志
show global variables like '%log%';

显示查看服务

#显示查看服务
show global variables like '%server%';

三、slave节点配置

3.1 slave节点配置

MySQL数据库配置文件my.cnf

#slave01(从节点配置)
vim /etc/my.cnf
[mysqld]
#不与主节点以及其它从节点重复即可
server-id=102

3.2 登录mysql设置

mysql -uroot -p

输入命令如下

CHANGE MASTER TO
MASTER_HOST='192.168.245.131',//MASTER主节点IP
MASTER_USER='root',//创建的用户
MASTER_PASSWORD='123456',//用户密码
MASTER_LOG_FILE='mysql-bin.000001',//MASTER主机binlog日志名称,必须是最新的一个
MASTER_LOG_POS=120,//binlog日志偏移量,对应master节点的
master_port=3306;/端口号

3.3 开启中继日志

[mysqld]
server-id=102 #必须
relay-log=relay-log #必须
relay-log-index=relay-log.index #必须
innodb_file_per_table=ON #非必须
skip_name_resolve=ON #非必须

3.4 辅助操作

查看slave子节点状态

#查看slave子节点状态
show slave status\G;

启动slave节点

#启动slave节点
start slave;

关闭slave节点

#关闭slave节点
stop slave;

3.5 slave02(从节点配置)

修改MySQL从节点配置文件

vim /etc/my.cnf
[mysqld]
#不与主节点以及其它从节点重复即可
server-id=103

查看slave子节点状态

#查看slave子节点状态
show slave status\G;

启动slave节点

#启动slave节点
start slave;

四、创建表以及新增数据进行验证

4.1 创建数据库用户

建议使用SQLyog工具创建用户,比较方便。

链接: https://pan.baidu.com/s/11gIlZKxoTG5BCCcoXdVJRg 提取码: ntu7

4.2 创建表

/** 创建测试表GIRL **/
CREATE TABLE `GIRL` (
  `ID` varchar(64) CHARACTER SET utf8 NOT NULL,
  `GIRE_NAME` varchar(64) COLLATE utf8_bin DEFAULT NULL,
  `GIRL_AGE` varchar(10) COLLATE utf8_bin DEFAULT NULL,
  `CUP_SIZE` varchar(2) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

4.3 生成测试数据

/** 插入测试数据 **/
insert into GIRL values('tolove16B','梦梦','16','B');

4.4 采用SQLylog工具验证

master节点插入测试数据
在这里插入图片描述

master节点binlog日志验证
在这里插入图片描述
slave_check_RELAYLOG(133服务器)
在这里插入图片描述

132_slave_insert_data_girl同步数据
在这里插入图片描述

133_slave_check_RELAYLOG日志
在这里插入图片描述

133_slave_同步数据
在这里插入图片描述

五、排查问题

5.1 error 1236

master_log_pos与从节点不一致导致error 1236
在这里插入图片描述
分析日志:position日志偏移量与master节点不一致
设置的master_log_pos发生改变,导致position不一致,出现无法同步(报:error 1236)
在这里插入图片描述

slave节点正常状态参考

注意:我截图上的是后期优化处理过的,所以看到的pos和上面的不一致
在这里插入图片描述

5.2 解决问题

通过如下设置保持与master节点一致
首先关闭slave节点

stop slave

查看master节点日志偏移量

show master status\G;

在slave节点修改日志偏移量与master一致

change master to master_log_file ='mysql-bin.000005',master_log_pos=950;

最后启动slave节点

start slave

六、实现MySQL主从复制

6.1 分析模型

分析模型:一主一从,一主多从,多主一从

6.1.1 一主一从模型:master->slave

在这里插入图片描述

6.1.2 一主多从

在slave节点再配置slave缓解master服务器压力
在这里插入图片描述

6.1.3 多主一从

在这里插入图片描述

6.1.4 特例:主-主复制

(每一个主既是从又是主)
在这里插入图片描述

6.1.5 使用SQLylog操作验证

分别登陆三台数据库服务器(推荐SQLylog工具)
同时登陆xshell工具连接查看三台服务器状态(推荐使用xshell或者SecureCRT)

ip:192.168.245.131 //master

数据库:test_db //与master节点配置单一用户对应
数据库表:GIRL

ip:192.168.245.132 //slave

master节点创建GIRL表,slave同步创建

ip:192.168.245.133 //slave

master节点创建GIRL表,slave同步创建

tips:如果想实现主-主同步,则需要在其它两台配置数据库用户关联授权,参考第二步。
我并没有验证主-主同步,嘿嘿,当然你可以私下验证哟!

七、附件(搭建环境)

7.1 虚拟机搭建环境

搭建服务器环境参考文章VMware12配合使用Centos7搭建Linux开发环境

7.1.1 搭建虚拟机环境
在这里插入图片描述

7.1.2 虚拟机服务器配置
在这里插入图片描述

7.2 xshell远程连接

7.2.1 使用xshell远程连接
在这里插入图片描述

7.3 搭建linux环境

准备三台MySQL服务器配置主从复制(master:131,slave:132,slave:133)
在这里插入图片描述

131 master主节点my.cnf配置
在这里插入图片描述

131 验证master节点log_bin开启
在这里插入图片描述

131 show_master_status查看状态(注意:此时master的pos为120)
在这里插入图片描述

131查看主节点master的server服务(131服务器)
在这里插入图片描述

131查看主节点binlog日志所在目录(131服务器)
在这里插入图片描述

start_slave启动从节点132(此时master的pos为120,没对应上导致slave无法读取)
在这里插入图片描述
在这里插入图片描述

参考步骤五排查问题进行解决
在slave节点修改日志偏移量与master一致,master_log_file对应先查出主节点最新的:

show master status\G;

查看此时master的pos为120

在这里插入图片描述

此时设置master_log_pos=120

change master to master_log_file ='mysql-bin.000001',master_log_pos=120;

正常slave节点读取_IO_SQL_Running为YES,如下图
在这里插入图片描述

slave_mysql_log(132服务器对应的slave节点)
在这里插入图片描述

启动从节点slave(对应slave节点133服务器)

/**(此时master的pos为120,没对应上导致slave无法读取)
参考132服务器正常状态,修改pos对应上master节点 **/

start slave

slave节点MySQL日志(slave节点对应133服务器)
在这里插入图片描述

132开启从节点中继日志
在这里插入图片描述

7.4 采用SQLylog工具进行测试

131_master_插入测试数据
在这里插入图片描述

131_master_binlog_日志验证
在这里插入图片描述
132_slave_check_RELAYLOG
在这里插入图片描述

132_slave_insert_data_girl同步数据
在这里插入图片描述

133_slave_check_RELAYLOG日志
在这里插入图片描述

133_slave_同步数据
在这里插入图片描述

持续更新优化中…

开心一刻

只要你找个好老板,找一份好工作,好好工作。
辛勤工作,早起晚归,经常加班。
早晚有一天,这个老板,会更有钱。换更好的车,换更好的房。
再给我一个机会,我想回到昨天,因为我安眠药吃多了。

开心一刻,乐呵乐呵。创作乐无边,学而思有境。你会发现,自己的知识宝库越来越丰富。好了,到此为止就是此篇文章的全部内容了,能看到这里的都是帅哥靓妹啊!!!善于总结,其乐不穷。好记性不如烂笔头,多收集自己第一次尝试的成果,收获也颇丰。你会发现,自己的知识宝库越来越丰富。白嫖有瘾,原创不易。

by 龙腾万里sky 原创不易,白嫖有瘾

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 12:25:39  更:2021-12-07 12:26:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:40:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码