【愚公系列】2022年02月 Docker容器 Mysql主从复制的搭建

举报
愚公搬代码 发表于 2022/02/06 21:36:41 2022/02/06
【摘要】 前言系统环境:window11 企业版mysql8.0+dockervm虚拟机 一、Mysql主从复制的搭建 1.拉取镜像docker pull mysql 二、MYSQL主服务的配置因为本人3306已经有本地的mysql,容器内的mysql端口设置33306docker run --name mysql_master -p 33306:3306 -e MYSQL_ROOT_PASSWOR...

前言

系统环境:

  • window11 企业版
  • mysql8.0+
  • docker
  • vm虚拟机

一、Mysql主从复制的搭建

1.拉取镜像

docker pull mysql

在这里插入图片描述
在这里插入图片描述

二、MYSQL主服务的配置

因为本人3306已经有本地的mysql,容器内的mysql端口设置33306

docker run --name mysql_master -p 33306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql
0ad6b529bfbceda875b4af88788c1b6d4d29916095203755294d60cd922dda7a

在这里插入图片描述
在这里插入图片描述

参数 说明
–name 为容器指定名称,这里是master
-p 将容器的指定端口映射到主机的指定端口,这里是将容器的3306端口映射到主机的3306端口
-e 设置环境变量,这里是指定root账号的密码为root
-d 后台运行容器,并返回容器ID
mysql 指定运行的mysql版本

1.查询容器运行状态

如下图所示代表运行成功

docker ps -a

在这里插入图片描述

2.使用Navicat连接测试

在这里插入图片描述

3.创建主数据库的复制账号

3.1 创建用户

//创建用户
create user 'slave'@'%' identified with mysql_native_password by 'Mslave#q818';

3.2 授予用户权限

grant replication slave on *.* to 'slave'@'%';
//授权后刷下授权表
flush privileges;

3.3 查看用户权限

show grants for 'slave'@'%';

如下代表成功
在这里插入图片描述

3.4 修改MySQL配置文件

进入mysql主服务器

docker exec -it 8b71301f25ed /bin/bash		 //8b71301f25ed为容器ID
docker exec -it mysql-master /bin/bash		 //mysql-master为容器名称

切换到 /etc/mysql 目录下

cd /etc/mysql

安装vim

apt-get update
apt-get install vim

修改my.cnf文件,在[mysqld]加如下两行

# vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1

添加说明:

  • log-bin=mysql-bin 使用binary logging,mysql-bin是log文件名的前缀
  • server-id=1 唯一服务器ID,非0整数,不能和其他服务器的server-id重复

配置完成后,需要重启mysql服务使其修改的配置文件生效,使用如下命令使mysql进行重启

service mysql restart

最后重启服务:docker start mysql_master

三、MYSQL从服务的配置

运行MySQL从容器,设置33307为mysql服务端口

docker run --name mysql_slave -p 33307:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql

和主服务一样的配置:

server-id=2

重启服务:docker restart mysql_slave

四、配置MYSQL主从

使用Navicat连接slave后新建查询,执行以下SQL

CHANGE MASTER TO 
MASTER_HOST='192.168.3.38',
MASTER_PORT=33306,
MASTER_USER='slave',
MASTER_PASSWORD='Mslave#q818';

START SLAVE;

  • MASTER_HOST: 填Navicat连接配置中的ip应该就可以
  • MASTER_PORT: 主容器的端口
  • MASTER_USER: 同步账号的用户名
  • MASTER_PASSWORD: 同步账号的密码

自此MYSQL主从配置完成,重启所有docker容器

五、主从复制测试

进行mysql的主从复制有很多方式,此处我们进行一个简单的测试。

1、在Master中创建一个新库

mysql> create database test;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)

此时Slave中会有该test库:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.00 sec)

在Master中创建表并插入数据:

mysql> create table mytbl (id varchar(16),name varchar(32));
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| mytbl          |
+----------------+
mysql> insert into mytbl values (1,'zhangsan');
Query OK, 1 row affected (0.01 sec)

mysql> select * from mytbl;
+------+----------+
| id   | name     |
+------+----------+
| 1    | zhangsan |
+------+----------+
1 row in set (0.00 sec)

在Slave中查看是否有数据进行同步:

mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| mytbl          |
+----------------+
1 row in set (0.00 sec)

mysql> select * from mytbl;
+------+----------+
| id   | name     |
+------+----------+
| 1    | zhangsan |
+------+----------+
1 row in set (0.00 sec)

在这里插入图片描述

六、主从的其他操作

如何停止从服务复制功能

stop slave

如何重新配置主从

stop slave; 
reset master;
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。