docker部署mysql8.0(一主一从)

2022-10-27  本文已影响0人  我我我不是明
前期准备好docker环境,因为最近自己在学shardingsphere-jdbc的分库分表+读写分离。
搭建主从复制就是为了读写分离做准备

第一步:安装Mysql 8.0

我这里使用的是mysql8.0版本, 命令:docker pull mysql:8.0

image.png

在第二步之前可以随便启动Mysql,然后将my.cnf配置文件拉取到服务器位置

docker cp [容器id]:/etc/mysql/my.cnf /home/mysql/master/

第二步:启动mysql(2个 3306和3307端口)

3306:master
3307: slaver

这里-v 映射位置提前自己创建好(我自己的/home/mysql)

先启动master数据库
docker run -d --name mysql8-master -p 3306:3306 -v /home/mysql/master/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=xiaowan mysql:8.0
再启动slave数据库
docker run -d --name mysql8-slave -p 3307:3306 -v /home/mysql/slaver/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=xiaowan mysql:8.0

第三步: 配置下my.cnf文件(/home/mysql/下面的master和slaver)

这里为什么要配置呢?因为后面启动slave的时候如果server-id不区分会报错

master
log-bin=mysql-bin
server-id=1
image.png
slave
log-bin=mysql-bin
server-id=2
image.png

第四步:开始配置主从关系

配置之前可以自己用电脑工具测试是否能远程链接服务器的数据库
如果链接补上的话,可以进入容器的mysql里面按照下面配置一下(密码啥的自己改)
ALTER USER 'root'@'%' IDENTIFIED BY 'xiaowan' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xiaowan';
FLUSH PRIVILEGES;
接下来开始配置主从关系

4.1、进入主容器(主数据库mysql8-master)
docker exec -it mysql8-master /bin/bash
进入容器之后进入mysql
mysql -u root -p
进入mysql以后,执行以下命令
设置log
set session binlog_format=STATEMENT;

重点这里通过以下命令去查看File和Postition(配置从数据库要用到)

show master status;
我的File:mysql-bin.000003
我的Position:156

image.png

4.2、配置从容器(从数据库mysql8-slave)

注意点: 在配置之前通过下面可以先去查看数据库的验证方式
use mysql;
select user,host,plugin from user;
image.png

先进入到从数据库里面,然后将上面的File和Position放入以下配置并执行

CHANGE MASTER TO 
MASTER_HOST='xxxx',// 这里需要填写你自己的服务器地址
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='xiaowan',
master_log_file='mysql-bin.000003',
master_log_pos=156,
master_connect_retry=60;
如果数据库的验证方式是上图的:caching_sha2_password,则需要指定GET_MASTER_PUBLIC_KEY=1;
CHANGE MASTER TO 
MASTER_HOST='xxxx',
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='xiaowan',
master_log_file='mysql-bin.000003',
master_log_pos=156,
master_connect_retry=60,
GET_MASTER_PUBLIC_KEY=1;
然后启动从数据库 START SLAVE;
image.png
最后通过show slave status\G;命令查看是否成功
image.png

如果显示都是yes就是成功了

最后,自己测试验证

手动创建了ds0数据库 slaver从库里面也有了。说明配置成功了
image.png
上一篇下一篇

猜你喜欢

热点阅读