MySQL 主从同步配置
参考MySQL主从同步配置文档Sharding-jdbc读写分离配置
# sharding-jdbc 读写分离配置 # 数据源 spring.shardingsphere.datasource.names = master,slave0 spring.shardingsphere.datasource.master.type = com.zaxxer.hikari.HikariDataSource spring.shardingsphere.datasource.master.driver-class-name = com.mysql.cj.jdbc.Driver spring.shardingsphere.datasource.master.jdbcUrl = jdbc:mysql://127.0.0.1:3306/master_order?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useUnicode=true&useSSL=false spring.shardingsphere.datasource.master.username = root spring.shardingsphere.datasource.master.password = spring.shardingsphere.datasource.slave0.type = com.zaxxer.hikari.HikariDataSource spring.shardingsphere.datasource.slave0.driver-class-name = com.mysql.cj.jdbc.Driver spring.shardingsphere.datasource.slave0.jdbcUrl = jdbc:mysql://127.0.0.1:3306/slave_order?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useUnicode=true&useSSL=false spring.shardingsphere.datasource.slave0.username = root spring.shardingsphere.datasource.slave0.password = # 指明sharding-jdbc数据源ds0的主从数据源配置 spring.shardingsphere.sharding.master-slave-rules.ds0.master-data-source-name = master spring.shardingsphere.sharding.master-slave-rules.ds0.slave-data-source-names = slave0 # 指定t_order表的主键生成策略为SNOWFLAKE spring.shardingsphere.sharding.tables.t_order.key-generator.column = order_id spring.shardingsphere.sharding.tables.t_order.key-generator.type = SNOWFLAKE # 打开sql输出日志 spring.shardingsphere.props.sql.show = true代码及测试
@Test public void testSelectByPrimaryKey() { Order order = orderDao.selectByPrimaryKey(393883632147628033L); System.out.println("order = " + order); }日志信息
[main] INFO ShardingSphere-SQL - Actual SQL: slave0 ::: SELECT order_id, price, user_id, status FROM t_order WHERE order_id = ? ::: [393883632147628033] 通过日志可以看出,所有查操作落入slave0数据源