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; --创建表