SpringBoot+MyBatisPlus+Mysql多数据源配置(一)

多数据源配置(一):mysql数据库主从关系配置

在linux环境下做主从关系配置,至少需要准备两台数据库,一台作为主库,另一台作为从库(如果条件好的话,也可以一主多从)。我们这边准备了两台数据库:172.10.2.53(主)、172.10.2.35(从)

一、主数据库的配置

1.进入Mysql的配置文件

vim /etc/my.cnf

2.最后添加三行

log-bin=mysql-bin #开启二进制日志
server-id=53 #设置server-id唯一值,标识主机
binlog-do-db=MYTC #指定某个库开启同步

3.重启Mysql服务

service mysqld restart

4.创建账号密码(此账号用于同步二进制数据用)
进入mysql(使用root用户)

mysql -uroot -p

输入密码后进入mysql控制台,然后创建同步用户

CREATE USER 'your_name'@'%' IDENTIFIED BY 'your_pwd';

查看用户是否创建成功

select user,host from mysql.user;

分配权限

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

5.刷新权限

flush privileges;

6.查看master状态,记录二进制文件名File和位置Position,后面配从库要用

show master status;

结果图示如下,把file和position记录下来,从库配置要使用:
在这里插入图片描述

二、从数据库的配置

1.进入Mysql的配置文件

vim /etc/my.cnf

2.最后添加两行

server-id=35 #设置server-id唯一值,标识主机
replicate-do-db=MYTC #设定需要复制的数据库

3.重启Mysql服务

service mysqld restart

4.进入mysql(使用root用户)

mysql -uroot -p

5.执行如下SQL语句

CHANGE MASTER TO
MASTER_HOST='172.10.2.53',
MASTER_PORT=3306,
MASTER_USER='your_name',
MASTER_PASSWORD='your_pwd',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=1308;

解释:分别是主库的地址、端口、主库创建的同步账号、密码、主库二进制文件名File和位置Position

6.启动slave同步进程

start slave;

7.查看slave状态,当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了

show slave status\G;

8.可以改数据验证同步,可以stop slave;执行看看效果

问题踩坑

踩坑一:Slave_IO_Running:Connecting
在这里插入图片描述
解决方案:
在主库执行以下SQL:

ALTER USER 'your_name'@'%' IDENTIFIED WITH mysql_native_password BY 'your_pwd';

踩坑二:MySQL主从同步数据不一致(主要原因:从库对数据进行删除或新增,主库同步时报错)
主数据库锁表(当前表设为只读)

use MYTC;
lock table oc_log read;

把主数据库中的表拷贝到从数据库中的表中(替换不一致的表)

从数据库停止同步

stop slave;

从数据库重新设置从库同步主库的位置

CHANGE MASTER TO
MASTER_HOST='172.10.2.53',
MASTER_PORT=3306,
MASTER_USER='your_name',
MASTER_PASSWORD='your_pwd',
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=1308;

从数据库开启同步

start slave;

主数据库解锁

unlock tables;

猜你喜欢

转载自blog.csdn.net/weixin_50989469/article/details/120758655