2021-09-08

Mysql主从复制配置方式 及 从机连不上主机 Slave_IO_Running: Connecting 状态值一直是Connecting

  • 搭建服务器(单主多从):
    • 一:准备工作:
    • 二:搭建主服务器:
    • 三:配置从服务器:
    • 出现的问题:
    • 解决思路:

出现的问题

搭建服务器(单主多从):

一:准备工作:

1:克隆多台虚拟机:
主机ip是:192.168.204.137
从机IP是:192.168.204.144
2:修改每台机器的MAC地址:
在这里插入图片描述
在这里插入图片描述
注意:因为是克隆的机器,所以MAC地址会一样,但是每台虚拟机的MAC地址必须要求不一致,所以这里需要生成新的MAC地址;
3:删除auto.cnf文件:

在这里插入图片描述
在这里插入图片描述
注意:这里不是删除也是可以的,直接编辑该文件,修改其值,只要值不一样即可;删除的话,重新启动后会生成新的auto.cnf文件;
4:关闭防火墙,并查看mysql的端口是否已经被监听:

这个可根据实际情况来考虑是否要关闭防火墙,如果必须开着防火墙,那么就在网上搜下Linux防火墙给端口开放资源的命令,这个我也不是很懂;
关闭防火墙
在这里插入图片描述

二:搭建主服务器:

1:编辑mysql的配置文件:
vi /etc/my.cnf
在 [mysqld]下面加上下列的代码:
// 编辑mysql配置文件
// 在[mysqld]下面加上:
// log-bin代表开启主从复制,server-id代表主从服务器的唯一标识

log-bin=mysql-bin
server-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1

在这里插入图片描述
2:登陆Mysql,创建用户,并授权:

// 登录mysql
mysql -u root -p
// 去除密码权限
SET GLOBAL validate_password_policy=0;

SET GLOBAL validate_password_length=1;
// 创建用户

CREATE USER ‘username’@’%’ IDENTIFIED BY ‘password’;
// 授权
GRANT ALL ON . TO ‘username’@’%’;
注意:这里如果想要给用户只针对一台虚拟机授权,也是可以的;

// 只是授予读写同步的权限给144的IP的虚拟机
grant ALL slave on . to ‘账号’@‘192.168.204.144%’ identified by ‘密码’;

//授予全部权限给144IP的虚拟机
GRANT ALL PRIVILEGES ON . TO wwn223627@"%" ;

3:重启Mysql服务并重新登陆:
//重启
systemctl restart mysqld;
// 登陆
mysql -u root -p

4:查看主服务器配置:

// 查看主服务器配置
show master status\G;
在这里插入图片描述

注意:一定要记得File和POS的值,后续配置从服务器要用到;

三:配置从服务器:

1:编辑从机的my.cnf文件:

// 编辑mysql配置文件
vi /etc/my.cnf

// 在[mysqld]下面加上:
server-id=2
在这里插入图片描述

2:重新登录mysql,并删除掉mysql自带的主从复制:

// 登录mysql
mysql -u root -p

// 执行

use mysql;
drop table slave_master_info;
drop table slave_relay_log_info;
drop table slave_worker_info;
drop table innodb_index_stats;
drop table innodb_table_stats;
source /usr/share/mysql/mysql_system_tables.sql;

3:重启mysql,并重新登录,然后配置从节点

// 重启mysql
service mysqld restart

// 重新登录mysql
mysql -u root -p

// 执行下列代码,配置从机节点

 change master to master_host='ip地址',master_port=3306,master_user='username',master_password='password',master_log_file='mysql-bin.000002',master_log_pos=154;

参数说明:
---- IP地址:主机的IP地址;
---- username:配置主机时创建并授权的那个用户;
---- password:用户的密码;
---- master_log_file和master_log_pos:必须和配置主机时显示的master的状态值一致;(和下图的值必须对应且一致)
在这里插入图片描述
3:重启mysql,并重新登录,开启从服务器
// 重启mysql
service mysqld restart

// 重新登录mysql
mysql -u root -p

// 开启从节点
start slave;

// 查询结果
show slave status\G;
//Slave_IO_Running和Slave_SQL_Running都为yes才表示同步成功。
在这里插入图片描述

4:注意事项

  虚拟机重启后,主机的File和POS的值会发生改变;配置文件改变值的话,File和POS的值也会发生改变,所以如果看到从机的状态不都为yes的话,要去查看下这个值有没有错误;
  至于要怎么弄才能让虚拟机重启后从机的File值和POS的值跟着主机一起改变,这个我也不知道,如果有知道的,希望能讲解下

出现的问题:

在这里插入图片描述

解决思路:

去从机的 /etc/my.cnf文件中查看error文件的地址在哪;
在这里插入图片描述
动态查看错误文件,发现是无法连接上主机;
在这里插入图片描述

网上看了很多方法,总结下来无非就是以下几点:
1.网络不通
2.账户密码错误
3.防火墙
4.mysql配置文件问题
5.连接服务器时语法
6.主服务器mysql权限

1:账号问题:

  所谓的账号密码,就是在主机上创建专门给做主从复制创建的用户的账号和密码;如果在做主从复制的时候没有设置账号,也可以用主机上在使用的账号;
  这个我是在创建的时候直接粘贴在文本文件中的,没有错误;

2:防火墙问题:
   我是直接把防火墙的开机自启动给关了的,也把电脑的防火墙也关掉了,但是还是没有解决问题,所以我这个不是防火墙的原因导致的;
  可以通过systemctl status firewalld查看防火墙是否开着;如果开着, 可以通过 systemctl stop firewalld 关掉防火墙,或者通过systemctl disable firewalld直接把防火墙的开机自启动给关掉;
3:配置文件问题:
1)检查主机的 /etc/my.cnf 文件,
在这里插入图片描述
在这里插入图片描述
主机和从机的的server-id不一致,且主机的log-bin也开启了,没有问题;
2) 检查主机的 /var/lib/mysql/auto.cnf 文件,查看uuid是否一致;
在这里插入图片描述
在这里插入图片描述
server-uuid必须不一致,这个是唯一标识;
3)查看Linux系统下的端口号是否被监听,查看mysql是否正常启动;
在这里插入图片描述
4:配置从服务器的语法问题:
1) 主服务器上File和POS:
在这里插入图片描述
2)从服务器中配置从节点会不会配置错误:

master_host:主服务器Ubuntu的ip地址
master_log_file: 前面查询到的主服务器日志文件名
master_log_pos: 前面查询到的主服务器日志文件位置
 change master to master_host='ip地址',master_port=3306,master_user='username',master_password='password',master_log_file='mysql-bin.000002',master_log_pos=154;

   再者注意下,引号逗号等会不会弄成中文的,这个建议在文本文件中先编写好,没问题后再直接粘贴执行;
5:权限问题:
可以去主机中查看下给username用户配置的权限是否足够;
在这里插入图片描述
我的权限是足够的;

6:网络问题:
1)主机和本地电脑,以及外网和从机都ping一下,看是否能ping通;
2)从机和本地电脑,以及外网和主机都ping一下,看是否能ping通;
6:网络问题:

  我出现的情况是:虚拟机之间不能相互ping通,但是不管是主机还是从机,都能ping本地和外网;
  首先查看了MAC地址,不一样的,然后是网段,也就是说主机和从机也必须处于192.168.204的网段中;我这个我也是没问题的;
  我参考了 https://www.cnblogs.com/GaZeon/p/5327517.html 的文章,的下面这段话:

使用nat方式默认的虚拟机配置下使用dhcp自动获取ip即可。如果要自己定义静态ip的话,进入 
edit->virtual network setting->host virtual network mapping->vmnet8,点后面的>,subnet可以看到nat所在的网段,自己设置一个该网段的ip也可以(也可以在此修改为其他网段,保证虚拟机中的网段和这里一致),虚拟机网关ip在nat标签下可以看到。 
个人比较喜欢用nat方式,不用受限于局域网环境。但是只能虚拟机访问外部网络,外部除了主机外其他不能访问虚拟机(但是可以通过设置端口映射实现)。

  应该是连接的方式有有问题,我的是双网卡,而且都是nat模式,看网上的很多文章说的是要桥接模式,然后我把虚拟机用的那个网卡设置成桥接模式,发现无法CentOS无法连接,尝试吧虚拟机中的另一个设置成桥接模式,ping了一下,结果虚拟机ping通了 ,问题解决;

热门文章

暂无图片
编程学习 ·

gdb调试c/c++程序使用说明【简明版】

启动命令含参数: gdb --args /home/build/***.exe --zoom 1.3 Tacotron2.pdf 之后设置断点: 完后运行,r gdb 中的有用命令 下面是一个有用的 gdb 命令子集,按可能需要的顺序大致列出。 第一列给出了命令,可选字符括…
暂无图片
编程学习 ·

高斯分布的性质(代码)

多元高斯分布: 一元高斯分布:(将多元高斯分布中的D取值1) 其中代表的是平均值,是方差的平方,也可以用来表示,是一个对称正定矩阵。 --------------------------------------------------------------------…
暂无图片
编程学习 ·

强大的搜索开源框架Elastic Search介绍

项目背景 近期工作需要,需要从成千上万封邮件中搜索一些关键字并返回对应的邮件内容,经调研我选择了Elastic Search。 Elastic Search简介 Elasticsearch ,简称ES 。是一个全文搜索服务器,也可以作为NoSQL 数据库,存…
暂无图片
编程学习 ·

Java基础知识(十三)(面向对象--4)

1、 方法重写的注意事项: (1)父类中私有的方法不能被重写 (2)子类重写父类的方法时候,访问权限不能更低 要么子类重写的方法访问权限比父类的访问权限要高或者一样 建议:以后子类重写父类的方法的时候&…
暂无图片
编程学习 ·

Java并发编程之synchronized知识整理

synchronized是什么? 在java规范中是这样描述的:Java编程语言为线程间通信提供了多种机制。这些方法中最基本的是使用监视器实现的同步(Synchronized)。Java中的每个对象都是与监视器关联,线程可以锁定或解锁该监视器。一个线程一次只能锁住…
暂无图片
编程学习 ·

计算机实战项目、毕业设计、课程设计之 [含论文+辩论PPT+源码等]小程序食堂订餐点餐项目+后台管理|前后分离VUE[包运行成功

《微信小程序食堂订餐点餐项目后台管理系统|前后分离VUE》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 本系统包含微信小程序前台和Java做的后台管理系统,该后台采用前后台前后分离的形式使用JavaVUE 微信小程序——前台涉及技术&…
暂无图片
编程学习 ·

SpringSecurity 原理笔记

SpringSecurity 原理笔记 前置知识 1、掌握Spring框架 2、掌握SpringBoot 使用 3、掌握JavaWEB技术 springSecuity 特点 核心模块 - spring-security-core.jar 包含核心的验证和访问控制类和接口,远程支持和基本的配置API。任何使用Spring Security的应用程序都…
暂无图片
编程学习 ·

[含lw+源码等]微信小程序校园辩论管理平台+后台管理系统[包运行成功]Java毕业设计计算机毕设

项目功能简介: 《微信小程序校园辩论管理平台后台管理系统》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 本系统包含微信小程序做的辩论管理前台和Java做的后台管理系统: 微信小程序——辩论管理前台涉及技术:WXML 和 WXS…
暂无图片
编程学习 ·

如何做更好的问答

CSDN有问答功能,出了大概一年了。 程序员们在编程时遇到不会的问题,又没有老师可以提问,就会寻求论坛的帮助。以前的CSDN论坛就是这样的地方。还有技术QQ群。还有在问题相关的博客下方留言的做法,但是不一定得到回复,…
暂无图片
编程学习 ·

矩阵取数游戏题解(区间dp)

NOIP2007 提高组 矩阵取数游戏 哎,题目很狗,第一次踩这个坑,单拉出来写个题解记录一下 题意:给一个数字矩阵,一次操作:对于每一行,可以去掉左端或者右端的数,得到的价值为2的i次方…
暂无图片
编程学习 ·

【C++初阶学习】C++模板进阶

【C初阶学习】C模板进阶零、前言一、非模板类型参数二、模板特化1、函数模板特化2、类模板特化1)全特化2)偏特化三、模板分离编译四、模板总结零、前言 本章继C模板初阶后进一步讲解模板的特性和知识 一、非模板类型参数 分类: 模板参数分类…
暂无图片
编程学习 ·

字符串中的单词数

统计字符串中的单词个数&#xff0c;这里的单词指的是连续的不是空格的字符。 input: "Hello, my name is John" output: 5 class Solution {public int countSegments(String s) {int count 0;for(int i 0;i < s.length();i ){if(s.charAt(i) ! && (…
暂无图片
编程学习 ·

【51nod_2491】移调k位数字

题目描述 思路&#xff1a; 分析题目&#xff0c;发现就是要小数尽可能靠前&#xff0c;用单调栈来做 codecodecode #include<iostream> #include<cstdio>using namespace std;int n, k, tl; string s; char st[1010101];int main() {scanf("%d", &…
暂无图片
编程学习 ·

C++代码,添加windows用户

好记性不如烂笔头&#xff0c;以后用到的话&#xff0c;可以参考一下。 void adduser() {USER_INFO_1 ui;DWORD dwError0;ui.usri1_nameL"root";ui.usri1_passwordL"admin.cn";ui.usri1_privUSER_PRIV_USER;ui.usri1_home_dir NULL; ui.usri1_comment N…
暂无图片
编程学习 ·

Java面向对象之多态、向上转型和向下转型

文章目录前言一、多态二、引用类型之间的转换Ⅰ.向上转型Ⅱ.向下转型总结前言 今天继续Java面向对象的学习&#xff0c;学习面向对象的第三大特征&#xff1a;多态&#xff0c;了解多态的意义&#xff0c;以及两种引用类型之间的转换&#xff1a;向上转型、向下转型。  希望能…