MySQL主从搭建(问题大聚集,告别部署烦恼)

MySQL主从搭建

前言

公司规定,生产环境中一旦与数据(缓存也不例外)扯上关系的一律不由k8s统一管理

因此,别想一键式部署了,只能老老实实单独部署

再此,就记录一下搭建过程,分享给小伙伴们,避免浪费时间

废话不多说,上车

下载

没有安装mysql,我这边也给大伙们准备了~

MySQL详细安装

配置

1、masternode二台服务器,分别到/etc/my.cnf配置文件, 在mysqld里添加一下属性

#master
[mysqld]
server-id=101
log-bin = mysql-bin
auto-increment-increment = 2
auto-increment-offset = 1000
 
#node
[mysqld]
server-id=103
log-bin = mysql-bin
auto-increment-increment = 2
auto-increment-offset = 1001

2、进入Mysql,分别为二台master创建各种的用户供对方使用

温馨提示: 本案例为双主从,也就是master同步到node,node同步到master。单主从,就只需要不执行带*即可

#master的机器上
CREATE USER 'master'@'%' IDENTIFIED BY '123456';
 
#node的机器上(*)
CREATE USER 'node'@'%' IDENTIFIED BY '123456';

3、分别给用户授予复制权限

#master的机器上
GRANT REPLICATION SLAVE ON *.* TO 'master'@'%' identified by '123456';
#刷新
flush privileges;
 
#node的机器上(*)
GRANT REPLICATION SLAVE ON *.* TO 'node'@'%' identified by '123456';
#刷新
flush privileges;

4、分别重启服务,登录mysql用户,通过show master status 查看二进制文件名称还有pos位置,为slave配置复制位置

master

image-20220726114254252

node

image-20220726114150728

5、分别切换master,注意master_log_file还有master_log_pos mysql里面操作

#node的机器上
change master to master_host='master服务器ip',master_user='master',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=154;

#master的机器上(*)
change master to master_host='node服务器ip',master_user='node',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=154;

6、分别利用命令启动slave

#启动
start slave;
#关闭
stop slave;

7、测试结果,在master上创建数据库,node是否能同步,然后再在node上创建表写数据,看master能否同步。

image-20220726121613380

安装完成之后,所有mysql重启就可以了

其他问题

  • ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

很显然,系统提示我们需要更改密码。一般出现这种情况是第一次登录时,需要先修改密码后才能操作。

set password for root@localhost=password('123456');
  • Slave_SQL_Running:no:

img

解决办法如下:

stop slave; 
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE; 
show slave status;
  • Slave_IO_Running: No
#解决办法
stop slave;
#根据master重新设置file和pos
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000026',MASTER_LOG_POS=0; 
slave start; 
show slave status
  • 数据库主从日志很大

设置只保留30天的binlog
(临时,重启mysql这个参数会失败)
set global expire_logs_days = 30;
(永久,my.cnf中添加,重启后生效)、
expire_logs_days = 30
查看当前的日志保存天数
show variables like ‘expire_logs_days’;

  • 若有其他未提及问题,进行留言,小编会及时回复~
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MY小炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值