阿里云Linux+Docker部署MySql读写分离

该文详细介绍了如何通过Docker来实现MySQL的读写分离。首先,通过Docker拉取MySQL镜像并启动主从两个容器,配置安全组。接着,修改my.cnf文件设置主从服务器的参数,创建主服务器用户并授权,最后在从服务器上配置连接主服务器进行主从复制。当Slave_IO_Running和Slave_SQL_Running都为Yes时,表明读写分离配置成功。
摘要由CSDN通过智能技术生成

若想实现MySQL读写分离需提前准备工具如下:

一、首先进入Putty工具使用Docker命令拉取MySQL镜像

根据需要拉取下载Mysql对应版本的镜像

docker pull mysql     //拉取最新的镜像
docker pull mysql:5.7 //拉取MySql5.7版本的镜像

二、启动MySQL容器,配置主从MySQL

首先在阿里云加入安全组3306 3307 或者3306/3310区间即可

  1. 配置主MySQL

参数详解:

// -d守护进程

// -p端口映射 -p 宿主机端口:容器端口

// --privileged=true 应用容器 获取宿主机root权限

// -v 绑定共享映射目录,-v 宿主机目录:容器目录

docker run -d -p 3306:3306 --privileged=true -v ~/docker_data/mysql-master/log:/var/log/mysql -v ~/docker_data/mysql-master/data:/var/lib/mysql -v ~/docker_data/mysql-master/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql-master mysql
若指定mysql版本之后 需要在指定位置 --name mysql-master mysql:版本  例子 mysql:5.7
  1. 配置从MySQL

参数详解:

// -d守护进程

// -p端口映射 -p 宿主机端口:容器端口

// --privileged=true 应用容器 获取宿主机root权限

// -v 绑定共享映射目录,-v 宿主机目录:容器目录

docker run -d -p 3307:3306 --privileged=true -v ~/docker_data/mysql-slave/log:/var/log/mysql -v ~/docker_data/mysql-slave/data:/var/lib/mysql -v ~/docker_data/mysql-slave/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql-slave mysql
若指定mysql版本之后 需要在指定位置 --name mysql-master mysql:版本  例子 mysql:5.7

三、查看MySQL配置是否成功

  1. 打开Xftp工具连接远程阿里云服务器,找到安装MySQL主从配置挂载的位置

2、Docker ps -a 查看运行中所有的容器

四、配置my.cnf文件

  1. 配置主库master的my.cnf文件

[mysqld]## 设置server_id 同一局域网中需要唯一
server_id=101## 指定不需要同步的数据库名称
binlog-ignore-db=mysql## 开启二进制日志功能
log-bin=mall-mysql-bin## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M## 设置使用的二进制日志格式(mixed,stateement,row)
binlog_format=mixed## 二进制日志过期清理时间 默认值为0 表示不自动清理
expire_logs_days=7## 跳过主从复制值遇到的所有错误或指定类型的错误,避免slave端复制中断## 如:1062错误是指一些主键重复 1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
  1. 配置从库slave的my.cnf文件

[mysqld]## 设置server_id 同一局域网中需要唯一
server_id=102## 指定不需要同步的数据库名称
binlog-ignore-db=mysql## 开启二进制日志功能
log-bin=mall-mysql-slave1-bin## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M## 设置使用的二进制日志格式(mixed,stateement,row)
binlog_format=mixed## 二进制日志过期清理时间 默认值为0 表示不自动清理
expire_logs_days=7## 跳过主从复制值遇到的所有错误或指定类型的错误,避免slave端复制中断## 如:1062错误是指一些主键重复 1032错误是因为主从数据库数据不一致
slave_skip_errors=1062## relay_log配置中继日志
relay_log=mall-mysql-relay-bin## log_slave_updates表示slave将复制事件写进自己的二进制日志中
log_slave_updates=1## slave设置为只读(具有super权限的用户除外)
read_only=1

五、创建服务器配置读写分离

  1. 创建主服务器用户并查询状态

//重启主库容器
docker restart mysql-master           //进入主库容器
docker exec -it mysql-master /bin/bash//进入容器命令行后进入mysql终端
mysql -uroot -p123456                 //新建slave用户
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';//给slave用户分配权限
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';//查询主服务器状态
show master status;

此处安全提醒红框内数据是活数据,需根据自己查看的实际情况记录

show master status;

此处命令可能存在问题是不显示数据,你可以使用下边步骤先切换到slave从库配置,然后返回主库master再次配置

如从当前主MySQL配置退出,可以使用Docker命令 exit 直接退回上一级目录
  1. 创建从服务器

//重启从库容器
docker restart mysql-slave             //进入从库容器
docker exec -it mysql-slave /bin/bash  //进入容器命令行后进入mysql终端
mysql -uroot -p123456                  //查看从库服务器状态
show slave status \G;
  1. slave配置连接master

// slave配置连接master
// master_host 宿主机ip
// master_user 刚刚创建的主库用户
// master_password 刚刚创建的主库用户密码
// master_port 主库端口号
// master_log_file 刚刚在主库通过show master status;查询出来的File名称
// master_log_pos 刚刚在主库通过show master status;查询出来的Position
// master_connect_retry 重连的时间间隔
change master to master_host='192.168.1.10', //192.168.1.10更改为阿里云公网自己的
master_user='slave',
master_password='123456',
master_port=3306,
master_log_file='mall-mysql-bin.000001',     //mall-mysql-bin.000001同理更改
master_log_pos=1177,                         //1177更改为自己的
master_connect_retry=30;
//开启主从复制
start slave;//查询查询从库状态
show slave status \G;

此时,目录中 Slave_IO_Running 与 Slave_SQL_Running 都为 Yes 即说明可以实现读写分离了,也就配置成功了

六、测试MySQL读写分离是否成功

连接阿里云MySQL两台主从服务器,建库建表

注意:成功之后即可根据需要搭建MySQL集群,多建立几个slave从库,配置my.cnf文件执行从库配置操作,便可实现集群一主多从的搭建。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值