Mysql主从搭建

Mysql主从搭建

  • 1.Mysql下载
    • 1.1 查看操作系统
    • 2.2 下载mysql安装包
  • 2.Mysql安装
    • 2.1 解压
    • 2.2 目录重命名
    • 2.3 创建data,存储文件
    • 2.4 创建用户组
    • 2.5 授权用户
    • 2.6 配置环境变量
    • 2.7 编辑my.cnf
    • 2.8 创建相关目录和文件
    • 2.9 初始化数据库
    • 2.10 复制mysql.server到/etc/init.d/下,这样我们可以在任意目录使用mysql命令
    • 2.11 赋予权限
    • 2.12 启动
    • 2.13 启动报错
    • 2.14 修改数据库密码
  • 3.搭建主从集群
    • 3.1主节点配置
      • 3.1.1 重启mysql
      • 3.1.2 给root用户分配一个replication slave的权限
    • 3.2 从节点配置
      • 3.2.1 重启mysql
      • 3.1.2 主节点同步状态

windos上安装比较简单且实际工作中我们的服务器都是linux。所以以linux上安装举例。

1.Mysql下载

1.1 查看操作系统

查看当前使用linux的操作系统使用的red hat 还是debian 还是ubuntn

uname -r
cat /etc/redhat-release

我自己这里使用的是red hat。

2.2 下载mysql安装包

// 官方下载网站
https://downloads.mysql.com/archives/community/

打开如下图
在这里插入图片描述

选择我们需要安装的 版本、系统。下载安装包
在这里插入图片描述
下载结果如下图
在这里插入图片描述

2.Mysql安装

前言:

  • 如果您之前使用操作系统本机包管理系统(例如 Yum 或 APT)安装了 MySQL,则使用本机二进制文件安装时可能会遇到问题。确保您以前安装的 MySQL 已被完全删除(使用您的包管理系统),并且所有其他文件(例如旧版本的数据文件)也已被删除。您还应该检查配置文件(例如/etc/my.cnf 或/etc/mysql目录)并将其删除。
  • MySQL对该库有依赖性libaio 。如果本地未安装此库,数据目录初始化和后续服务器启动步骤将失败。如有必要,请使用适当的包管理器安装它。例如,在基于 Yum 的系统上:
 yum search libaio  # search for info
 yum install libaio # install library

或者,在基于 APT 的系统上:

 apt-cache search libaio # search for info
 apt-get install libaio1 # install library`
  • Oracle Linux 8 / Red Hat 8 (EL8):这些平台默认情况下不安装 /lib64/libtinfo.so.5MySQL 客户端bin/mysql包 mysql-VERSION-el7-x86_64.tar.gz和 mysql-VERSION-linux-glibc2.12-x86_64.tar.xz. 要解决此问题,请安装该 ncurses-compat-libs软件包:
 $> yum install ncurses-compat-libs

以下操作使用root权限

2.1 解压

cd /usr/local
tar -zxvf mysql-8.0.20-el7-x86_64.tar.gz

2.2 目录重命名

mv mysql-8.0.20-el7-x86_64 mysql-8.0.20

2.3 创建data,存储文件

cd /usr/local/mysql-8.0.20
mkdir data

2.4 创建用户组

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

因为用户只需要用于所有权目的,而不需要用于登录目的,所以useradd命令使用-r和-s /bin/false选项来创建一个没有服务器主机登录权限的用户。如果您的useradd不支持这些选项,请忽略它们。

2.5 授权用户

 chown -R mysql.mysql /usr/local/mysql-8.0.20
 chmod 750 /usr/local/mysql-8.0.20/data -R

2.6 配置环境变量

vim /etc/profile
#在配置文件最后增加一行:
export PATH=$PATH:/usr/local/mysql-8.0.20/bin:/usr/local/mysql-8.0.20/lib
#使修改配置文件生效
source /etc/profile 

2.7 编辑my.cnf

vim /etc/my.cnf
[mysql]
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.socket

[client]
port=3306
socket=/var/lib/mysql/mysql.socket

[mysqld]
port=3306
server-id=3306
user=mysql
general_log=1
general_log_file=/var/log/mysql/mysql.log    #如果系统中不存在需要自己创建
socket=/var/lib/mysql/mysql.socket
basedir=/usr/local/mysql-8.0.20
datadir=/usr/local/mysql-8.0.20/data
log-bin=/usr/local/mysql-8.0.20/data/mysql-bin
innodb_data_home_dir=/usr/local/mysql-8.0.20/data
innodb_log_group_home_dir=/usr/local/mysql-8.0.20/data/
character-set-server=utf8mb4
lower_case_table_names=1
autocommit=1
symbolic-links=0
default_authentication_plugin=mysql_native_password

[mysqld_safe]
log-error=/usr/local/mysql-8.0.20/data/mysql.log
pid-file=/usr/local/mysql-8.0.20/data/mysql.pid

2.8 创建相关目录和文件

mkdir -p /var/log/mysql/
mkdir -p /var/lib/mysql
touch /var/log/mysql/mysql.log
chown -R mysql:mysql /var/log/mysql/
chown -R mysql:mysql /var/lib/mysql/

2.9 初始化数据库

cd /usr/local/mysql-8.0.20/bin/
./mysqld --user=mysql --basedir=/usr/local/mysql-8.0.20 --datadir=/usr/local/mysql-8.0.20/data/ --initialize

在这里插入图片描述
第一个红色error,提示文件不存在。(检查下2.8是否漏掉了)

2.10 复制mysql.server到/etc/init.d/下,这样我们可以在任意目录使用mysql命令

cd /usr/local/mysql-8.0.20
cp -a ./support-files/mysql.server /etc/init.d/mysql 
cp -a ./support-files/mysql.server /etc/init.d/mysqld

2.11 赋予权限

chown 777 /etc/my.cnf
chmod +x /etc/init.d/mysql
chmod +x /etc/init.d/mysqld

2.12 启动

service mysql start

在这里插入图片描述

2.13 启动报错

12.
创建pid文件

vim /usr/local/mysql-8.0.20/data/localhost.localdomain.pid
## 随便写入一个数字

如果部署过程除了问题且解决不了,可以使用rm -rf /usr/local/mysql-8.0.20/ 删除目录,然后重新从第一步开始执行。步骤经过我多次验证应该是可以部署成功的!

如果启动失败了也可查看mysql.log查看报错原因。

2.14 修改数据库密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
flush privileges;
use mysql;
## 配置数据库可被远程连接
update user set host='%' where user='root';
flush privileges;

3.搭建主从集群

3.1主节点配置

vim /etc/my.cnf
# 找到mysqld增加如下配置
server-id=47
#开启binlog
log_bin=master-bin
log_bin-index=master-bin.index
skip-name-resolve
# 注释如下配置
#log-bin=/usr/local/mysql-8.0.20/data/mysql-bin

3.1.1 重启mysql

service mysqld restart

在这里插入图片描述

3.1.2 给root用户分配一个replication slave的权限

#登录主数据库
mysql -u root -p
GRANT REPLICATION SLAVE ON *.* TO 'root'@'%';
flush privileges;
#查看主节点同步状态:
show master status;

在这里插入图片描述
这个指令结果中的File和Position记录的是当前日志的binlog文件以及文件中的索引。

​ 而后面的Binlog_Do_DB和Binlog_Ignore_DB这两个字段是表示需要记录binlog文件的库以及不需要记录binlog文件的库。目前我们没有进行配置,就表示是针对全库记录日志。这两个字段如何进行配置,会在后面进行介绍。

3.2 从节点配置

vim /etc/my.cnf
# 找到mysqld增加如下配置
#主库和从库需要不一致
server-id=48
#打开MySQL中继日志
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin
#打开从服务二进制日志
log-bin=mysql-bin
#使得更新的数据写进二进制日志中
log-slave-updates=1
# 注释如下配置
#log-bin=/usr/local/mysql-8.0.20/data/mysql-bin

3.2.1 重启mysql

service mysqld restart

在这里插入图片描述

3.1.2 主节点同步状态

#登录从服务
mysql -u root -p;
#设置同步主节点:
CHANGE MASTER TO
MASTER_HOST='192.168.80.136',
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='root',
MASTER_LOG_FILE='master-bin.000002',
MASTER_LOG_POS=156;
#开启slave
start slave;
#查看主从同步状态
show slave status;
或者用 show slave status \G; 这样查看比较简洁

在这里插入图片描述
到这里mysql主从搭建完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/163502.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安卓环境搭建及运行安卓应用

1 jdk安装 安卓项目也是java开发的,运行在虚拟器上,安装jdk及运行的时候,就会带上虚拟器 jdk前面已经讲过,不在讲解 2 下载安装androj studio https://developer.android.google.cn/studio?hlzh-cn 下载下来,双击…

Shell脚本:Linux Shell脚本学习指南(第一部分Shell基础)一

你好,欢迎来到「Linux Shell脚本」学习专题,你将享受到免费的 Shell 编程资料,以及很棒的浏览体验。 这套 Shell 脚本学习指南针对初学者编写,它通俗易懂,深入浅出,不仅讲解了基本知识,还深入底…

数据采集与大数据架构分享

实现场景 要实现亿级数据的长期收集更新,并对采集后的数据进行整理和加工,用于人工智能的训练数据素材集。 数据采集 java支持的爬虫框架还是有很多的,如:webMagic、Spider、Jsoup等添加链接描述 pipeline处理管道 数据并发开发…

供应链|顶刊MSOM论文解读:服务竞争下的库存共享

问题背景 在汽车、玩具等行业中,零售商之间的库存共享变得十分常见。库存共享可以解决由需求不确定导致的库存错配问题。如果零售商之间同意共享库存,那么当需求较少、自身库存过剩时,可以将过剩库存卖给其他零售商;反之&#xf…

WinForms C# 导入和导出 CSV 文件 Spread.NET

使用 WinForms C# 和 VB.NET 导入和导出 CSV 文件 2023 年 11 月 17 日 使用 Spread.NET 直接在 .NET WinForms 应用程序中处理 CSV 文件。 Spread.NET可帮助您创建电子表格、网格、仪表板和表单。它包括一个强大的计算引擎,具有 450 多个函数以及导入和导出 Micros…

iptables详解:链、表、表链关系、规则的基本使用

目录 防火墙基本概念 什么是防火墙? Netfilter与iptables的关系 链的概念 表的概念 表链关系 规则的概念 查询规则 添加规则 删除iptables中的记录 修改规则 更详细的命令(5链4表) 防火墙基本概念 什么是防火墙? 在…

在VS Code中使用VIM

文章目录 安装和基本使用设置 安装和基本使用 VIM是VS Code的强大对手,其简化版本VI是Linux内置的文本编辑器,堪称VS Code问世之前最流行的编辑器,也是VS Code问世之后,我仍在使用的编辑器。 对VIM无法割舍的原因有二&#xff0…

Python中,我们可以使用pandas和numpy库对Excel数据进行预处理,包括读取数据、数据清洗、异常值剔除等

文章目录 一、什么是数据预处理二、对excel数据进行详细的数据预处理操作总结 一、什么是数据预处理 数据预处理是一种对数据进行清洗、整理、转换等操作的过程,旨在提高数据质量,使其适应模型的需求,从而改进数据挖掘或机器学习的结果。 数…

【LLM】基于LLM的agent应用(更新中)

note 在未来,Agent 还会具备更多的可扩展的空间。 就 Observation 而言,Agent 可以从通过文本输入来观察来理解世界到听觉和视觉的集成;就 Action 而言,Agent 在具身智能的应用场景下,对各种器械进行驱动和操作。 Age…

从0开始学习JavaScript--JavaScript 字符串与文本内容使用

JavaScript中的字符串和文本内容处理是前端开发中的核心技能之一。本文将深入研究字符串的创建、操作,以及文本内容的获取、修改等操作,并通过丰富的示例代码,帮助读者更全面地了解和应用这些概念。 JavaScript 字符串基础 字符串是JavaScr…

Nacos注册表解读

基本介绍 在 Nacos 中,注册表是其中一个重要的组件,用于管理服务的注册和发现。 注册表是一个存储服务实例信息的数据库,它记录了所有已注册的服务实例的相关信息,包括服务名称、IP 地址、端口号等。 通过注册表,服…

定时获取公网ip并发送邮件提醒

前一段时间路由器刷的老毛子固件“穿透服务”中定时更新阿里DDNS失败了,用了很久第一次遇到。所以需要做个备用的措施用来实时获取公网ip信息 1、基于python实现 开启邮箱的SMTP功能拿到授权码(不是登录密码) #!/usr/bin/python # -*- coding: UTF-8 -*- import …

2023年中职“网络安全“—Web 渗透测试①

2023年中职"网络安全"—Web 渗透测试① Web 渗透测试任务环境说明:1.访问地址http://靶机IP/task1,分析页面内容,获取flag值,Flag格式为flag{xxx};2.访问地址http://靶机IP/task2,访问登录页面。…

判断序列值是否单调递增 PandasSeries中的方法:is_monotonic_increasing

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 判断序列值是否单调递增 PandasSeries中的方法: is_monotonic_increasing 选择题 请问下列程序运行的的结果是: import pandas as pd s1 pd.Series([1, 2, 5]) prin…

机器学习赋予用户“超人”的能力来打开和控制虚拟现实中的工具

原创 | 文 BFT机器人 最近,剑桥的研究人员开发了一种虚拟现实应用程序,只需用户手部的移动即可打开和控制一系列3D建模工具。 来自剑桥大学的研究人员利用机器学习开发了“HotGestures”类似于许多桌面应用程序中使用的热键(快捷键&#xff…

Python (十二) 模块、包

模块 模块是以 .py后缀的文件,包含所有定义的函数和变量的文件。 模块可以被别的程序引入,以使用该模块中的函数等功能,如python 标准库、第三方模块等。 导入模块用关键词-import,from ...import 引入python标准库math模块 import math #调用…

Portraiture2024PS/LR专用智能磨皮插件,AI算法美颜,提高P图效率

ps皮肤美白磨皮滤镜有吗?ps本身无自带美白磨皮滤镜,虽然部分滤镜有磨皮、提亮功能,但往往需要搭配蒙版、通道功能使用。但ps可安装第三方软件,比如常用的磨皮插件portraiture3,那么,磨皮插件portraiture3怎…

如何在企业签名、超级签名、tf签名之间做选择

企业签名 (Enterprise Signing): 用途: 适用于企业内部发布应用,不需要经过App Store审核,可以通过企业内部渠道直接分发给员工或内部用户。限制: 仅限于企业内部使用,无法在App Store上发布或向外部用户分发。 超级签…

C++标准模板(STL)- 类型支持 (类型关系,检查两个类型是否相同,std::is_same)

类型特性 类型特性 类型特性定义一个编译时基于模板的结构&#xff0c;以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为&#xff0c;除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完…

要做好解决方案工程师,这些核心技能是必须要掌握的。

要做好解决方案工程师&#xff0c;以下是一些比较中肯的建议&#xff1a; 1、了解客户需求&#xff1a;解决方案工程师需要深入了解客户的需求和挑战&#xff0c;以便为他们提供定制化的解决方案。通过与客户交流、调研市场趋势等方式&#xff0c;了解客户的业务需求和目标&…
最新文章