docker 搭建主从同步的Mysql集群

  1. 为什么需要数据库集群?

随着业务的发展,系统的数据量和访问量都在大量增长。

对于大型网站来说,有不少业务是读多写少的。

 

  1. 数据库集群:

一个是主库,负责写入数据,我们称之为:写库

其他都是从库,负责读取数据,我们称之为:读库

  1. 容器化实现:
    1. 环境搭建
  • 下载mysql 镜像
docker pull mysql:5.7
  • 启动 docker
docker run -p 3339:3306 --name mysql-master --privileged=true \

-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7



docker run -p 3340:3306 --name mysql-slave --privileged=true \

-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

 

  • 查看ip

【查看主IP】

docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql-master

【查看从IP】

docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql-slave

    1. 主从配置实现:

主节点配置

  • 1. 进入容器:

 

  • 2. 修改配置文件
vim /etc/mysql/my.cnf

[mysqld]

## 同一局域网内注意要唯一

server-id=100 

## 开启二进制日志功能,可以随便取(关键)

log-bin=mysql-bin

 

注:没有vim 需要安装

apt-get update
apt-get install vim
  • 3. 重启mysql服务使配置生效
service mysql restart

## 重启mysql会使docker容器停止
docker start mysql-master
  • 4. 创建数据同步用户并授权
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

从节点配置

  • 修改配置文件
vim /etc/mysql/my.cnf

[mysqld]
## 设置server_id,注意要唯一
server-id=101

## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用 log-bin=mysql-slave-bin

## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
  • 重启生效

 

链接Master(主)和Slave(从)

  • 1、查看主节点的状态
show master status;

 

  • 2、在Slave 中配置同步数据的File 和Position
change master to master_host='172.17.0.2', \
master_user='slave',\
master_password='123456', \
master_port=3306, \
master_log_file='mysql-bin.000001', \
master_log_pos= 617, \
master_connect_retry=30;

配置说明:

master_host:Master的地址

master_port:Master的端口号,指的是容器的端口号

master_user:用于数据同步的用户

master_password:用于同步的用户的密码

master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值

master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值

master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒

 

  • 3、开启主从复制
start slave;
  • 4、在Slave中查看主从同步状态
show slave status \G;

 

    1. 测试主从复制

在Master创建一个数据库,检查Slave是否存在此数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值