Docker实战(2):主从库搭建
入门
基于Docker的Mysql主从复制搭建
- 首先安装docker
- 拉取mysql镜像:5.7版本
- 启动主从数据库容器
docker run -p 3339:3306 --name Maste -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 # Master(主库)
docker run -p 3340:3306 --name Slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 # Slave(从库)
启动后用可用数据库软件测试一下是否连通。
- 配置Master
- Master配置文件修改
docker exec -it 容器名 /bin/bash #进入主库docker
apt-get update #更新安装源
apt-get install -y vim #安装vim
vim /etc/mysql/my.cnf #编辑my.cnf配置文件
[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
- 重启mysql容器。
- 进入主库创建数据库同步用户,并授予REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于主从之间同步数据。
docker exec -it 主库容器名 /bin/bash # 进入主库docker
mysql -uroot帐号 -p用户密码 # 登录入mysql
CREATE USER 'slave'@'%' IDENTIFIED BY '123456'; #创建用户名“slave”,密码“123456”的数据库用户。
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%'; #授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限
- 查看File、Position字段值,并记录下来
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 617 | | | |
+------------------+----------+--------------+------------------+-------------------+
- 配置Slave
- Slave配置文件修改
docker exec -it 容器名 /bin/bash #
apt-get update
apt-get install -y vim
vim /etc/mysql/my.cnf
[mysqld]
## 设置server_id,注意要唯一
server-id=101
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
- 重启mysql服务跟docker容器
- 进入Slave数据库,执行主从同步命令;
change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 617, master_connect_retry=30; # master_host='docker独立ip' ;
master_user='主库创建的同步帐号';master_password='同步帐号密码';master_port=mysql主库端口;master_log_file='主库File字段名';master_log_pos= Position字段;master_connect_retry=重连时间
show slave status \G; #查看主从同步状态
start slave #启动主从同步功能
SlaveIORunning 和 SlaveSQLRunning 都是Yes,说明主从复制已经开启。此时可以测试数据同步是否成功。
进阶
- 创建主库
docker run -itd -p 3308:3306 --name master -v /master/var/mysql:/var/lib/mysql -v /master/conf/:/etc/mysql/ -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
- 创建从库
docker run -itd -p 3309:3306 --name slave -v /slave/var/mysql:/var/lib/mysql -v /slave/conf/:/etc/mysql/ -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
**注意:**因数据库版本不同,所有些并不会立即启动,需写配置文件才可启动。5.7经测试会立即启动。
3. 主从配置文件夹中创建配置文件 my.cnf。
#主库配置如下:
cd /master/conf/
touch my.cnf
vim my.cnf
[mysqld]
lower_case_table_names=1
wait_timeout=30
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_allowed_packet= 1024M
group_concat_max_len = 1024M
thread_cache_size=64
max_connections=160000 #设置最大的连接数
server-id=1001 ##设置server_id,注意要唯一
transaction-isolation = READ-COMMITTED
auto-increment-increment = 1
auto-increment-offset = 1
slave-skip-errors = all #忽略一些错误
binlog-ignore-db=mysql
binlog-ignore-db=test1 #不同步给从库的库test1
log-bin = mysql-bin #开启二进制日志功能,以备Slave作为其它Slave的Master时使用
binlog-do-db=test #需要复制给从库的库
!includedir /etc/mysql/ #***主要:此路径是docker内的配置文件放置路径,也就是刚刚启动映射的配置文件路径
# 从库配置如下:
[mysqld]
lower_case_table_names=1
wait_timeout=30
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_allowed_packet= 1024M
group_concat_max_len = 1024M
thread_cache_size=64
max_connections=10000
server-id=1002
replicate-do-db=test #从库需要复制的库
replicate-ignore-db=test1 #从库需要忽略同步的库
log-slave-updates #一主多从必写的配置
log-bin = mysql-bin #开启二进制日志功能,以备Slave作为其它Slave的Master时使用
auto-increment-increment = 1
auto-increment-offset = 1
slave-skip-errors = all
slave-net-timeout=60 #这是slave60秒超时会重连
!includedir /etc/mysql/
- 重启启动主从库
docker restart master
docker restart slave
- 接下来主从库操作可参考入门步骤3,大同。
参考连接
Docker实战(2):主从库搭建的更多相关文章
- 【Mysql】Mysql主从库搭建过程(爬完坑后整理所得)
Mysql主从数据库搭建流程 新手开始学习mysql主从库,遇到一些问题,总结后写出以下流程 下面以5.7.23版本为例介绍 第一步:去官网下载5.7.23版本的免安装压缩包形式的mysql文件,贴上 ...
- Docker 实战(3)- 搭建 Gitlab 容器并上传本地项目代码
如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 搭建 Gitlab 容器 搜索 ...
- 实战录 | Redis的主从服务器搭建
<实战录>导语 云端卫士<实战录>栏目定期会向粉丝朋友们分享一些在开发运维中的经验和技巧,希望对于关注我们的朋友有所裨益.本期分享人为云端卫士安全平台工程师田全磊,将带来Red ...
- 【MYSQL】主从库查看及搭建
show slave status 查看从库信息 http://blog.csdn.net/lxpbs8851/article/details/7898716 搭建主从库 http://www. ...
- mysql5.7搭建主从库
#MYSQL单节点的mysql远远不能满于生成,以防止生产服务器宕机,磁盘空间溢满等种种原因,需要有一个备用数据库, 这时候主从库是不错的选择,在是数据库集群中也起到了很大的作用 #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,Docker实现Mysql主从,读写分离 一.Docker文件编排 二.配置主从复制 2.1 配置master 2.2 配置slave 三.验证主从复制 3.1 mas ...
- iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)
iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController) 前面我们介绍了StoryBoard这个新技术,和纯技术 ...
- Docker for Windows(五)实践搭建SqlServer服务&执行数据库操作
上一篇我们已经搭建了一个mysql数据库服务了:Docker for Windows(四)实践搭建&删除MySQL服务,发现用Docker确实是方便且容易,但上一篇主要是服务的搭建删除等基础操 ...
随机推荐
- 简单快速导出word文档
最近,我写公司项目word导出功能,应该只有2小时的工作量,却被硬生生的拉长2天,项目上线到业务正常运行也被拉长到2个星期. 为什么如此浪费时间呢? 1)公司的项目比较老,采用硬编码模式,意味着wor ...
- MAC安装Navicat Premiun12
链接地址:https://blog.csdn.net/wenyicodedog/article/details/97970154
- wsgi的environ变量
The environ dictionary is required to contain these CGI environment variables, as defined by the Com ...
- 【转】Python进度条tqdm的使用
有时候在使用Python处理比较耗时操作的时候,为了便于观察处理进度,这时候就需要通过进度条将处理情况进行可视化展示,以便我们能够及时了解情况.这对于第三方库非常丰富的Python来说,想要实现这一功 ...
- MySQL 索引结构
谈到 MYSQL 索引服务端的同学应该是熟悉的不能再熟悉,新建表的时候怎么着都知道先来个主键索引,对于经常查询的列也会加个索引加快查询速度.那么 MYSQL 索引都有哪些类型呢?索引结构是什么样的呢? ...
- Sign in with Apple 流程总结
流程图 相关说明 UserId 与用户的 Apple Id 一一对应.在同一个开发帐号下的所有 app 里,获取到的值都一样. IdentityToken identityToken 是一个 Json ...
- IDEA导入Eclipse的快捷键KeyMap
说在前面的话 现在由于IDEA编辑器越来越火,因此很多程序员都从eclipse转入IDEA,转入后确实发现很强大的编辑器,但是一直为快捷键而忧愁,因为eclipse毕竟跟随了自己好多年了,突然更换编辑 ...
- Python 编程开发 实用经验和技巧
文章目录 一.小数保留指定位小数 1.%f 方法 2.format函数 3.round()函数 4.直接截断 二.判断变量的数据类型的两种方法 1.type(): 2.isinstance() 三.p ...
- Java 实例 - 三目条件运算符
package guyu.day0903; /** * @Author: Fred * @Date: 2020/9/3 10:59 */ public class Demo01 { public st ...
- python笔记-标准库unittest
unittest核心工作原理 unittest中最核心的四个概念是:test case, test suite, test runner, test fixture. 一个TestCase的实例就是一 ...