Docker 部署 mysql 读写分离

Docker 读写分离

前期准备自己安装docker服务

1、准备mysql镜像

docker pull mysql:8.0

创建容器网络,用于统一mysql容器ip

docker network create --subnet=172.10.0.0/24 docker-network

[https://blog.csdn.net/weixin_38250126/article/details/81456789](docker 容器网络学习)

2、创建映射目录

//master目录 保存数据和配置
mkdir -p /usr/mysql/master/conf.d/

//slave目录
vi /usr/mysql/master/conf.d/my.cnf

3、创建master配置文件

//编辑配置文件
vi /usr/mysql/master/conf.d/my.cnf

//添加配置信息
[mysqld]
log-bin=master-bin
server-id=1

4、创建slave配置文件

//编辑配置文件
vi /usr/mysql/slave/conf.d/my.cnf

//添加配置信息
[mysqld]
log-bin=master-bin
server-id=2

5、启动master/slave服务

//master 服务启动
docker run -d --name mysql-master \
-p 3308:3306 \
--net docker-network --ip 172.10.0.10 \
-v /usr/mysql/master/conf.d/data:/var/lib/mysql \
-v /usr/mysql/master/conf.d:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0
//slave 服务启动
docker run -d --name mysql-slave \
-p 3307:3306 \
--net docker-network --ip 172.10.0.11 \
-v /usr/mysql/slave/conf.d/data:/var/lib/mysql \
-v /usr/mysql/slave/conf.d:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0

6、查看服务 docker ps

7、配置master读写权限

现在最好开启两个窗口分别处理msater/slave

master

# 进入容器shell 
docker exec -it mysql-master /bin/sh

登录mysql

mysql -uroot -p

// mysql shell
// 用户名:root
// 密码:root
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

slave

# 进入容器shell
$ docker exec -it mysql-slave /bin/sh

登录mysql

//进入mysql
mysql -uroot -p

// mysql shell
// 用户名:root
// 密码:root
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

8、进入mysql-master查看master状态

// mysql shell
show master status;

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| master-bin.000004|     156  |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

9、进入mysql-slave关联主从模式(自行更改那些参数对应的值)

(如果不小心配置错,输入mysql> stop slave;然后重新录入一遍)

// mysql shell
change master to master_host='172.10.0.10', master_user='root',master_password='root', master_log_file='master-bin.000003',master_log_pos=156;
// mysql shell
// 启用slave
start slave;

二次启动报错

#执行
reset slave;
start slave;

https://blog.csdn.net/qq_31725371/article/details/101610888

10、mysql-slave查看是否成功

show slave status \G
#以下两个都为yes就代表成功了
Slave_IO_Running: Yes 
Slave_SQL_Running: Yes 
//说明主从成功

https://blog.csdn.net/u013829518/article/details/91869547

11、测试

在master创建test数据库,再到slave中查看是否存在test库,若存在则基本完成,若未成功检查binlog、master host、position是否正确

show databases;   --查看表

create database test1;   --创建表

[https://www.cnblogs.com/-mrl/p/13262554.html](参阅 谢谢)

posted @ 2021-07-29 19:05  野香蕉  阅读(348)  评论(0编辑  收藏  举报