MySQL8.0.33主从复制配置记录

news2024/12/22 18:21:03

目录

    • 1. 下载
    • 2. 解压
    • 3.重命名
    • 4.创建存储数据文件
    • 5. 设置用户组并赋权
    • 6. 初始化MySQL
    • 7.配置文件
    • 8. 启动MySQL
    • 9. 设置软连接,并重启MySQL
    • 10. 登录并更改密码
    • 11. 开放远程连接
    • 12. 连接工具测试连接MySQL
    • 13. 开机自启配置
    • 14.从服务器配置
    • 15. 主库配置
    • 16. 从库配置
    • 17. 测试:
    • 18. 另外Windows上实现主从复制,先部署两台MySQL

官网:https://dev.mysql.com/downloads/mysql/
8.0.33
在这里插入图片描述

1. 下载

在线下载或者下载到本地再上传

cd /usr/local

准备wget下载工具:

yum install wget -y
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-el7-x86_64.tar.gz

在这里插入图片描述
下载


2. 解压

tar -zxvf mysql-8.0.33-el7-x86_64.tar.gz -C /usr/local/

3.重命名

mv mysql-8.0.33-el7-x86_64 mysql

4.创建存储数据文件

mkdir mysql/data

5. 设置用户组并赋权

groupadd mysql
useradd -r -g mysql mysql
chown -R mysql:mysql /usr/local/mysql/
chmod -R 755 /usr/local/mysql

6. 初始化MySQL

进入MySQL的bin目录

cd mysql/bin

初始化并得到密码

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

./mysqld: error while loading shared libraries: libnuma.so.1: cannot
open shared object file: No such file or directory
报错,缺依赖::::
yum install -y libaio
yum -y install numactl
再初始化
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql

初始密码

7.配置文件

vi /etc/my.cnf
[client]
#password       = your_password
port               = 3306
socket          = /usr/local/mysql/data/mysql.sock
default-character-set = utf8mb4

[mysql]  
default-character-set = utf8mb4

[mysqld]  
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4'

# 服务器唯一id,默认为1,值范围为1~2^32−1. ;主数据库和从数据库的server-id不能重复
server-id=1
# 设置同步的binary log二进制日志文件名前缀,默认是binlog
log-bin=mysql-bin
# 可选配置
# 是否只读 0读写 1只读
read-only=0
# 禁用管理员写操作
# super-read-only=1
# 需要主从复制的数据库 ,如多个则重复配置(不设置则都同步)
# replicate-do-db=user_db.%
#屏蔽系统库同步,如果需要对某个数据库不进行同步则追加以下配置,配置对应的数据库名称,多个的话配置多行
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%

port            = 3306
socket          = /usr/local/mysql/data/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
datadir = /usr/local/mysql/data

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout


8. 启动MySQL

/usr/local/mysql/support-files/mysql.server start

9. 设置软连接,并重启MySQL

ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
ln -s /usr/local/mysql/mysql.sock /var/mysql.sock 
service mysql restart

10. 登录并更改密码

mysql -u root -p

输入上面初始化获取的初始密码

改密:

alter user 'root'@'localhost' identified by '123456';

11. 开放远程连接

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

由于这里将localhost改为了%,所以后续这样就行
alter user ‘root’@‘%’ identified by ‘123456’;
flush privileges;

12. 连接工具测试连接MySQL

服务器上记得放开端口
开放指定端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
–zone #作用域
–add-port=3306/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
测试连接
然后退出MySQL使用 exit,等把从服务器搞好再创建表测试

exit

13. 开机自启配置

将服务文件拷贝到init.d下,并重命名为mysqld

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

赋予可执行权限

chmod +x /etc/init.d/mysqld

添加服务

chkconfig --add mysqld

显示服务列表

chkconfig --list

注:如果看到mysql的服务,并且3,4,5都是开的话则成功,如果是关,则

chkconfig --level 345 mysqld on

14.从服务器配置

安装流程和上面一致,只有配置有细微差别

vi /etc/my.cnf
# 服务器唯一id,默认为1,值范围为1~2^32?1. ;主数据库和从数据库的server-id不能重复
server-id=2
# 设置同步的binary log二进制日志文件名前缀,默认是binlog
log-bin=mysql-bin
# 可选配置
# 是否只读 0读写 1只读
read-only=1
# 禁用管理员写操作
# super-read-only=1
# 需要主从复制的数据库 ,如多个则重复配置(不设置则都同步)
# replicate-do-db=user_db.%
#屏蔽系统库同步,如果需要对某个数据库不进行同步则追加以下配置,配置对应的数据库名称,多个的话配置多行
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%

权限

15. 主库配置

登录主服务器MySQL

mysql -uroot -p

授予主从复制权限

GRANT REPLICATION SLAVE ON *.* TO 'root'@'%';

主数据库
通过指令,查看二进制日志目标

show master status;

目标

16. 从库配置

登录从库服务器MySQL

mysql -uroot -p

关联主服务器(注意主服务器的日志文件 和 位置 名称要一致)
8.0.23之后语法(兼容之前的语法)
CHANGE REPLICATION SOURCE TO SOURCE_HOST='192.168.20.20',SOURCE_USER='root',SOURCE_PASSWORD='123456',SOURCE_LOG_FILE='mysql-bin.000003',SOURCE_LOG_POS=369;

8.0.23之前语法

CHANGE REPLICATION MASTER TO MASTER_HOST='*.*.*.*',MASTER_USER='***',MASTER_PASSWORD='**',MASTER_LOG_FILE='**',MASTER_LOG_POS=**;

MASTER_HOST 主库IP地址
MASTER_USER 连接主库用户名
MASTER_PASSWORD 连接主库密码
MASTER_LOG_FILE binlog日志文件名
MASTER_LOG_POS binlog日志文件位置

配置主库连接
开启同步操作:

8.0.22版本之后(兼容之前的命令)
start replica; 
8.0.22版本之前
start slave;

开启同步操作
查看主从复制状态:

show replica status\G;

UUID
此时发现UUID冲突,需要改下UUID,
退出MySQL

exit;

一般就在 /mysql/data/auto.cnf 文件里面

vi /usr/local/mysql/data/auto.cnf

随便改一个数(长度固定的,少一个启动就会报错,建议就随机调整一个数就行),ESC :wq 保存退出,然后重启MySQL。
UUID

重启MySQL:

service mysql restart

然后再查看同步状态

show replica status\G;

yes

17. 测试:

主服务器新建库、使用库、新建表、插入数据、查询表、查询表数据

CREATE database test;
use test;
CREATE TABLE `tb_user`  (
  `id` int(0) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `sex` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
INSERT INTO `tb_user` VALUES (1, 'coisini', '0');
show tables;
select * from tb_user;

新建数据库
查看从服务器是否同步

use test;
show tables;
select * from tb_user;

数据

总结:
将主库的数据变更同步到从库,保证主从数据一致,可用于数据备份、失败迁移、读写分类、降低单库读写压力。
原理:
主库会把数据变更记录在二进制日志文件binlog中。
从库连接主库,读取binlog日志,并写入自身中继日志relaylog.
slave重做中继日志,将改变反应它自己的数据。


18. 另外Windows上实现主从复制,先部署两台MySQL

参照下这个本地部署多个MySQL,下面贴出我本地的配置,可以参考一下,
主服务器配置:

[mysqld]
# 设置3307端口
port=3307
# 服务器唯一id,默认为1,值范围为1~2^32−1. ;主数据库和从数据库的server-id不能重复
server-id=1
# 主从数据库配置核心部分
# 设置同步的binary log二进制日志文件名前缀,默认为binlog;在MySQL 8.0中,无论是否指定--log bin选项,默认情况下都会启用二进制日志记录,并将log_bin系统变量设置为ON。
log-bin=mysql-bin
# 可选配置
# 是否只读 0读写 1只读
read-only=0
# 需要主从复制的数据库,如多个则重复配置
# binlog-do-db=user_db
# 屏蔽系统库同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
# 设置mysql的安装目录
basedir=F:/MySQL/mysql-8.0.26-winx64
# 设置mysql数据库的数据的存放目录
datadir=F:/MySQL/mysql-8.0.26-winx64/data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3307
default-character-set=utf8mb4

从服务器配置:

[mysqld]
# 登录跳过权限检查
# skip-qrant-tables
# 从服务器设置3308端口
port=3308
# 服务器唯一id,默认为1,值范围为1~2^32−1. ;主数据库和从数据库的server-id不能重复
server-id=2
# 设置同步的binary log二进制日志文件名前缀,默认是binlog
log-bin=mysql-bin
# 可选配置
# 是否只读 0读写 1只读
read-only=1
# 禁用管理员写操作
# super-read-only=1
# 需要主从复制的数据库 ,如多个则重复配置
# replicate-do-db=user_db.%
#屏蔽系统库同步,如果需要对某个数据库不进行同步则追加以下配置,配置对应的数据库名称,多个的话配置多行
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%
# 设置从服务器mysql的安装目录
basedir=F:/MySQL/mysql-8.0.26-winx64-s1
# 设置从服务器mysql数据库的数据的存放目录
datadir=F:/MySQL/mysql-8.0.26-winx64-s1/data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置从服务器mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置从服务器mysql客户端连接服务端时默认使用的端口
port=3308
default-character-set=utf8mb4

步骤都差不多,主要先有两台MySQL,然后配置下主从配置,查询是否同步成功(两个YES),新建库进行测试。


搞定,感谢阅览,希望能对你有帮助~
END


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

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

相关文章

功率MOS管烧毁,有这些原因

功率MOS管烧毁的原因以及相应的预防措施。在本文中,我将会介绍功率MOS管的基本结构、工作原理,以及可能导致功率MOS管烧毁的原因,并提供相应的解决方案。 1. 功率MOS管的基本结构和工作原理 功率MOS管是一种常用的功率电子器件,…

SpringBoot集成MyBatis-plus

SpringBoot集成MyBatis-plus 一、Mybatis-Plus简介1.简介2.特性3.官网及文档地址 二、入门案例1.开发环境2.创建数据库及表3.创建Springboot项目导入依赖4.配置application.yml5.启动类6.实体类7.添加mapper8.添加UserController9.日志配置 三、CURD1.BaseMapper2.通用Service …

事件主循环

一、事件主循环 1、事件处理主流程 libevent的事件循环主要是通过event_base_loop函数来完成,其主要的操作如下: 1、根据timer-heap中的事件最小超时时间,计算系统I/O demultiplexer的最大等待时间。例如:当底层使用的是Linux提供…

Android系统启动流程--system_server进程的启动流程

紧接上一篇zygote进程的启动流程,上一篇的结尾提到zygote进程中会fock出一个system_server进程,用于启动和管理Android系统中大部分的系统服务,本篇就来分析system_server进程是如何创建并运行的以及它都做了哪些重要的工作。 //文件路径&am…

Show, Attend, and Tell | a PyTorch Tutorial to Image Captioning代码调试(跑通)

Show, Attend, and Tell | a PyTorch Tutorial to Image Captioning代码调试(跑通) 文章目录 Show, Attend, and Tell | a PyTorch Tutorial to Image Captioning代码调试(跑通)前言1. 创建、安装所用的包1.1 创建环境&#xff0c…

【深度学习】OCR文本识别

OCR文字识别定义 OCR(optical character recognition)文字识别是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,然后用字符识别方法将形状翻译成计算机文字的过程;即,对文本资料进行扫描…

【数据结构】二叉树经典oj题

🚀write in front🚀 📜所属专栏:初阶数据结构 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是对…

B. Make Them Equal(Codeforces Round 673 (Div. 1))

传送门 题意: 思路: 首先判断是否能够操作达到目的:即所有的数都相等。 不能达到有两种情况: 1:所有数之和对n取余不等于0 2: 每个ai都是小于i的,例如n5, a[]{0,1,2,3,4}。因为每个数都是小于 i 的&am…

idea中的 debug 中小功能按钮都代表的意思

1.step over 步过----->一行一行的往下走,如果这一行中有方法那么不会进入该方法,直接一行一行往下走,除非你在该方法中打入断点 2.step into 步入—>可以进入方法内部,但是只能进入自己写的方法内部,而不会进入方法的类库中 3.Force step into 强制步入---->可以步…

编译livox ros driver2(ROS2、livox、rviz、ubuntu22.04)

1. 编译Livox-SDK2 官方地址:https://github.com/Livox-SDK/Livox-SDK2 执行一下命令: git clone https://github.com/Livox-SDK/Livox-SDK2.git cd ./Livox-SDK2/ mkdir build cd build cmake .. && make sudo make install 如上就安装完成了…

嵌入式【CPLD】5M570ZT100C5N、5M1270ZF256C5N、5M2210ZF256C5N采用独特的非易失性架构,低成本应用设计。

英特尔MAX V CPLD 采用独特的非易失性架构,提供低功耗片上功能,适用于以边缘为中心的应用。MAX V CPLD系列能够在单位空间中提供大量 I/O 和逻辑。这些设备还使用了低成本绿色封装技术,封装大小只有 20 毫米。 MAX V系列的关键应用包括&…

PCL点云库(1) - 简介与数据类型

目录 1.1 简介 1.2 PCL安装 1.2.1 安装方法 1.2.2 测试程序 1.3 PCL数据类型 1.4 PCL中自定义point类型 1.4.1 增加自定义point的步骤 1.4.2 完整代码 1.1 简介 来源:PCL(点云库)_百度百科 PCL(Point Cloud Library&…

个推打造消息推送专项运营提升方案,数据驱动APP触达效果升级

“数智化运营”能力已成为企业的核心竞争力之一。借助数据和算法,构建完善的数智化运营体系,企业可增强用户洞察和科学决策能力,提高日常运营效率和投入产出比。近半年,个推精准把握行业客户的切实需求,将“数智化运营…

分析型数据库:MPP 数据库的概念、技术架构与未来发展方向

随着企业数据量的增多,为了配合企业的业务分析、商业智能等应用场景,从而驱动数据化的商业决策,分析型数据库诞生了。由于数据分析一般涉及的数据量大,计算复杂,分析型数据库一般都是采用大规模并行计算或者分布式计算…

css的属性选择器

文章目录 属性选择器的原理简单的语法介绍子串值(Substring value)属性选择器 CSS 属性选择器的最基本用法复杂一点的用法层叠选择多条件复合选择伪正则写法配合 **:not()** 伪类重写行内样式 组合用法:搭配伪元素提升用户体验角标功能属性选…

基于51单片机的智能晾衣架的设计与实现(源码+论文)_kaic

【摘要】随着社会和市场的变化,我国经济的快速发展和房地产行业的快速扩张,使得装修家居行业飞速发展,在行业高速发展的同时,消费者家居智能化要求也在日益发展。随着科学技术的进步和电子技术的发展,单片机作为智能控…

Stable Diffusion一键安装器,只有2.3M

最近AI画图真的是太火了,但是Midjourney收费之后大家就不知道去哪里能用AI画图了, Stable Diffusion很多人听过,但是安装特别麻烦。所以为大家介绍一款软件,一键安装SD。 Stable Diffusion一键安装器_SD一键启动器-Stable Diffus…

LeetCode:459. 重复的子字符串 —【2、KMP算法】

🍎道阻且长,行则将至。🍓 🌻算法,不如说它是一种思考方式🍀 算法专栏: 👉🏻123 一、🌱459. 重复的子字符串 题目描述:给定一个非空的字符串 s &…

Docker数据管理与Docker镜像的创建

目录 1.管理数据的方式 1.数据卷 2.数据卷容器 3.容器互联(使用centos镜像) 2.Docker镜像的创建 1.基于现有镜像创建 2.基于本地模板创建 3.基于Dockerfile创建 4.Dockerfile案例 总结 1.管理数据的方式 容器中管理数据主要有两种方式&#xff1…

c++作业

自己定义mystring类实现string功能 #include <iostream> #include<cstring> using namespace std;class myString {private:char *str; //记录c风格的字符串int size; //记录字符串的实际长度public://无参构造myString():size(10){str new …