在近期遇到了 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 即配置成功
注意
在这次配置过程中,也出现过相关错误,但大多数错误在从库状态中都可以找到端倪,需要注意的点有:
主库从库的 ID 需要做区分;
注意主库对外用户权限配置;
...