mysql双机注意事项

简介

mysql双机(互为主从)设置可以有效防止数据因为一台数据库服务器因为断电或者死机等不可控因素出现数据无法进行curd等操作而给业务造成损失。

具体操作简单概括是,设置两台mysql互为主从,然后通过nginx设置主从代理,这样就可以保证,在主数据库服务器不工作时,另一台数据库仍然可以进行数据库的crud操作,并且因为互为主从的原因,在主数据库重启后,未来得及写入的操作也会被从数据库同步到主数据库服务器中;经测试,在两台1.8GHz处理器,16G内存的服务器之间的mysql信息传播速度为200/s。

mysql主从

B站视频教程

B站视频介绍的是一主一从的情况,要实现互为主从,只需要把教程中的从机也当作主机,同样的操作再反转进行一次即可。注意,此时的两台服务器权限,read-only都为0

配置文档

以下把201和202作为测试互为主从的测试机名

201

202

注意

只需要注意上述配置文档配置的三个参数即可

参数 含义
server-id 唯一
read-only=0 表示两个数据库都可以进行读写
log-bin=mysql-bin 开启日志记录

成功标志

201

202

常见错误

Slave_IO_Running: Connecting/No

  1. 克隆的Linux系统,数据库的uuid一样,因此需要修改uuid:相关csdn教程

  2. 日志文件未开启,或服务器id设置相同(直接克隆linux系统会出现,同上),按照给定的csdnB站教程修改

  3. 创建了多个相同的主从数据库账户(test),而且他们的权限密码不同,用以下mysql命令展示用户权限,并删除掉多余的

1
select user, host from mysql.user;

常用命令

创建主从账户

在202上创建

1
2
3
CREATE USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'P@sswOrd202';

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

改变主从节点

在201上连202

1
2
3
4
5
CHANGE MASTER TO MASTER_HOST='192.168.4.202',
MASTER_USER='test',
MASTER_PASSWORD='P@sswOrd202',
MASTER_LOG_FILE='mysql-bin.000106',
MASTER_LOG_POS=455521378;