最新mysql8.3 保姆级 主从复制搭建教程

mysql 主从复制搭建

服务器配置表

机器ip操作系统
主机192.168.31.25华为openEuler-22.03-LTS-SP3
从机192.168.31.184华为openEuler-22.03-LTS-SP3
从机192.168.31.228华为openEuler-22.03-LTS-SP3

1、在3台机器上安装独立的 mysql

1.1 创建myql文件夹用来存放mysql包

mkdir -p /opt/mysql

1.2 上传并解压 mysql.tar包

tar -zxf mysql-8.3.0-linux-glibc2.28-x86_64.tar.xz

1.3 重命名解压后的mysql文件夹

mv mysql-8.3.0-linux-glibc2.28-x86_64 mysql8.3

1.4 添加环境变量

添加Path环境变量,命令如下:export PATH=$PATH:/opt/mysql/mysql8.3/bin

1.5 创建用户组合用户

(创建一个用户组:mysql)groupadd mysql (创建一个系统用户:mysql并且指定用户组为mysql)useradd -r -g mysql mysql 不创建此用户安装过程会报错

1.6 添加数据目录

1、创建数据目录:mkdir -p /opt/mysql/mysql8.3/data
2、更改属主和数组:chown -R mysql:mysql /opt/mysql/mysql8.3/data
3、更该模式:chmod -R 750 /opt/mysql/mysql8.3/data

1.7 进入mysql8.3 并创建 my.cnf 文件 并写入以下内容

vi mysql8.3/my.cnf[mysql]
# 默认字符集
default-character-set=utf8mb4
[client]
port=3306
socket=/tmp/mysql.sock[mysqld]
port=3306
server-id=1
user=mysql
socket =/tmp/mysql.sock
# 安装目录
basedir=/opt/mysql/mysql8.3
# 数据存放目录
datadir=/opt/mysql/mysql8.3/data/mysql
log-bin=/opt/mysql/mysql8.3/data/mysql/mysql-bin
innodb_data_home_dir=/opt/mysql/mysql8.3/data/mysql
innodb_log_group_home_dir=/opt/mysql/mysql8.3/data/mysql
#日志及进程数据的存放目录
log-error =/opt/mysql/mysql8.3/data/mysql/mysql.log
pid-file  =/opt/mysql/mysql8.3/data/mysql/mysql.pid
# 服务端使用的字符集默认为8比特编码
character-set-server=utf8mb4
lower_case_table_names=1
autocommit =1##################以上要修改的########################
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 1024
sort_buffer_size = 4M
net_buffer_length = 8K
read_buffer_size = 4M
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 64M
thread_cache_size = 128#query_cache_size = 128M
tmp_table_size = 128M
explicit_defaults_for_timestamp = true
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535binlog_format=mixedbinlog_expire_logs_seconds =864000# 创建新表时将使用的默认存储引擎
default_storage_engine = InnoDB
innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_size = 1024M
innodb_log_file_size = 256M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
transaction-isolation=READ-COMMITTED[mysqldump]
quick
max_allowed_packet = 16M[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 4M
read_buffer = 2M
write_buffer = 2M[mysqlhotcopy]
interactive-timeout

特别注意:以上配置中 server-id 3台机器不能一样

1.8 初始化MySQL

bin/mysqld --defaults-file=/opt/mysql/mysql8.3/my.cnf --basedir=/opt/mysql/mysql8.3  --datadir=/opt/mysql/mysql8.3/data/mysql --user=root --initialize-insecure

1.9 启动mysql

/opt/mysql/mysql8.3/bin/mysqld_safe --defaults-file=/opt/mysql/mysql8.3/my.cnf &

1.10 登录(首次免密)

/bin/mysql -u root --skip-password

1.11 修改密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

1.12 刷新权限

FLUSH PRIVILEGES;

1.13 设置允许远程登录访问(需要登录到MySQL服务中进行设置)

mysql> use mysql
mysql> update user set user.Host='%'where user.User='root';
mysql> flush privileges;
mysql> quit

2、设置主从复制

2.1 修改主从机器的 my.cnf 配置文件 并添加以下内容,若之前配置有则可以忽略

vi /opt/mysql/mysql8.3/my.cnf
#主节点
## 开启二进制日志并指定 server-id
log-bin=mysql-bin
binlog_format=mixed
server-id=1
vi /opt/mysql/mysql8.3/my.cnf
#从节点
## 开启中继日志并指定 server-id 和 只读
# log-bin=mysql-bin
# binlog_format = mixed
relay-log=mysql-relay-bin
server-id=2
read-only=on

2.2 重启mysql

service mysql restart
或者
ps aux | grep mysql
找到进程id
kill -9 pid
然后重新启动mysql
/opt/mysql/mysql8.3/bin/mysqld_safe --defaults-file=/opt/mysql/mysql8.3/my.cnf &

2.3 设置主从主节点配置

2.3.1 修改 my.cnf 配置文件
vi my.cnf
#若之前有配置且一样 现在不用配置
## 开启二进制日志并指定 server-id
log-bin=mysql-bin
binlog_format=mixed
server-id=1
2.3.2 重启 mysql
service mysql restart
或
ps aux | grep mysql 查询mysql 进程pid 然后 kill -9 pid
然后运行
/opt/mysql/mysql8.3/bin/mysqld_safe --defaults-file=/opt/mysql/mysql8.3/my.cnf &
2.3.3 创建具有复制权限的用户 ,此处 Mysql 5.7 和 Mysql 8.0 有些区别
========================================= Mysql 5.7 ============================================
## 使用 root 账户,其他账户会有权限不足的情况
mysql -uroot -p## 这句话意思是,主机允许 slave 用户,通过密码 123456,在 192.168.1.2 这台服务器上访问当前这台 master
mysql> grant replication slave on *.* to slave@192.168.1.2 identified by '123456';## 刷新
flush privileges;
======================================================================================================================================== Mysql 8.0 ============================================
## 使用 root 账户,其他账户会有权限不足的情况
mysql -uroot -p## mysql8.0 授权用户需要先创建,创建和授权同一条语句的话会报错
mysql> create user 'slave'@'192.168.31.184' identified by '123456';
mysql> create user 'slave'@'192.168.31.228' identified by '123456';
## 再授权
mysql> grant replication slave on *.* to 'slave'@'192.168.31.184' with grant option;
mysql> grant replication slave on *.* to 'slave'@'192.168.31.228' with grant option;## 刷新
flush privileges;
===============================================================================================
2.3.4 查看 master 信息
mysql> show master status;

2.4 从机配置(2台从机完全一样特别注意server-id 3台机器都不能一样)

2.4.1 修改 my.cnf 配置文件
vim my.cnf## 开启中继日志并指定 server-id 和 只读
# log-bin=mysql-bin
# binlog_format = mixed
relay-log=mysql-relay-bin
server-id=2
read-only=on
2.4.2 重启 mysql
service mysql restart
或
ps aux | grep mysql 查询mysql 进程pid 然后 kill -9 pid
然后运行
/opt/mysql/mysql8.3/bin/mysqld_safe --defaults-file=/opt/mysql/mysql8.3/my.cnf &
2.4.3 让从机成为 Slave
mysql -uroot -p
mysql> stop slave;
## 设置从机监听主机:master_log_file 和 master_log_pos 与主机 master 信息一致 与上图中的信息一致
mysql> change master to master_host='192.168.31.25',master_user='slave',master_password='123456',master_log_file='mysql-bin.000005', master_log_pos=3150;
mysql> start slave;
2.4.4 查看 Slave 状态
mysql> show slave status\G;## 等待主机发送事件
Slave_IO_State : Waiting for master to send event
## 若它为 No,检查下主机防火墙是否已关闭
Slave_IO_Running: Yes
## 这俩项都是 yes 则配置成功
Slave_SQL_Running: Yes
2.5 踩坑

上图中 io 状态为 no,查看mysql日志

登录mysql后
SHOW VARIABLES LIKE '%log_error%';

开日志并找到原因 

大模型给出的解释是

简单的理解就是要在 master 节点设置以下信息

ALTER USER 'slave'@'192.168.31.184' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER 'slave'@'192.168.31.228' IDENTIFIED WITH mysql_native_password BY '123456';

然后重复 2.4.2 和 2.4.3 这2步 之后恢复正常

3 测试

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python-可视化篇-turtle-画爱心

文章目录 原效果替换关键字5为8,看看效果改下颜色 原效果 import turtle as tt.color(red,pink) t.begin_fill() t.width(5) t.left(135) t.fd(100) t.right(180) t.circle(50,-180) t.left(90) t.circle(50,-180) t.right(180) t.fd(100) t.pu() t.goto(50,-30) t…

开发语言漫谈-C#

C#的#,字面上的意思就是,也就是把C再。微软只所以搞C#就是要抗衡Java。微软当时搞了个J,被Java告了,没办法了只能另取炉灶。从纯技术角度来看,C#设计非常优秀,可以覆盖所有领域,是几乎唯一的全栈…

【用户案例】太美医疗基于Apache DolphinScheduler的应用实践

大家好,我叫杨佳豪,来自于太美医疗。今天我为大家分享的是Apache DolphinScheduler在太美医疗的应用实践。今天的分享主要分为四个部分: 使用历程及选择理由稳定性的改造功能定制与自动化部署运维巡检与优化 使用历程及选择理由 公司介绍 …

.Net <% %>

<% %> 语法 : <% import namespace"system.data"%> 用来导入后台命名空间 指令用于指定当页和用户控件编译器处理 ASP.NET Web 窗体页 (.aspx) 和用户控件 (.ascx) 文件时所使用的设置。<% %> 语法 : <% name %> <% getstr() %&g…

修改el-button按钮背景色后,按钮失去了elementUI原有的hover和active的效果

应完整修改为&#xff1a; <el-button type"primary" icon"el-icon-plus" click"addUser">新增用户</el-button>.el-button--primary:not(.is-disabled) {background-color: #1174de;border-color: #1174de;&:hover {&:not…

尝试在手机上运行google 最新开源的gpt模型 gemma

Gemma介绍 Gemma简介 Gemma是谷歌于2024年2月21日发布的一系列轻量级、最先进的开放语言模型&#xff0c;使用了与创建Gemini模型相同的研究和技术。由Google DeepMind和Google其他团队共同开发。 Gemma提供两种尺寸的模型权重&#xff1a;2B和7B。每种尺寸都带有经过预训练&a…

【iOS ARKit】AR Quick Look 概述

为更好地传播共享 AR 体验&#xff0c;苹果公司引入了 AR Quick Look&#xff0c;并在iOS 12及以上版本系统中深度集成了 AR Quick Look&#xff0c;因此可以通过iMessage、Mail、Notes、 News、 Safari 和 Files 直接体验 AR&#xff0c;AR Quick Look提供了在 iPhone 和iPad …

排序算法,插入排序

插入排序是什么 插入排序&#xff08;Insertion Sort&#xff09;&#xff0c;一般也被称为直接插入排序。对于少量元素的排序&#xff0c;它是一个有效、简单的算法 其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中&#xff0c;最终得到的序列就是已经排…

使用opencv + ffmpeg 开发视频播放器Demo

使用opencv ffmpeg 开发视频播放器Demo #include <opencv2/opencv.hpp> #include <opencv2/highgui.hpp> #include <opencv2/videoio.hpp>extern "C" { #include <libavformat/avformat.h> #include <libavcodec/avcodec.h> #includ…

【LeetCode热题100】【二叉树】将有序数组转换为二叉搜索树

题目链接&#xff1a;108. 将有序数组转换为二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 取中间的数作为根节点&#xff0c;左边的数递归转换&#xff0c;右边的数递归转换 class Solution { public:TreeNode *sortedArrayToBST(vector<int> &nums) {retur…

通过 Spark SQL 和 DataFrames 与外部数据源交互

文章目录 前言Spark SQL 与 HiveUDF 通过 Spark SQL Shell, Beeline 和 Tableau 查询Spark SQL ShellBeelineTableau 外部数据源通过 JDBC 连接数据库PostgreSQLMySQL 高阶函数Explode 和 CollectUDF内置函数高阶函数 常用 DataFrames 和 Spark SQL 操作总结 前言 Spark 的数据…

隐私计算实训营第九讲-隐语多方安全计算在安全核对的行业实践

隐私计算实训营第九讲-隐语多方安全计算在安全核对的行业实践 文章目录 隐私计算实训营第九讲-隐语多方安全计算在安全核对的行业实践1.业务背景&#xff1a;安全核对产生的土壤1.1相关政策出台1.2 数据差异的来源 2.产品方案&#xff1a;从试点到规模化的路3.技术共建&#xf…

如何用MATLAB进行核密度估计

核密度估计&#xff08;Kernel Density Estimation&#xff0c;KDE&#xff09;是一种用于估计概率密度函数的非参数方法。以下是核密度估计的基本步骤和公式&#xff1a; 步骤&#xff1a; (1)数据预处理&#xff1a;在进行核密度估计之前&#xff0c;需要对原始数据进行清洗…

微信小程序报错——“errno“: 600001, “errMsg“: “request:fail -2:net::ERR_FAILED“

bug现象 微信小程序体验版和真机调试 进入小程序的时候接口就出现了这个报错 "errno": 600001, "errMsg": "request:fail -2:net::ERR_FAILED" 排查 检查是证书过期还是证书链不完整 证书的信任链完整问题&#xff0c;可以在 亚数信息-SSL/TLS安…

web安全学习笔记(8)

记一下第十二节课的内容。 一、PHP文件包含的四种方式 Include和Include_once 操作系统会读取包含的文件的内容&#xff0c;并将它插入主文件中&#xff0c;include方式的文件包含会在包含失败的情况下输出警告信息&#xff0c;而include_once方式会检查包含的文件是否已经被…

口语教育的黄金时代:AI技术引领教育创新与创业机遇

这些人的赚钱思路是真灵活&#xff01; 这几天刷到艾维奇采访之昊的视频&#xff0c;做口语教育真赚钱&#xff0c;lv的包包随便买&#xff0c;住大房子&#xff0c;三辆车&#xff0c;有评论晒图一个九百的课&#xff0c;卖了1.3万份&#xff0c;直接千万到账。 然后我又想到…

TCP重传机制总结

超时重传概念 超时重传&#xff1a;发送方每发送一个数据包&#xff0c;就会为这个数据包设置一个超时时间&#xff0c;如果在时间内没收到应答这个数据包的ACK包&#xff0c;需要重新发送这个数据包&#xff1b;每次重传后&#xff0c;RTO会成倍增加&#xff0c;且重传次数有…

python-pytorch实现skip-gram 0.5.000【直接可运行】

python-pytorch实现skip-gram 0.5.000【直接可运行】 参考导入包加载数据和切词获取wordList、raw_text获取vocab、vocab_sizeword_to_idx、idx_to_word准备训练数据准备模型和参数训练模型保存模型简单预测获取训练后的词向量画图看下分布利用词向量计算相似度余弦点积 参考 …

Jmeter —— 自动录制脚本

1、Jmeter配置 1.1新增一个线程组 1.2Jmeter中添加HTTP代理 1.3配置HTTP代理服务器 修改端口 修改Target Cintroller(目标控制器) 修改Grouping(分组) 编辑录制中的包含和排除 在“URL Patterns to include包含模式”中填入.*(123456).*用以过滤请求地址中不包含123456的请求…

【K8S:初始化】:执行kubeadm显示:connection refused.

文章目录 [root10 kubernetes]# kubeadm init --kubernetes-versionv1.23.0 --image-repositoryregistry.aliyuncs.com/google_containers --apiserver-advertise-address192.168.56.104 [init] Using Kubernetes version: v1.23.0 [preflight] Running pre-flight checks [pre…