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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Spring Boot和MyBatis Plus多数据配置MySQL和PostgreSQL,你可以按照以下步骤进行操作: 1. 首先,在你的Spring Boot项目中添加MySQL和PostgreSQL的依赖。在`pom.xml`文件中添加以下依赖: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> </dependency> ``` 2. 接下来,配置数据。在`application.properties`或`application.yml`文件中添加以下配置: ```yaml # MySQL 数据配置 spring.datasource.mysql.url=jdbc:mysql://localhost:3306/mysql_db spring.datasource.mysql.username=root spring.datasource.mysql.password=123456 # PostgreSQL 数据配置 spring.datasource.postgresql.url=jdbc:postgresql://localhost:5432/postgresql_db spring.datasource.postgresql.username=postgres spring.datasource.postgresql.password=123456 ``` 3. 然后,创建数据配置类。创建两个数据配置类,分别用于MySQL和PostgreSQL。例如,创建名为`MySQLDataSourceConfig`和`PostgreSQLDataSourceConfig`的类,并分别添加`@Configuration`和`@ConfigurationProperties`注解。 ```java @Configuration @ConfigurationProperties(prefix = "spring.datasource.mysql") public class MySQLDataSourceConfig { private String url; private String username; private String password; // 省略 getter 和 setter 方法 } ``` ```java @Configuration @ConfigurationProperties(prefix = "spring.datasource.postgresql") public class PostgreSQLDataSourceConfig { private String url; private String username; private String password; // 省略 getter 和 setter 方法 } ``` 4. 接下来,配置数据。在`DataSourceConfig`类中,创建两个数据的`DataSource`实例,并将它们注入到`SqlSessionFactory`中。 ```java @Configuration public class DataSourceConfig { @Bean(name = "mysqlDataSource") @ConfigurationProperties(prefix = "spring.datasource.mysql") public DataSource mysqlDataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "postgresqlDataSource") @ConfigurationProperties(prefix = "spring.datasource.postgresql") public DataSource postgresqlDataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "sqlSessionFactory") public SqlSessionFactory sqlSessionFactory(@Qualifier("mysqlDataSource") DataSource mysqlDataSource, @Qualifier("postgresqlDataSource") DataSource postgresqlDataSource) throws Exception { SqlSessionFactoryBean sessionFactory

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值