MySQL 搭建全新主从(不基于已经有数据的主库)

本博文仅记录个人学习
本博文针对MySQL 8.0 ,但MySQL5.7的搭建过程一模一样,只是修改mysql用户密码的命令有所区别,MySQL5.7也可以跟着一步步操作,应该不会有问题。
本文是全新搭建主从,如果主库有旧数据,不适用,之后会更新相关学习笔记

搭建 MySQL全新主从

  • 默认主库与从库都没有任何数据,是全新数据库,刚刚安装完成后的状态!
  • 如果数据库安装完成后修改了root密码,数据库会生成相应日志,建议在安装时主库与从库都采用非安全初始化,初始化完成后,不要修改root密码,主从搭建完成后,再在主库修改root密码。

检查主库状态

主库应该没有任何数据,或者少许数据(比如修改了root密码,那么会有少许的日志记录),最好是没有任何数据,主从搭建完成之后,再在主库修改root密码。

# 免密登录mysql,如果修改了root密码,需要添加-p参数登录
mysql -uroot 
# 查看主库日志信息
mysql > show master status;
  • 如果主库是完全干净的,没有修改密码,日志信息如下所示
    在这里插入图片描述
  • 如果修改了root密码,日志信息如下所示
    在这里插入图片描述
  • 如果修改了root密码,并且立刻刷新了用户权限信息,日志信息如下所示
    在这里插入图片描述

如果结果与上述图片展示的不同,不确定是否只是修改了主库的root密码+刷新权限,为了确保后续步骤不受意外影响,可以选择重新安装Mysql8.0,并且以非安全方式初始化,再登录mysql,再次执行show master status查看主库情况。

检查从库状态

特别注意!!!从库安装后不要有任何操作
从库应该没有任何数据,登录mysql后,执行下方命令进行检查

# 免密登录mysql
mysql -uroot 
# 查看从库日志信息
mysql > show master status;
  • 从库如果是完全干净的,那么日志信息如下
    在这里插入图片描述
  • 如果从库没有进行任何操作,比如仅仅是重启了一下,日志信息也会会发生变化,如下
    在这里插入图片描述
    此时需要执行,将日志记录清空即从000001开始重新记录日志reset master
    在这里插入图片描述

如果结果与上述图片展示的不同,为了确保后续步骤不受意外影响,可以选择重新安装Mysql8.0,并且以非安全方式初始化,再登录mysql,再次执行show master status查看从库情况。

检查配置文件

  • 请检查主库与从库的配置文件是否配置了以下参数
  • 如果使用了本文的安装脚本,请务必再次检查参数配置,特别是从库的read_only参数需要设置。
  • 当设置read_only=on表示本数据库只能读不能写(root用户仍可以写),注意,当需要进行主从切换时,主库与从库的read_only参数也要相应的进行更改!!!!!

主库参数检查

# 主从复制依赖于mysql的二进制日志,开启主从复制的必要前提,需要设置
# 例子:log_bin=/dbdata/mysql3306/log/mysql-bin
log_bin=参照例子

# 主从复制中各节点的身份id,主库与从库的server_id不能相同,一般设置为正整数
server_id=正整数类型,主库从库的server_id不能相同

# 从节点回放日志存放路径,
# 例子:relay_log=/dbdata/mysql3306/log/mysql-relay-bin
relay_log=参照例子

# 以下为必要条件,不需要人为设置参数值,直接设置即可
gtid_mode=ON
enforce-gtid-consistency=true
log-slave-updates=1
relay-log-info-repository=TABLE
relay_log_recovery=1
master-info-repository=TABLE
binlog-format=row

从库参数检查

注意!!!!一般从库不允许写操作,只允许读,所以从库的配置文件需要额外添加一个参数read_only=on

# 从库额外需要的参数,添加后,非root用户连接从库后,只能进行读操作
read_only=on

# 主从复制依赖于mysql的二进制日志,开启主从复制的必要前提
# 例子:log_bin=/dbdata/mysql3306/log/mysql-bin
log_bin=参照例子

# 主从复制中各节点的身份id,主库与从库的server_id不能相同,一般设置为正整数
server_id=正整数类型,主库从库的server_id不能相同

# 从节点的回放日志存放路径,需要设置
# 例子:relay_log=/dbdata/mysql3306/log/mysql-relay-bin
relay_log=参照例子

# 以下为必要条件,不需要人为设置参数值,直接设置即可
gtid_mode=ON
enforce-gtid-consistency=true
log-slave-updates=1
relay-log-info-repository=TABLE
relay_log_recovery=1
master-info-repository=TABLE
binlog-format=row

搭建主从

主库

主库需要创建专门用于主从复制的用户

# 免密登录mysql,如果修改了root密码,需要添加-p参数登录
mysql -uroot 
# 创建用户
mysql > create user repl@'从库的IP地址' identified with mysql_native_password by '复制用户的密码' 
mysql > grant replication slave on *.* to repl@'从库的IP地址';
mysql > flush privileges;

查看主库日志状态

mysql > show master status;

在这里插入图片描述

从库

再次检查从库日志状态

# 免密登录mysql,如果修改了root密码,需要添加-p参数登录
mysql -uroot 
mysql > show master status;
  • 日志信息应该显示为,如果不是,请参考“检查从库状态”小节
    在这里插入图片描述

设置主从复制节点信息

# 免密登录mysql
mysql -uroot 
# 执行下方语句
mysql > CHANGE MASTER TO MASTER_HOST='主库的IP地址',
MASTER_USER='repl',MASTER_PASSWORD='复制用户的密码',
MASTER_PORT=3306,
MASTER_AUTO_POSITION=1;

开启主从

# 设置好主从复制相关参数后,开启主从复制
mysql > start slave;

检查主从复制状态,出现两个yes,并且日志号与主库相同表示搭建成功

mysql > show slave status\G

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值