MySQL8.0 集群搭建

主从复制:即主服务器上的所有操作(创建库,修改表等)会被同步到从服务器上,但是在从服务器上的操作不会进入到主服务器中

环境准备

两台服务器,一主一从

安装 docker

# 国内源
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

启动docker

systemctl start docker

配置加速

{
    "registry-mirrors": [
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://registry.docker-cn.com"
    ]
}

重置配置

systemctl daemon-reload

重启 docker

systemctl restart docker

 

安装 MySQL 8.0

拉取 MySQL 最新镜像

docker pull mysql

或者拉取具体版本的 MySQL 8.0

docker pull mysql:8.0.32-debian

主服务器安装 MySQL
注意:实际输入命令时去掉回车

docker run \
-p 3306:3306 \
--name mysql_master \
-v /docker/mysql_master/conf:/etc/mysql/conf.d \
-v /docker/mysql_master/logs:/logs \
-v /docker/mysql_master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql

从服务器安装 MySQL,安装方法和主服务器并无差别,这里只是把挂载路径和名称由 mysql_master 换成 mysql_from

docker run \
-p 3306:3306 \
--name mysql_from \
-v /docker/mysql_from/conf:/etc/mysql/conf.d \
-v /docker/mysql_from/logs:/logs \
-v /docker/mysql_from/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql

 

配置主服务

配置主服务器的 my.cnf

cd docker/mysql_master/conf
vim my.cnf
  • server-id:同一局域网内注意要唯一
  • log-bin:开启二进制日志功能,可以随便取(关键)
[mysqld]
server-id=1
log-bin=mysql-bin

重启服务

docker restart mysql_master

进入 MySQL 容器

docker ps
docker exec -it 9f840f8888d6 /bin/bash
mysql -uroot -p123456

在这里插入图片描述

确保 skip_networking 的状态为 OFF,默认就是 OFF

show variables like '%skip_networking%';

创建一个用户,从服务通过这个用户和主服务做关联

  • 用户名为 repl,密码为 123456
  • 为该用户授予 REPLICATION(可复制)的权限
  • 更改密码加密方式,如不更改会报错

报错信息为: Authentication plugin ‘caching_sha2_password’ reported error: Authentication requires secure connection.

CREATE USER 'repl'@'%' identified by '123456';

GRANT REPLICATION SLAVE ON *.*  TO  'repl'@'%';

ALTER USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'MyNewPass4!';

配置完成,可以退出

exit

 

配置从服务器

配置从服务器的 my.cnf

cd docker/mysql_from/conf
vim my.cnf
[mysqld]
server-id=2

重启服务

docker restart mysql_from

进入 MySQL 容器

docker ps
docker exec -it xxx /bin/bash
mysql -uroot -p123456

配置连接到主服务器的相关信息,MASTER_HOST 替换成主服务的ip

 CHANGE MASTER TO MASTER_HOST='192.168.xx.xx', MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='123456';

在这里插入图片描述

启动从服务线程

start slave;

在这里插入图片描述

查询从服务是否连接成功

show slave status \G;

在这里插入图片描述
显示 yes,即大功告成

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值