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 最新镜像

扫描二维码关注公众号,回复: 14679368 查看本文章
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,即大功告成

猜你喜欢

转载自blog.csdn.net/weixin_42555971/article/details/128921533
今日推荐