Docker部署mysql一主两从

部署Docker搭建mysql一主两从

为什么要使用mysql主从集群

简单来说,如果对数据库的读和写都在同一个数据库服务器中操作,数据库的压力会变大,导致读写性能会下降。为了提升数据库性能,优化用户体验,可以通过做主从复制(读写分离)来减轻主数据库的负载。 而且如果主数据库宕机,可快速将业务系统切换到从数据库上,可避免数据丢失。

基于docker,手动搭建mysql主从集群

案例环境

操作系统IP地址配置主要软件备注
centos7.9192.168.10.1282C2Gdocker20

#1、关闭防火墙

#2、修改selinux文件

#3、搭建时间同步

案例实施

拉去镜像

docker pull mysql:5.7.28
docker images

启动镜像,并设置master需要配置的参数,设置server-id和开启logbin

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD="123456" -d mysql:5.7.28 --server-id=1 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --log-bin=mysql-bin --sync_binlog=1

进入容器,创建主从同步账号

docker exec -ti mysql bash
​
mysql -uroot -p123456
​
CREATE USER 'root'@'172.17.%.%' IDENTIFIED BY '123456';
​
GRANT REPLICATION SLAVE ON *.* TO 'root'@'172.17.%.%';
​
FLUSH PRIVILEGES;
#查看master的binlog信息
SHOW MASTER STATUS;

查看一下容器的ip

docker inspect 容器ID | grep IPAddress”

启动slave容器,实现主从同步

docker run --name slave -e MYSQL_ROOT_PASSWORD="123456" -d mysql:5.7.28 --server-id=2 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

进入容器,连接master,然后开启同步

docker exec -ti slave bash
​
mysql -uroot -p123456

这里master_host就是刚刚看到的master的ip,master_user就是我们创建用于同步的账号,master_log_file和master_log_pos就是通过show master status获得到的

CHANGE MASTER TO   MASTER_HOST='172.17.0.2',MASTER_USER='kgc_root',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=773;
#MASTER_LOG_FILE和MASTER_LOG_POS以实际为准
​
START SLAVE;
#查看slave同步状态
SHOW SLAVE STATUS\G;
​
set global read_only=1;
#只读模式
​

启动slave2容器,实现主从同步

docker run --name slave2 -e MYSQL_ROOT_PASSWORD="123456" -d mysql:5.7.28 --server-id=2 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

启动容器

docker exec -it slave2 bash

#####进入容器

mysql -uroot -p123456

CHANGE MASTER TO MASTER_HOST='172.17.0.2',MASTER_USER='kgc_root',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000003',MASTER_LOG_POS=773; #MASTER_LOG_FILE和MASTER_LOG_POS以实际为准

测试同步

 

1.进入master,创建一个测试数据库

docker exec -ti mysql bash
mysql -uroot -p123456
CREATE DATABASE test;

2.进入slave,slave2查看对应的test库是否同步过来

docker exec -ti slave bash
mysql -uroot -p123456
SHOW DATABASES;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值