bingxin
Published on 2024-12-11 / 18 Visits
0

MySQL 主从库配置

在近期遇到了 MySQL 数据库配置主从的问题,在此小结一下

概述

在实现 MySQL 主从配置中,试验了许多配置方案,一开始是 Linux+MySQL docker container 的设计方案,后来根据业务需求采用 Windows MySQL 加 Docker MySQL 方案。

其实都大同小异,双方都是 MySQL 数据库即可。

实现步骤

既然是主从,首先有个主库,其中有数据,用户什么的(当然也可以没有),从库是新建的,为空的,在这里,我采用 docker 容器承载MySQL数据库。MySQL 版本:8.0.13

1.备份主库

主库锁表,备份出 sql 文件到从库复原,这一步主要目的是快速同步两边数据内容。

mysql> flush tables with read lock;

备份主库并传送到从库:

[root@localhost ~]# mysqldump -uroot -ppassword --all-databases > ./all-database-$(date
'+%F-%H-%M-%S').sql

传送 sql 文件就很多方式了,scp啊、直接传啊,都可以。

从库导入主库数据:

[root@localhost ~]# mysql -uroot -ppassword < ./all-database.sql

2.配置主库账户

主库配置同步账户“re_user”并赋予对应权限:

CREATE USER 're_user'@'%' IDENTIFIED BY 'password';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 're_user'@'%'WITH GRANT OPTION;
FLUSH PRIVILEGES;
SHOW MASTER STATUS;

执行完 SHOW 命令后会显示主库日志位置:

后面用到

3.配置从库

打开从库 MySQL 控制台:

CHANGE MASTER TO
MASTER_HOST='主库IP',
MASTER_USER='re_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.xxxxxx',
MASTER_LOG_POS=xxxx;

开启从库:

START SLAVE;

显示从库状态:

SHOW SLAVE STATUS\G

显示两个 Yes 即配置成功

注意

在这次配置过程中,也出现过相关错误,但大多数错误在从库状态中都可以找到端倪,需要注意的点有:

  1. 主库从库的 ID 需要做区分;

  2. 注意主库对外用户权限配置;

  3. ...