docker创建MySQL镜像,搭建主从复制环境
前言
学习黑马的MySQL时,在主从复制、分库分表、读写分离等阶段需要多台服务器,于是尝试用docker创建镜像搭建主从复制环境。
本文基于centos7搭建mysql镜像。
参考大佬文章: link
一、编写Dockerfile制作mysql镜像
编写Dockerfile文件
编写mysql_file文件:
由于需要进行编辑操作,所以需要额外下载vim
FROM centos:7
RUN yum localinstall -y https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
RUN yum install -y yum-utils
RUN yum install -y vim
RUN sed -i 's/gpgcheck=1/gpgcheck=0/g' /etc/yum.repos.d/mysql-community.repo && sed -i 's/gpgcheck=1/gpgcheck=0/g' /etc/yum.repos.d/mysql-community-source.repo
RUN yum install -y mysql-server mysql mysql-devel
COPY run.sh /run.sh
RUN chmod 777 /run.sh && /run.sh
EXPOSE 3386
CMD ["mysqld","--user=root"]
编写run.sh文件
#! /bin/bash
rm -rf /var/lib/mysql
mysqld --initialize-insecure
chown -R mysql:mysql /var/lib/mysql
mysqld --user root &
sleep 5
mysqladmin -u root password 123457
build MySQL镜像
docker build -f ./mysql_file -t mybuildsql .
以特权模式运行镜像
docker run -d --name mysql1 --privileged=true mybuildsql /usr/sbin/init
进入容器
docker exec -it mysql1 /bin/bash
在镜像中启动MySQL
mysql -uroot -p123456
至此centos7 MySQL镜像搭建完成,可以使用ifconfig查看ip地址。
二、MySQL主从复制搭建
此步骤具体操作可以查看黑马MySQL视频
1、主库配置
主库使用宿主机,从库使用上述创建的MySQL镜像。
关闭防火墙
首先关闭服务器防火墙或者开放3306端口,本文采用关闭服务器防火墙。
systemctl stop firewalld
修改配置文件
在etc/my.cnf中增加以下语句
server-id=1
read-only=0
重启MySQL
systemctl restart mysqld
登录MySQL创建远程连接账号
mysql -uroot -p
flush privileges;
create user 'itcast'@'%';
GRANT REPLICATION SLAVE ON *.* TO 'itcast'@'%';
查看二进制日志坐标
此坐标在配置从库时需要
show master status;
2、从库配置
进入上述创建的MySQL镜像,并启动MySQL
修改配置文件
在etc/my.cnf中增加以下语句
server-id=2
read-only=1
重启MySQL服务
systemctl restart mysqld
进入MySQL设置配置
change replication source to source_host='**.**.**.**',source_user='itcast',source_log_file='mysql-bin.000008',source_log_pos=723;
source_host为主库所在服务器的ip,source_log_file与source_log_pos为之前在主库中查询的二进制日志得到相关信息。
开启同步
start replica;
查看主从同步状态
show replica status;
配置成功
三、测试
1、主库数据库状态
show databases;
2、从库数据库状态
show databases;
开始时主库、从库均只有MySQL的初始数据库。
3、测试
主库创建数据库
create database db01;
use db01;
create table tb_user(
-> id int(11) primary key not null auto_increment,
-> name varchar(50) not null,
-> sex varchar(1)
-> )engine=innodb default charset=utf8mb4;
insert into tb_user values(1,'Tom','1'),(2,'Trigger','0'),(3,'Dawn','1');
主库创建数据库并插入数据,从库的数据库同步。
从库查询数据
从库中数据已同步,同理在主库中修改数据,在从库中也会进行同步,至此数据库的主从复制环境成功搭建。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhghfkkg
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13