8.0.32 mysql 配置主从数据库

配置前提:

两台服务器都需要安装同一版本的mysql数据库 我的版本是8.0.32

数据库参数修改

主数据库my.cnf(linux)或my.ini(win)配置:

这里需要注意:server-id必须唯一主从两个库必须要不一样

my 复制代码
log_bin=mysql-bin
server-id=24
gtid-mode=ON
enforce-gtid-consistency=ON
bind-address = 0.0.0.0
default-authentication-plugin=mysql_native_password

从数据库my.cnf(linux)或my.ini(win)配置:

my 复制代码
log_bin=mysql-bin
server-id=23
gtid-mode=ON
enforce-gtid-consistency=ON

这两个库修改完后就重启数据库让配置生效

配置解读:

开启bin-log
log_bin=mysql-bin

启用全局事务标识 (Global Transaction Identifiers, GTID) 功能,以确保事务在主库和从库之间的一致性。
gtid-mode=ON
enforce-gtid-consistency=ON

数据库配置命令

主库:

执行以下命令

创建从库的数据库角色,并给与从库读取主库binlog的权限

mysql 复制代码
CREATE USER 'root'@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'abc12345';
GRANT REPLICATION SLAVE ON *.* TO 'root'@'xxx.xxx.xxx.xxx';
FLUSH PRIVILEGES;
mysql 复制代码
show master status;

配置解读:

CREATE USER 'root'@'xxx.xxx.xxx.xxx' IDENTIFIED BY 'abc12345';

创建一个用户root,xxx.xxx.xxx.xxx是从库ip,abc12345是从库的数据库密码

GRANT REPLICATION SLAVE ON . TO 'root'@'xxx.xxx.xxx.xxx';

给从库用户分配权限

FLUSH PRIVILEGES;

刷新数据库配置

mysql 复制代码
# 查看该用户权限,是否生效
SHOW GRANTS FOR 'root'@'xxx.xxx.xxx.xxx';

注意点

使用show master status;查看主库状态

mysql 复制代码
show master status;

记录File字段和Position字段,这个时候如果你的主库打开了GTID,Executed_Gtid_Set 不会为空,所以这个功能也是必须打开的

删除用户:

DROP USER IF EXISTS 'root'@'xxx.xxx.xxx.xxx';

从库:

执行以下语句

配置 MySQL 从库,使其能够连接到主库并开始从主库复制数据

mysql 复制代码
CHANGE MASTER TO MASTER_HOST='xxx.xxx.xxx.xxx', MASTER_USER='root',MASTER_PASSWORD='abc12345', MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000007',
MASTER_LOG_POS=1101;

MASTER_HOST='xxx.xxx.xxx.xxx':

含义:指定主库的 IP 地址。这里的主库 IP 地址是 xxx.xxx.xxx.xxx。

MASTER_USER='root':

含义:用于从库连接主库的用户名。这里使用的用户名是 root。

MASTER_PASSWORD='abc12345':

含义:用于从库连接主库的用户密码。这里的密码是 abc12345。

MASTER_PORT=3306:

含义:指定主库的端口号。默认的 MySQL 端口号是 3306。

MASTER_LOG_FILE 这里就是填写一开始执行主库命令的时候需要记录的File字段

MASTER_LOG_POS 这里就是填写一开始执行主库命令的时候需要记录的Position字段

设置 MASTER_LOG_FILE 和 MASTER_LOG_POS

的目的是告诉从库从哪个二进制日志文件以及从哪个位置开始读取主库的事务记录,以便正确地进行数据复制。这两个参数的设置确保了从库能够准确地从主库的特定位置开始复制,避免数据丢失或重复

开启mysql 从库

mysql 复制代码
start slave;

查看从库状态命令:

mysql 复制代码
SHOW slave STATUS;

这里两个字段必须是Yes

停止和重置从库命令:

mysql 复制代码
stop slave;
reset slave all;
相关推荐
千里马学框架5 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台5 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone5 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
小白男神5 天前
MySQL进阶学习四(存储过程、游标、触发器)
mysql
这个DBA有点耶5 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G5 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
致远ccc5 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
自由能燃气设备5 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远5 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
ttyyttemo5 天前
Kotlin 协程中的 Job 结构化并发与取消
android