IT教程 ·

Docker实战之MySQL主从复制

Spring源码分析-BeanFactoryPostProcessors 应用之 PropertyPlaceholderConfigurer

媒介

曾几何时,看着嵬峨上的架构和列位先辈高明的炫技,有无怦然心动,也想一窥终究?每当口试的时刻,拿着单运用的架构,吹着分库分表的牛X,有无内心慌的一批?

实在许多时刻,我们所缺乏的只是对嵬峨上的手艺的练习训练。没有相干的营业需求,没有集群环境,然后便只是Google几篇博文,看下道理,便算是了解了。然则真的邃晓了吗?浩瀚的复制粘贴中,那篇文章才对我们有效,哪些又是耳食之言?

所幸容器手艺的疾速生长,让种种手艺的模仿成为现实。接下来Docker相干的一系列文章,将以实战为主,协助人人疾速搭建测试和练习训练环境。

Docker文件编排

由因而测试为了练习训练用,这里用docker-compose举行设置文件的编排,现实的集群环境中并非这么布置的。

  1. 编排docker-compose-mysql-cluster.yml,装置master和slave节点
version: '3'
services:
  mysql-master:
    image: mysql:5.7
    container_name: mysql-master
    environment:
      - MYSQL_ROOT_PASSWORD=root
    ports:
      - "3307:3306"
    volumes:
      - "./mysql/master/my.cnf:/etc/my.cnf"
      - "./mysql/master/data:/var/lib/mysql"
    links:
      - mysql-slave

  mysql-slave:
    image: mysql:5.7
    container_name: mysql-slave
    environment:
      - MYSQL_ROOT_PASSWORD=root
    ports:
      - "3308:3306"
    volumes:
      - "./mysql/slave/my.cnf:/etc/my.cnf"
      - "./mysql/slave/data:/var/lib/mysql"
  1. 设置master设置文件my.cnf
[mysqld]
# [必需]启用二进制日记
log-bin=mysql-bin 
# [必需]效劳器唯一ID,默许是1,平常取IP末了一段  
server-id=1
## 复制过滤:也就是指定哪一个数据库不必同步(mysql库平常不同步)
binlog-ignore-db=mysql
  1. 设置slave设置文件my.cnf
[mysqld]
# [必需]效劳器唯一ID,默许是1,平常取IP末了一段  
server-id=2
  1. 启动docker-compose,建立docker镜像文件
docker-compose -f docker-compose-mysql-cluster.yml up -d

docker ps检察历程,能够看到2个实例已启动。

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
1f4ad96b4d5e        mysql:5.7           "docker-entrypoint.s…"   48 seconds ago      Up 46 seconds       33060/tcp, 0.0.0.0:3307->3306/tcp   mysql-master
8e2214aacc43        mysql:5.7           "docker-entrypoint.s…"   49 seconds ago      Up 47 seconds       33060/tcp, 0.0.0.0:3308->3306/tcp   mysql-slave

设置主从复制

  1. 设置master

Docker实战之MySQL主从复制 IT教程 第1张

  1. 设置slave

Docker实战之MySQL主从复制 IT教程 第2张

这时刻就能够运转一些 SQL 语句来考证同步效劳是不是一般了。

考证主从复制

  1. master建立db

Docker实战之MySQL主从复制 IT教程 第3张

  1. 检察slave是不是同步建立

Docker实战之MySQL主从复制 IT教程 第4张

由效果可知,已完成MySQL主从复制环境的搭建。

读写星散

MySQL主从复制是其自身的功用,完成读写星散就得依托其他组件了,比方sharding-jdbc。然则sharding-jdbc只是完成读写星散,自身的权限掌握照样须要MySQL这边来设置的。

  1. 设置master账户及权限

建立帐号并授与读写权限

CREATE USER 'master'@'%' IDENTIFIED BY 'Password123';
GRANT select,insert,update,delete ON *.* TO 'master'@'%';
flush privileges;

Docker实战之MySQL主从复制 IT教程 第5张

  1. 设置slave账户及权限

建立帐号并授与只读权限

use mysql;
CREATE USER 'slave'@'%' IDENTIFIED BY 'Password123';
GRANT select ON *.* TO 'slave'@'%';
FLUSH PRIVILEGES;

Docker实战之MySQL主从复制 IT教程 第6张

 

视频在线率统计——基于驱动总线设备的领域驱动设计方法落地

参与评论