MySQL主从数据库简单搭建

环境:准备两个linux虚拟机服务器,两台需要安装相同版本的MySQL服务,此处示例使用的是 10.6.8-MariaDB MariaDB Server 版本,确保两台服务器可以ping通,检查防火墙是否关闭,或防火墙开启但对应数据库端口需要放开。

示例中选取 192.168.37.224作为主数据库,192.168.37.225作为从数据库。
由于示例中修改了默认端口,所以针对端口设置的部分,如果未修改使用默认端口3306,可不处理端口部分。

一、主数据库修改

1、编辑主服务器的配置文件:编辑数据库配置文件 vi my.cnf,检查如下配置

port=3310 # 指定端口
server-id=1  # 设置主服务器的唯一 ID
binlog-do-db=lmtest # 需要复制的数据库名
binlog-ignore-db=mysql # 忽略的不需要复制的数据库名
log-bin=mysql-bin # 开启二进制日志

2、重启 MySQL 服务:保存配置文件修改后,重启主服务器上的 MySQL 服务使更改生效。
3、创建用于从服务器复制的用户:在主服务器上创建一个用于主从复制的用户,并赋予 REPLICATION SLAVE 权限。

# 创建用户
CREATE USER 'replication_user'@'192.168.37.225' IDENTIFIED BY 'password';
# 授予权限
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'192.168.37.225';
# 刷新权限
FLUSH PRIVILEGES;

其中 replication_user 、password 替换成自己要修改的用户密码。

4、查看主服务器状态:使用以下命令查看主服务器状态,记录 File 和 Position 值,备用于从服务器配置。

SHOW MASTER STATUS;

示例如图:
在这里插入图片描述

5、个人踩的坑

  • 使用 SHOW MASTER STATUS;无信息展示
    在这里插入图片描述

当执行 SHOW MASTER STATUS; 命令时,如果展示为空,可能有几个原因导致这种情况发生:
1、未启用二进制日志(Binary Log):在MySQL中,要执行主从复制,主数据库必须启用二进制日志。如果主数据库的二进制日志未启用,那么执行 SHOW MASTER STATUS; 命令将不会显示任何内容。
2、主数据库未设置为主服务器(Master Server):确保当前连接的数据库实例是配置为主服务器的主数据库。如果当前数据库实例不是主服务器,那么执行 SHOW MASTER STATUS; 命令将不会显示任何内容。
3、权限问题:可能当前连接的用户没有足够的权限来执行 SHOW MASTER STATUS; 命令。请确保连接的用户具有足够的权限来查看主服务器的状态信息。
4、主服务器尚未生成任何二进制日志:如果主服务器还没有生成任何二进制日志,执行 SHOW MASTER STATUS; 命令也会返回空值。

首先检查了下二进制日志是否开启

# 是否开启二进制
SHOW VARIABLES LIKE 'log_bin';

off是未开启,on是开启
在这里插入图片描述
二进制日志未开启,又去检查了配置文件,配置文件中我直接将配置项放到了文件最后一行之后,调整了一下位置,重新启动数据库。

调整前:

# 第1、2行原先配置文件就有,在[mysqld]下
port=3310 # 指定端口
server-id=1  # 设置主服务器的唯一 ID
# 后三行我直接粘贴到文件最后,在[mysqld_safe]下
binlog-do-db=lmtest # 需要复制的数据库名
binlog-ignore-db=mysql # 忽略的不需要复制的数据库名
log-bin=mysql-bin # 开启二进制日志

调整后

# 全部放在[mysqld]下
port=3310 # 指定端口
server-id=1  # 设置主服务器的唯一 ID
binlog-do-db=lmtest # 需要复制的数据库名
binlog-ignore-db=mysql # 忽略的不需要复制的数据库名
log-bin=mysql-bin # 开启二进制日志

再次查询,二进制日志开启
在这里插入图片描述

二、从数据库修改

1、编辑从服务器的配置文件:编辑数据库配置文件 vi my.cnf,检查如下配置

server-id = 2  # 设置从服务器的唯一 ID,需确保与主服务器不同

2、重启 MySQL 服务:保存配置文件修改后,重启从服务器上的 MySQL 服务。
3、连接主服务器:连接到从服务器的 MySQL 实例,并配置其作为主服务器的从服务器。

CHANGE MASTER TO MASTER_HOST='192.168.37.224', MASTER_PORT=3310, MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='xxxx', MASTER_LOG_POS=xxx;
START SLAVE;

其中MASTER_LOG_FILE=‘xxxx’, MASTER_LOG_POS=xxx 为之前在主服务器查看的值。

4、查看从服务器状态:使用以下命令查看从服务器状态,确认从服务器已经开始复制主服务器的数据。

SHOW SLAVE STATUS\G;

在这里插入图片描述一般来说查看从服务器状态这两个字段为yes基本就是成功了。
\G按列展示。
在这里插入图片描述

5、个人踩的坑

  • 数据库连不上
    1、最初数据提示连接失败,由于我修改了默认端口号,而从服务器连接主服务器那一步又没有指定端口,导致服务器使用默认端口3306连接,从而提示连接失败。
    2、还有一种可能是,主服务器配置文件中有bind-address=127.0.0.1这行配置,这会限制数据库仅支持本地连接。

三、验证

1、在主数据库创建监听同步的数据库,建表,插入一条数据
2、观察从服务器数据库中是否出现相同内容,如果出现则简单搭建成功

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值