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确实是方便且容易,但上一篇主要是服务的搭建删除等基础操 ...
随机推荐
- 【java】java获取JVM启动参数 System.getProperty
java获取JVM启动参数 System.getProperty取 -D后的key即可 public class Test { public static void main(String[] arg ...
- Python定时任务轻量解决方案---Schedule
写后端的同学们可能都知道,工作中可能需要周期性执行一些任务,俗称定时任务.Linux环境下,可以借助于系统自带的crontab完成定时任务.但是很多时候,开发的同学们可能并没有权限去操作crontab ...
- 顶级技术盛会KubeCon 2020,网易轻舟布道多云环境云原生应用交付
在日前的KubeCon 2020中国线上峰会上,VMware中国研发中心架构师.Harbor项目创始人和维护者张海宁,和网易数帆轻舟事业部架构师.Harbor维护者裴明明,共同分享了如何在多云和多集群 ...
- 面试中HashMap链表成环的问题你答出了吗
HashMap作为老生常谈的问题,备受面试官的青睐,甚至成为了面试必问的问题.由于大量的针对HashMap的解析横空出世,面试官对HashMap的要求越来越高,就像面试官对JVM掌握要求越来越高一样, ...
- 已废弃_CSDN慕零的黑夜-头条-第一期(必问)[导读:]1.CSDN必问赏金流向何方 2.CSDN必问偷偷做的手脚 3.CSDN必问靠谱吗 4.关于钱于回答的平衡问题:一美元拍卖骗局qq3461896724
[本文有已知的链接差错,懒得改了] 本期是关于CSDN 必问 (biwen.csdn.net)的内容,欢迎评论文末,文中插入有 小姐姐 img(附py代码,1.49G) + coding资料 哟~~~ ...
- 更好用 更简单的Java缓存框架 jscache
比Spring Cache 更好用 更简单的缓存工具 jscache 取名意义为 java simple cache,基于AOP实现,支持注解到接口 自定义单个缓存过期时间配置 ttl,轻松扩展缓存实 ...
- linux tmpfs及消耗内存脚本
一.tmpfs介绍 tmpfs是一种虚拟内存文件系统,正如这个定义它最大的特点就是它的存储空间在VM里面VM是由linux内核里面的vm子系统管理的东西,现在大多数操作系统都采用了虚拟内存管理机制VM ...
- js大数字转换,将大额数字转换为万、千万、亿等
代码 /** * 大数字转换,将大额数字转换为万.千万.亿等 * @param value 数字值 */ export function bigNumberTransform (value) { co ...
- 阿里大牛教你基于Python的 Selenium自动化测试示例解析
今天给大家讲解的是自动化测试示例的解析,如有不对的地方请多多指教. 自动化测试示例如下: from selenium import webdriver from selenium.webdriver. ...
- element UI dialog 固定高度 且关闭时清空数据
解决方法:在dialog里写一个div ,div的大小设置为相对视窗的大小就行 <el-dialog title="xxx" :visible.sync="dial ...