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

docker安装 mysql 5.7.31 官方镜像 并实现 主从复制

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

docker安装 mysql 5.7.31 官方镜像 并实现 主从复制

本文中使用两台服务器进行搭建,一台master一台agent 此操作仅限于测试环境,正式环境请 使用 -v 命令 将 mysql 数据文件挂载到宿主机上,两台主机中必须已经安装daocker,推荐使用bitnami:mysql 镜像,相比 官方镜像体积更小,配置主从更简单 一、拉取mysql5.7.31 docker镜像 并优化镜像(当前操作在master主机上执行) 1.1 拉取mysql5.7.31 docker 镜像
docker pull mysql:5.7.31
1.2 优化镜像
#创建master目录
mkdir -p /data/mysql/master
#切换至master目录
cd /data/mysql/master
#在当前目录创建my.cnf 文件  内容如下
vi my.cnf
[mysqld]
#[必须]启用二进制日志
log-bin=mysql-bin
#[必须]服务器唯一ID,默认是110,一般取IP最后一段,这里看情况分配
server-id=14
#创建DockerFile 
vi Dockerfile
#Dockerfile 中写入以下内容
FROM mysql:5.7.31 #基础镜像
ENV TZ Asia/Shanghai  #修改时区为 上海时区
COPY my.cnf /etc/mysql/ #将my.cnf 文件拷贝到容器的/etc/mysql文件夹中
1.3 自定义mysql镜像
# --rm 打包完成后删除中间镜像 -t 自定义镜像的名称 . 从当前目录查找Dockerfile 文件
docker build --rm -t mysqlmaster:5.7.31 .
1.4 运行镜像
docker run -itd --name=mysql --restart always --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin mysqlmaster:5.7.31 --character-set-server=utf8 --collation-server=utf8_general_ci
#查看镜像日志 观察是否启动成功
docker logs -f mysql
#进入mysql容器
docker exec -it mysql bash
#登录mysql 密码 admin
mysql -uroot -p
#查看数据库
use mysql;
show databases;
#查看成功 通过exit 退出即可
#退出mysql
exit;
#退出容器
exit
二、拉取mysql5.7.31 docker镜像 并优化镜像(当前操作在agent主机上执行) 2.1 拉取mysql5.7.31 docker 镜像(这一步可以使用master 主机上的mysql镜像,docker save -o,docker load -i 导入到本机也可以 )
docker pull mysql:5.7.31
2.2 优化镜像
#创建agent目录
mkdir -p /data/mysql/agent
#切换至agent目录
cd /data/mysql/agent
#在当前目录创建my.cnf 文件  内容如下
vi my.cnf
[mysqld]
#[必须]启用二进制日志
log-bin=mysql-bin
#[必须]服务器唯一ID,默认是110,一般取IP最后一段,这里看情况分配  
server-id=15  # == 这里注意修改 ==
#创建DockerFile 
vi Dockerfile
#Dockerfile 中写入以下内容
FROM mysql:5.7.31 #基础镜像
ENV TZ Asia/Shanghai  #修改时区为 上海时区
COPY my.cnf /etc/mysql/ #将my.cnf 文件拷贝到容器的/etc/mysql文件夹中
2.3 自定义mysql镜像
# --rm 打包完成后删除中间镜像 -t 自定义镜像的名称 . 从当前目录查找Dockerfile 文件
docker build --rm -t mysqlagent:5.7.31 .
2.4 运行镜像
docker run -itd --name=mysql --restart always --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin mysqlagent:5.7.31 --character-set-server=utf8 --collation-server=utf8_general_ci
#查看镜像日志 观察是否启动成功
docker logs -f mysql
#进入mysql容器
docker exec -it mysql bash
#登录mysql 密码 admin
mysql -uroot -p
#查看数据库
use mysql;
show databases;
#查看成功 通过exit 退出即可
#退出mysql
exit;
#退出容器
exit
三、使用数据库管理工具 navicat 或者sqlyog 连接master主机的数据库
#创建同步账户以及授权
create user 'yang'@'%' identified by 'yang';
grant replication slave on *.* to 'yang'@'%';
flush privileges;
#出现 [Err] 1055 - expression #1 of ORDER BY clause is not in GROUP BY clause and
错误解
决方案,在my.cnf配置文件中设置
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY
_ZERO
,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
#查看master状态
show master status;
#查看二进制日志相关的配置项
show global variables like 'binlog%';
#查看server相关的配置项
show global variables like 'server%';
四、使用数据库管理工具 navicat 或者sqlyog 连接agent主机的数据库

#设置master相关信息
CHANGE MASTER TO
master_host='192.168.59.14', -- master 主机ip
master_user='yang',			--master主机上配置的主从  账号密码
master_password='yang',
master_port=3306,
master_log_file='mysql-bin.000003', --连接 master主机上的mysql 执行sql语句,show master status; 对应file 列 内容
master_log_pos=2356;--连接 master主机上的mysql 执行sql语句,show master status; 对应position列 内容
#启动同步
start slave;
#查看master状态
show slave status;

五 、大功告成,接下来连接master主机上的mysql 添加数据库数据表以及数据 ,查看agent 主机上数据是否同步
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/468153.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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