docker搭建mysql主从数据库
一、docker安装mysql
参考 在服务器上使用docker安装mysql
在服务器上运行两个MySQL容器,一个作为主,另一个作为从,主写从读。
二、配置my.cnf
1.配置主库
首先进入容器内部,操作如下:
docker exec -it aiden-mysql /bin/bash
然后修改MySQL配置文件,
cd /etc/mysql
vi my.cnf
执行vi命令会报错,需要在docker容器内部自行安装vim,
apt-get update
apt-get install vim
在my.cnf中添加如下配置:
[mysqld]
# 服务的唯一编号
server-id=1
# 开启mysql binlog功能
log-bin=mysql-bin
配置完成之后,需要重启docker容器
docker restart aiden-mysql
2.配置从库
与配置主库一样,配置从库需要在my.cnf文件中添加如下配置:
[mysqld]
# 服务的唯一编号
server-id=2
# 开启mysql binlog功能
log-bin=mysql-slave-bin
# relay_log配置中继日志
relay_log=edu-mysql-relay-bin
配置完成后也需要重启docker容器。
三、链接主库和从库
1.主库操作:
首先需要在主库创建数据同步用户,授予用户 REPLICATION SLAVE和REPLICATION CLIENT权限,用于在主从库之间同步数据。
docker exec -it aiden-mysql /bin/bash
mysql -uroot -p
create user 'slave'@'%' identified by '178-123';
grant replication slave,replication client on *.* to 'slave'@'%';
flush privileges;
如需开启远程访问权限,参考在服务器上使用docker安装mysql。
然后在主数据库,执行show master status;
语句,结果如下:
File和Position字段的值后面会用到,在从库操作完成之前,需要保证主库不能做任何操作,否则会引起状态变化。
2.从库操作:
change master to master_host='123.123.0.1',master_user='slave',master_password='178-123',master_post=3306,master_log_file='mysql-bin.000001',master_log_pos=3010,master_connect_retry=30;
命令说明:
master_host:主库地址
master_port:主库端口号
master_user:主库用于数据同步的用户
master_password:用于数据同步的用户的密码
master_log_file:指定从库从主库的哪个日志文件开始复制数据,即上图中的File字段的值
master_log_pos:指定从日志文件的哪个位置开始读,即上图中的Position字段的值
master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认值60秒
在从库终端执行 show slave status\G;
查看主从同步状态。
执行start slave;
之前,SlaveIORunning和SlaveSQLRunning都是No,因为我们还没有开启主从复制过程。执行start slave;
开启主从复制过程,再次执行show slave status\G;
,SlaveIORunning和SlaveSQLRunning都是Yes,说明主从复制已开启。
如果开始主从复制过程后,SlaveIORunning一直是Connecting,则说明主从复制一直处于连接状态,可以根据show slave status\G;
返回的Last_IO_Error提示予以解决。
3.验证
在主库新建一个数据库,检查从库是否存在此数据库。
四、Mysql是如何复制数据的
参开《高性能MySQL》,复制有三个步骤:
- 在主库上把数据更改记录到二进制日志(Binary Log)中(这些记录被称为二进制日志事件)。
- 备库将主库上的日志复制到自己的中继日志(Relay Log)中。
- 备库读取中继日志中的事件,将其重放到备库数据之上。
docker搭建mysql主从数据库相关推荐
- docker搭建mysql主从
前言 为什么要使用Docker搭建? 不管是使用源码安装还是离线安装,在服务器上安装一个mysql总会花费不少的时间,而且对于新人来说,中间稍不注意哪一步出错了就导致安装失败,我之前也是安装过2次才成 ...
- mac docker mysql_Mac操作系统上使用Docker创建MySQL主从数据库
拉取MySQL镜像 ## 下载最新版本的MySQL镜像 docker pull mysql 创建两个主从MySQL数据库容器 第一步,需要创建一个目录,用来存放与容器中配置文件对应的物理地址 目录结构 ...
- mysql主从docker_(学习到实践)四、docker搭建mysql主从实践
前言 目前已完成:php7及扩展.redis5的Dockerfile测试版编写,稍许完善后同步上传到github,(记下这里memcached还没有剥离安装). 今天数据库,编程的一个重要原则是不要重 ...
- centos7搭建 mysql 主从数据库
我搭建主从数据库参考的是(本文也是参考)https://blog.csdn.net/cn_yaojin/article/details/78711184 首先在两个服务器安装好版本一致的mysql(个 ...
- Docker - Docker中搭建MySQL主从
1.pull完centos7纯净版的镜像后,创建容器,然后将宿主机上下载的MySQL文件 (MySQL下载地址:http://mysql.mirror.kangaroot.net/Downloads/ ...
- docker下mysql主从搭建
使用docker 建立mysql主从 环境:Mac Mysql:5.7.36 目标: master主机端口 3307 slave从机端口 3308 在Mac建立master,slave对应目录 log ...
- docker安装mysql主从视频教程_docker安装mysql主从
docker安装mysql主从 启动主库: 1.docker run --name master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5 ...
- docker安装mysql主从_docker安装mysql主从
docker安装mysql主从 启动主库: 1.docker run --name master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5 ...
- 高可用MySql主从数据库
一.mysql主从复制原理 1.主从复制原理 从上层来看,复制分成三步: Master主库在事务提交时,会把数据变更作为时间Events记录在二进制日志文件 Binlog 中. 主库推送二进制日志文件 ...
最新文章
- 让Hive支持行级insert、update、delete
- php正则替换imgsrc_php如何替换img中src内容
- c#语言中代替指针,如何在C#中使指针通用?
- 保持图片和图片框一致的方法 收藏
- 反射、HashMap、ArrayList与LinkedList区别
- linux家用系统版本,查看linux系统版本
- mybatis源码分析执行流程
- es分页查询重复数据_ES优化 - 巨量数据如何提高查询性能
- Advanced User Administration
- 【Linux安全】chattr命令锁定账户敏感文件
- visio中使用连接线连接形状
- mysql 上周时间_mysql 获取上周1到周日的时间
- Android studio Installed Build Tools revision 31.0.0 is corrupted. Remove and install again
- mysql 数据库切分_mysql数据库切分
- html 图片透明字不透明,CSS实现背景图片透明,文字不透明效果的两种方法
- 怎么给电脑重装Nvidia显卡驱动?
- 物联网传感技术-----无线传感网概述
- week8—多线程下载多个网页文件
- 深度揭秘高频交易盈利方式
- C语言入门:立体几何计算题