docker安装mysql

# 主服务器

docker run --name master-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.30

# 从服务器

docker run --name sub-mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.30

复制代码

配置主数据库

vi /etc/mysql/my.cnf

复制代码

如果不能使用vi,请参考文章末尾的**【问题答疑】**

编辑主数据库配置文件,在配置文件尾部添加以下代码:

[mysqld]

#设置主服务器的ID

server-id=100

innodb_flush_log_at_trx_commit=2

# 开启binlog日志同步功能

sync_binlog=1

# binlog日志文件名

log-bin=mysql-bin-5

# 这个表示只同步某个库 (如果没有此项,表示同步所有的库)

# binlog-do-db=xxxx

复制代码

重启docker restart master-mysql,并进入主数据库容器,连接mysql

> mysql -u root -p

Enter password:

复制代码

给从数据库设置登录账户及密码

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

复制代码

查看主数据库的状态show master status \G

mysql> show master status \G

*************************** 1. row ***************************

File: mysql-bin-5.000001

Position: 617

Binlog_Do_DB:

Binlog_Ignore_DB:

Executed_Gtid_Set:

1 row in set (0.00 sec)

复制代码

记录这里展示的File和Position字段,从服务器需要使用,我这里的两个字段的值分别是mysql-bin-5.000001、617,顺序不可颠倒,因为数据库的写操作会引起Position的值变化。

配置从数据库

vi /etc/mysql/my.cnf

复制代码

如果不能使用vi,请参考文章末尾的[问题答疑]

编辑主数据库配置文件,在配置文件尾部添加以下代码:

[mysqld]

server-id=200

innodb_flush_log_at_trx_commit=2

sync_binlog=1

log-bin=mysql-bin-6

复制代码

重启docker restart sub-mysql,并进入主数据库容器,连接mysql

> mysql -u root -p

Enter password:

复制代码

设置主从复制的连接信息

mysql> change master to master_host='10.192.32.156', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin-5.000001', master_log_pos= 617, master_connect_retry=30;

复制代码

参数说明:

master_host:宿主机(即真实机器)的ip

master_user:主数据库给从数据库分配的登录账号

master_password:主数据库给从数据库分配的登录密码

master_port:主数据库的端口

master_log_file:主数据库的日志文件,主数据库的写操作导致日志文件容量到达阈值时会变化

master_log_pos:主数据库日志文件中的位置,主数据库的写操作或容器的重启会导致该值变化

master_connect_retry:连接失败时的重连间隔,默认为60秒

查看主从状态show slave status \G,可以看到Slave_IO_Running和Slave_SQL_Running都是NO,因为我们只是对其进行了配置,但是没有开启

mysql> show slave status \G;

*************************** 1. row ***************************

Slave_IO_State: Connecting to master

Master_Host: 10.192.32.156

Master_User: slave

Master_Port: 3306

Connect_Retry: 30

Master_Log_File: mysql-bin-5.000001

Read_Master_Log_Pos: 617

Relay_Log_File: d0678ce118a6-relay-bin.000001

Relay_Log_Pos: 4

Relay_Master_Log_File: mysql-bin-5.000001

Slave_IO_Running: No

Slave_SQL_Running: No

复制代码

开启主从同步功能

在从数据库中进入mysql并开启主从同步功能start slave \G,并重新查看主从同步状态

mysql> show slave status \G

*************************** 1. row ***************************

Slave_IO_State: Connecting to master

Master_Host: 10.192.32.156

Master_User: slave

Master_Port: 3306

Connect_Retry: 30

Master_Log_File: mysql-bin-5.000001

Read_Master_Log_Pos: 617

Relay_Log_File: d0678ce118a6-relay-bin.000001

Relay_Log_Pos: 4

Relay_Master_Log_File: mysql-bin-5.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

复制代码

至此所有的主从复制功能已经配置完成,来看看效果吧

问题答疑

1、vi /etc/mysql/my.cnf操作失败

需要先执行,从数据库也是同样

apt-get update

apt-get install vim

复制代码

2、Slave_SQL_Running字段为No

检查主数据库的Position变化了,因为数据库的写操作或容器的重启会造成Position变化

3、Slave_IO_Running一直为连接状态

检查change master to ...;是否配置正确,其中master_host是宿主机(即真实机器的地址,不能用127.0.0.1或者localhost)

更多相关文档,请见:

GitHub仓库【前端橘子君】

mysql数据库复制功能配置,最详细的mysql数据库主从复制功能配置教程(docker版本)...相关推荐

  1. mysql数据库视图原理_详细分析mysql视图的原理及使用方法

    前言: 在MySQL中,视图可能是我们最常用的数据库对象之一了.那么你知道视图和表的区别吗?你知道创建及使用视图要注意哪些点吗?可能很多人对视图只是一知半解,想详细了解视图的同学看过来哟,本篇文章会详 ...

  2. mysql 崩溃恢复_超详细的MySQL数据库InnoDB崩溃恢复机制总结

    概述 数据库系统与文件系统大的区别在于数据库能保证操作的原子性,一个操作要么不做要么都做,即使在数据库宕机的情况下,也不会出现操作一半的情况,这个就需要数据库的日志和一套完善的崩溃恢复机制来保证.下面 ...

  3. mysql数据库字符集_超详细的MySQL数据库字符集总结,值得收藏

    MySQL支持多种字符集(character set)提供用户存储数据,同时允许用不同排序规则(collation)做比较.下面基于MySQL5.7介绍一下字符集相关变量的使用. 一.字符集.字符序的 ...

  4. mysql序列号生成_超详细的mysql数据库GTID介绍—概念、优缺点、原理、生命周期等

    概述 这几天就简单介绍一下GTID好了~这篇是概念篇.. 从MySQL 5.6.5 开始新增了一种基于 GTID 的复制方式.通过 GTID 保证了每个在主库上提交的事务在集群中有一个唯一的ID.这种 ...

  5. mysql 中show 命令用法详细介绍 mysql过程(procedure)的使用

    a. show tables或show tables from database_name; -- 显示当前数据库中所有表的名称 b. show databases; -- 显示mysql 中所有数据 ...

  6. mysql innodb 锁类型_详细介绍MySQL InnoDB存储引擎各种不同类型的锁

    本文中,我们详细介绍MySQLInnoDB存储引擎各种不同类型的锁,以及不同SQL语句分别会加什么样的锁. 阅读提示 1.本文所参考的MySQL文档版本是8.0,做实验的MySQL版本是8.0.13 ...

  7. mysql中 视图的优缺点,详细讲解MYSQL视图的作用及优缺点

    一.概念 1.视图是MySQL在5.0.1版本中加入的功能.它可以理解为一个虚表. 2.之所以被称为虚表,是因为它只是存储了一个结构,并不存储真实的数据.行和列的数据来自定义视图的查询中使用的表,并且 ...

  8. mysql zerofill 性能_比较详细的MySQL字段类型说明

    由MySQL支持的列类型列在下面.下列代码字母用于描述中: M 指出最大的显示尺寸.最大的合法的显示尺寸是 255 . D 适用于浮点类型并且指出跟随在十进制小数点后的数码的数量.最大可能的值是30, ...

  9. 怎么看计算机配置好不好,怎么看电脑配置好坏,详细教您怎么看电脑配置好坏...

    其实我们在购买电脑的时候都会先查看电脑的配置好不好,性比较价如何等这些问题.但是我们有的时候就算看了,也不知道电脑配置的好坏.所以今日份的我就是来告诉小伙伴们怎么看电脑配置的好坏. 在小编不知道该写什 ...

最新文章

  1. html简介及常用标签
  2. 10-线程,进程,协程,IO多路复用
  3. 操作系统角度谈测试管理和自动化测试
  4. JAVA入门: Annotation
  5. mysql存储引擎 索引优化_MySQL存储引擎,索引及基本优化策略
  6. verilog学习记(加法器)
  7. Lucene分词器,使用中文分词器,扩展词库,停用词
  8. SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第二篇)
  9. win10和linux双系统分区大小,win10与Linux双系统分区问题
  10. 活灵活现用 Git --技巧篇
  11. 寻找互联网创业的时间点规律
  12. R语言利器之ddply
  13. 最新版火车头织梦内容发布规则_火车头采集 - 织梦图集发布模块的制作
  14. WorldPress中文乱码问题
  15. 高斯分布的性质(含代码)
  16. 小程序跳转无反应解决方法
  17. MATLAB中ANFIS的使用教程
  18. H5性能优化报告以及方案模板
  19. P1640 [SCOI2010]连续攻击游戏 (二分图)
  20. 前端js实现拼图小游戏

热门文章

  1. 力扣53. 最大子数组和(JavaScript)
  2. java拆分list_Java平均拆分list
  3. QT每日一练day14:QFontDialog字体对话框
  4. C++STL笔记(二):容器的特性和共通操作
  5. C++之继承探究(九):多态的代价
  6. unity2018设置雾在哪_《Babel》项目技术整理:雾
  7. 青岛大学计算机科学技术学院官网,田呈亮 - 青岛大学 - 计算机科学技术学院
  8. tensorflow打印模型结构_五行代码用图提升模型表现,TensorFlow开源NSL神经结构学习框架...
  9. 机器学习专题(二):2.1机器学习的数据
  10. centos 7 mysql 源码安装_centos7 mysql5.7.17源码安装