栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

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

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

文章目录

前言一、Mysql主从复制的搭建

1.拉取镜像 二、MYSQL主服务的配置

1.查询容器运行状态2.使用Navicat连接测试3.创建主数据库的复制账号

3.1 创建用户3.2 授予用户权限3.3 查看用户权限3.4 修改MySQL配置文件 三、MYSQL从服务的配置四、配置MYSQL主从五、主从复制测试六、主从的其他操作


前言

系统环境:

window11 企业版mysql8.0+dockervm虚拟机 一、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的主从复制有很多方式,此处我们进行一个简单的测试。

在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;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/728864.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号