dble配置mysql主从同步

前提

已有mysql主从环境,dble环境,并且已经启动mysql和dble。可以参考我前面写的两篇文章。

修改dble配置文件

db.xml

<?xml version="1.0"?>
<!DOCTYPE dble:db SYSTEM "db.dtd">
<dble:db xmlns:dble="http://dble.cloud/" version="4.0">
    <dbGroup name="host_1" rwSplitMode="0" delayThreshold="100">
      <heartbeat >select 1</heartbeat>
      <dbInstance name="hostM1" url="10.11.33.211:3306" user="root" password="1017~Fulin" maxCon="1000" minCon="1000" primary="true" />
      <dbInstance name="hostM2" url="10.11.33.212:3306" user="root" password="1017~Fulin" maxCon="1000" minCon="1000" primary="false" />
    </dbGroup>
</dble:db>

user.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dble:user SYSTEM "user.dtd">
<dble:user xmlns:dble="http://dble.cloud/" version="4.0">
    <managerUser name="admin" password="admin"/>
    <shardingUser name="test" password="123456" schemas="testdb" readOnly="false"  maxCon="20"/>
</dble:user>

sharding.xml

注意使用singleTable,而不是shardingTable

<?xml version="1.0"?>
<!DOCTYPE dble:sharding SYSTEM "sharding.dtd">
<dble:sharding xmlns:dble="http://dble.cloud/" version="4.0">
    <schema name="testdb" > 
    <singleTable name="single" shardingNode="dn1"/>
    </schema> 
    <shardingNode name="dn1" dbGroup="host_1" database="tb_single"/>
</dble:sharding>

因为没有使用分库分表,因此不用设置id自增,在建表语句中设置自增即可。

登录dble管理账号,检查配置文件并重新加载配置

## 登录dble管理账号,账号用户名和密码对应user.xml中的<managerUser name="admin" password="admin"/>
docker exec -it mysql mysql -uadmin -padmin -P9066 -h 10.11.33.211
## 检查配置文件是否有误
mysql> dryrun;

## 列名含义:
## TYPE: 错误类型, ⽐如XML表⽰xml配置错误, BACKEND表⽰后端连接错误
## LEVAL:错误级别: 分为WARNNING 和ERROR表,⼀般来说WARNNING错误不影响启动和使⽤, 但需要注意。
## DETAIL :错误详情

## 配置文件没有问题,则重新加载配置生效
mysql> reload @@config;
Query OK, 1 row affected (0.12 sec)
Reload config success
## 创建shardingNode
create database @@shardingNode ='dn1';

## 可以看到主从节点数据库上都已经创建tb_single库
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| tb_single          |
+--------------------+
5 rows in set (0.00 sec)

登录使用账号,建表

#登录使用用户
docker exec -it mysql mysql -utest -p123456 -P8066 -h 10.11.33.211

## 可以先查看当前已经存在的databases;
mysql> show databases;
+----------+
| DATABASE |
+----------+
| testdb   |
+----------+
1 row in set (0.01 sec)

#使用schemas的表
use testdb;

# 创建表
CREATE TABLE `single` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

验证主从同步及复制

## 插入数据
INSERT INTO `single`(`name`) VALUES ("zhangsan");
INSERT INTO `single`(`name`) VALUES ("lisi");

## 可以登录主从节点查看这两条数据都存在
mysql> use tb_single;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+---------------------+
| Tables_in_tb_single |
+---------------------+
| single              |
+---------------------+
1 row in set (0.00 sec)

mysql> select single;
ERROR 1054 (42S22): Unknown column 'single' in 'field list'
mysql> select * from single;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
+----+----------+
2 rows in set (0.00 sec)

## 此时,先关闭主节点,关于如何确定是否为主节点,可以通过以下命令,查看从节点ip地址来确定主节点。
mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 10.11.33.211
                  Master_User: slave
                  Master_Port: 3306
                  
[root@mysql1 ~]# docker stop mysql 
mysql

## 关闭主节点后,再插入数据
INSERT INTO `single`(`name`) VALUES ("wangwu");

## 这时只有一个mysql节点在运行,可以看到多了一条wangwu的记录。
mysql> select * from single;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
|  3 | wangwu   |
+----+----------+
3 rows in set (0.00 sec)
 
## 启动刚才停用的mysql节点
[root@mysql1 ~]# docker start mysql 
mysql

## 登录mysql,查看single表中也存在wangwu这条数据。说明主从同步和复制是没有问题的。

docker exec -it mysql mysql  -uroot -p1017~Fulin

use tb_single;
mysql> select * from single;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
|  3 | wangwu   |
+----+----------+
3 rows in set (0.00 sec)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值