(七) Docker 部署 MySql8.0 一主一从 高可用集群
参考并感谢
下载mysql镜像(不带tag标签则表示下载latest版本)
docker pull mysql/mysql-server
配置my.cnf 文件
my.cnf文件参考nginx的临时方案,从容器中拷贝出来
# 主库
[mysqld]
log-bin=mysql-bin # [必须]启用二进制日志
server-id=1 # [必须]服务器唯一ID,默认是1,一般取IP最后一段,这里看情况分配
# 从库
[mysqld]
log-bin=mysql-bin # [必须]启用二进制日志
server-id=2 # [必须]服务器唯一ID,默认是1,一般取IP最后一段,这里看情况分配
启动 mysql 主库
docker run -d \
-p 3306:3306 \
--privileged=true \
-e MYSQL_ROOT_PASSWORD="Mypwd@123456" \
--name mysql3306 \
--mount type=bind,source=/var/docker/configs/mysql/3306/my.cnf,target=/etc/my.cnf \
--mount type=bind,source=/var/docker/datas/mysql/3306,target=/var/lib/mysql \
--restart always \
mysql/mysql-server:latest
启动 mysql 从库
docker run -d \
-p 3307:3306 \
--privileged=true \
-e MYSQL_ROOT_PASSWORD="Mypwd@123456" \
--name mysql3307 \
--mount type=bind,source=/var/docker/configs/mysql/3307/my.cnf,target=/etc/my.cnf \
--mount type=bind,source=/var/docker/datas/mysql/3307,target=/var/lib/mysql \
--restart always \
mysql/mysql-server:latest
开放mysql端口并立即生效
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=3307/tcp --permanent
firewall-cmd --reload
登录主库
docker exec -it mysql3306 bash
mysql -u root -p
Mypwd@123456
# 主库创建同步用户
CREATE USER 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'Mypwd@123456';
# 主库给同步用户授权
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
# 主库创建用户并配置读写权限
CREATE USER 'madmars'@'%' IDENTIFIED WITH mysql_native_password BY 'Mypwd@123456';
GRANT ALL PRIVILEGES ON *.* TO 'madmars'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
# 查询主库状态,并记录 File 的值和 Position 的值
SHOW MASTER STATUS;
登录从库
docker exec -it mysql3307 bash
mysql -u root -p
Mypwd@123456
# 配置slave (master_log_file 和 master_log_pos 是主库的file和position值)
change master to
master_host='172.17.0.1',
master_user='repl',
master_log_file='mysql-bin.000003',
master_log_pos=1345,
master_port=3306,
master_password='Mypwd@123456';
# 启动salve
START SLAVE;
# 查看slave状态
SHOW SLAVE STATUS\G;
# 从库用户配置只读权限
CREATE USER 'madmarsreadonly'@'%' IDENTIFIED WITH mysql_native_password BY 'Mypwd@123456';
GRANT SELECT ON *.* TO 'madmarsreadonly'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
PS:
- 启动容器之前,需要创建好对应的宿主机的文件目录,宿主机缺少文件会导致容器启动失败
- docker环境部署,如果需要数据库持久化,必须要增加 privileged=true
《(七) Docker 部署 MySql8.0 一主一从 高可用集群》CSDN地址:https://blog.csdn.net/madmarszff/article/details/100904288
《(七) Docker 部署 MySql8.0 一主一从 高可用集群》博客园地址:https://www.cnblogs.com/godzff/p/11530713.html
《(七) Docker 部署 MySql8.0 一主一从 高可用集群》简书地址:
(七) Docker 部署 MySql8.0 一主一从 高可用集群的更多相关文章
- 使用 Sealos 在 3 分钟内快速部署一个生产级别的 Kubernetes 高可用集群
本文首发于:微信公众号「运维之美」,公众号 ID:Hi-Linux. 「运维之美」是一个有情怀.有态度,专注于 Linux 运维相关技术文章分享的公众号.公众号致力于为广大运维工作者分享各类技术文章和 ...
- 部署一套完整的Kubernetes高可用集群(二进制,v1.18版)
一.前置知识点 1.1 生产环境可部署Kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式: kubeadm Kubeadm是一个K8s部署工具,提供kubeadm ...
- 部署一套完整的Kubernetes高可用集群(二进制,最新版v1.18)下
七.高可用架构(扩容多Master架构) Kubernetes作为容器集群系统,通过健康检查+重启策略实现了Pod故障自我修复能力,通过调度算法实现将Pod分布式部署,并保持预期副本数,根据Node失 ...
- Centos7.4 Storm2.0.0 + Zookeeper3.5.5 高可用集群搭建
想了下还是把kafka集群和storm集群分开比较好 集群规划: Nimbus Supervisor storm01 √ √ storm02 √(备份) √ storm03 √ 准备工作 老样子复制三 ...
- Hadoop 2.6.0+ZooKeeper+Hive HA高可用集群安装
http://blog.csdn.net/totxian/article/details/45248399
- Docker部署Mysql8.0.20并配置主从复制
1. Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从) Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从) 2. 前提准备 # 创建主从数据库文件夹 ...
- (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)
参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https:/ ...
- MySQL8.0 MIC高可用集群搭建
mysql8.0带来的新特性,结合MySQLshell,不需要第三方中间件,自动构建高可用集群. mysql8.0作为一款新产品,其内置的mysq-innodb-cluster(MIC)高可用集群的技 ...
- 使用二进制的方式部署 K8S-1.16 高可用集群
一.项目介绍 项目致力于让有意向使用原生kubernetes集群的企业或个人,可以方便的.系统的使用二进制的方式手工搭建kubernetes高可用集群.并且让相关的人员可以更好的理解kubernete ...
随机推荐
- Http项目转Https项目
Https证书准备 开发环境下,可直接用JDK自带的keytool工具生成一个证书,正式环境可购买一个,配置过程是一样的: 打开cmd命令行,输入以下命令: 命令解释: -alias 证书别名 -ke ...
- [转]Windows内存堆内容整理总结
在系统安全研究中,堆,是一个极其重要的内存区域以及研究的热点.堆,区别于栈区.全局数据区以及代码区,它的主要作用是允许程序在运行时动态地申请某个大小的内存空间.本文将从宏观到微观,简单梳理总结一下Wi ...
- GridLayout: GridLayout中Spec属性
如果想要让GridLayout中的子元素能够平均分配,就需要用到 android:layout_columnWeight="1" android:layout_rowWeight= ...
- Laravel 入门常见问题汇总
一.安装完成后想打开 Laravel 内置的登录页面,报错 解决方法: Laravel 利用 PHP5.4 的新特性 trait 内置了非常完善好用的简单用户登录注册功能,适合一些不需要复杂用户权限管 ...
- 【Js】单页面多个倒计时问题
代码: <!DOCTYPE html> <html> <head> <title>多个timeout</title> <script ...
- LinkedBlockingQueue与ArrayBlockingQueue
阻塞队列与普通的队列(LinkedList/ArrayList)相比,支持在向队列中添加元素时,队列的长度已满阻塞当前添加线程,直到队列未满或者等待超时:从队列中获取元素时,队列中元素为空 ,会将获取 ...
- linux信号--阻塞与未决
执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending). 进程可以选择阻塞(Block)某个信号.被阻塞的信号产生时将保持在未决状态,直到进程解 ...
- [转]npm 遇到 write access的问题怎么办
ubuntu下使用 npm install -g 可能会遇到这个问题. 链接地址:https://www.jianshu.com/p/31744aa44824
- upgrade rubygems
gem install rubygems-update update_rubygems gem update --system gem update
- 【VS开发】MFC学习之 解决StretchBlt()图片缩放绘图失真
vc中位图伸缩函数StretchBlt在对图片进行缩放时会造成严重的图片失真.在了解解决方法前先巩固下StretchBlt的用法: StretchBlt 函数功能:函数从源矩形中复制一个位图到目标矩形 ...