mysql主从分离java项目实现_Docker下实现MySQL主从(读、写分离)同步配置

docker下实现两个(或多个)mysql容器的主、从数据库同步配置,首先要明白docker容器的相互通信关系,默认是使用的bridge模式:

format,png

也就是说,通过docker run命令创建docker容器是每个容器都有自己单独的内部地址的(例如: 172.17.0.2),而且,在容器内部运行的时候是可以相互访问的(例如:通过docker exec ... bash 命令运行之后,可以在linux命令下登录到mysql之后,直接连上另外一个mysql容器,地址是另外一个mysql容器的内部地址,例如: 172.17.0.3)。切记! 运行需要访问对方容器的命令时,只能在容器内部操作!

首先,通过docker的run命令安装mysql容器:

docker run -d -p 3307:3306 --name  my-mysql-1 -e MYSQL_ROOT_PASSWORD=654321  mysql:5.7.18   #master主库

docker run -d -p 3308:3306 --name  my-mysql-2 -e MYSQL_ROOT_PASSWORD=654321  mysql:5.7.18  #slave从库

在docker下实现两个mysql容器的主从配置,主要分为四个步骤:

1.配置master主库,在/etc/mysql# cd mysql.conf.d/mysqld.cnf 添加:

server-id = 1

log-bin= mysql-bin

read-only=0

2.在master主库创建同步数据用户,分配REPLICATION SLAVE 权限,使用flush privileges刷新:

CREATE USER 'slave'@ '%' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by '123456';

flush privileges;

3.配置slave从库,在/etc/mysql# cd mysql.conf.d/mysqld.cnf 添加:

server-id = 2

log-bin= mysql-bin

read-only=1

4.设置master主库连接:

change master to master_host='172.17.0.3',master_user='slave',master_password='123456',master_log_file='mysql-                  bin.000003',master_log_pos=153,master_port=3306;  #该命令在容器内部运行:docker exec ... bash  -->  cd /etc/init.d --> mysql -uroot -p 登录到mysql 然后执行上面代码。

master_log_file为master主库中 show master status; 命令查询出来的 File 值。

切记!master_log_pos 该参数值最好使用 master主库中 show master status; 命令查询出来的 Position 值,否则可能会 Slave_SQL_Running为No,该值应该为数据同步的索引位置。

#如果报错:ERROR 3021 (HY000): This operation cannot be performed with a running slave io thread; run STOP SLAVE IO_THREAD FOR CHANNEL '' first.   需要先把之前运行的slave停掉:stop slave;  等运行完 change master命令之后再运行: start slave;

最后,在master主库执行:

create database test;

use test;

create table student(id int primary key auto_increment,name varchar(50), age int, create_time datetime);

insert into student values(id,'sdfs',12,CURRENT_DATE);

就可以看到slave从库中也创建了该数据库、表以及刚插入的数据!

参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值