docker集群部署主从mysql
搭建一个mysql集群,1主2从,使用docker容器
一、创建docker的mysql镜像
下次补上,因为现在很多网络不能直接pull,操作下次补上。
二、创建mysql容器
创建容器1
docker run -it -d --name mysql_1 -p 7001:3306 --net mynet --ip 172.18.0.2 -m 400m -v /root/mysql_1/data:/var/lib/mysql -v /root/mysql_1/config:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=abc123456 -e TZ=Asia/Shanghai --privileged=true mysql:5.7 --lower_case_table_names=1
执行成功后,
查看:docker ps -a
说明部署成功了,先暂停这个容器:docker stop mysql_1
接着在/root/mysql_1/config/下创建my.cnf
[mysqld]
character_set_server=utf8
server_id=1
log_bin=mysql_bin
relay_log=relay_bin
log-slave-updates=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
重新启动mysql_1容器:docker start mysql_1
进入容器,docker exec -it mysql_1 bash
添加数据库账号与设置权限
mysql -uroot -pabc123456
添加一个账号为sync,密码为:abc123456的有同步数据权限的账号,这个步骤参考以下方法。如果能用navicat连接上这个数据库,也可以用工具直接创建这个账号与赋权限,个人测试的直接授所有权限。
mysql 创建用户
方法一:
使用CREATE USER语句来创建用户。以下是一个示例:
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
该语句将在MySQL数据库中创建一个名为'username'的用户,并为该用户设置密码为'password'。用户只能从本地主机连接到数据库。
方法二:
使用GRANT语句创建用户。以下是一个示例:
GRANT ALL PRIVILEGES ON . TO 'username'@'localhost' IDENTIFIED BY 'password';
该语句将为名为'username'的用户授予对所有数据库和表的全部权限,并设置密码为'password'。用户只能从本地主机连接到数据库。
注意:在实际生产环境中,应根据需要为用户分配适当的权限,而不是赋予全部权限。
方法三:
使用INSERT INTO语句将用户信息插入到mysql.user表中。以下是一个示例:
INSERT INTO mysql.user (User, Host, Password) VALUES ('username', 'localhost', PASSWORD('password'));
该语句将在mysql.user表中插入一条记录,包含用户名为'username'、主机为'localhost'和使用PASSWORD函数加密的密码。用户只能从本地主机连接到数据库。
需要注意的是,为了使新用户生效,必须使用FLUSH PRIVILEGES语句刷新MySQL的权限缓存:
FLUSH PRIVILEGES;
创建容器2
docker run -it -d --name mysql_2 -p 7002:3306 --net mynet --ip 172.18.0.3 -m 400m -v /root/mysql_2/data:/var/lib/mysql -v /root/mysql_2/config:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=abc123456 -e TZ=Asia/Shanghai --privileged=true mysql:5.7 --lower_case_table_names=1
执行成功后,
查看:docker ps -a
说明部署成功了,先暂停这个容器:docker stop mysql_2
接着在/root/mysql_2/config/下创建my.cnf
[mysqld]
character_set_server=utf8
server_id=2
log_bin=mysql_bin
relay_log=relay_bin
read-only=1
#log-slave-updates=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
重新启动mysql_2容器:docker start mysql_2
使用navicat连接,并设置
stop slave;
change master to master_host='172.18.0.2',master_port=3306,master_user='sync',master_password='abc123456'
start slave;
show slave status;
一条条执行,前面都是执行结果为OK
最后一条的显示为:这就说明从库设置成功!
创建容器3
docker run -it -d --name mysql_2 -p 7003:3306 --net mynet --ip 172.18.0.4 -m 400m -v /root/mysql_3/data:/var/lib/mysql -v /root/mysql_3/config:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=abc123456 -e TZ=Asia/Shanghai --privileged=true mysql:5.7 --lower_case_table_names=1
执行成功后,
查看:docker ps -a
说明部署成功了,先暂停这个容器:docker stop mysql_3
接着在/root/mysql_3/config/下创建my.cnf
[mysqld]
character_set_server=utf8
server_id=3
log_bin=mysql_bin
relay_log=relay_bin
read-only=1
#log-slave-updates=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
重新启动mysql_3容器:docker start mysql_3
使用navicat连接,并设置
stop slave;
change master to master_host='172.18.0.2',master_port=3306,master_user='sync',master_password='abc123456'
start slave;
show slave status;
一条条执行,前面都是执行结果为OK
最后一条的显示为:这就说明从库设置成功!
在主库上创建一个数据库与数据表
在从库上自动添加了这个库与表
上一篇: 数据库三级拦截协议简介
下一篇: 浅析 URL
推荐阅读
-
Docker-Consul 概述和集群环境设置 - II,consul 部署
-
kubeadm 部署 k8s1.28.0 主从集群(cri-dockerd)
-
使用内置的 mysql 在 docker 中部署 zendo - 启动 zendo
-
Docker Compose 部署大型模型 GPU 集群:高效分配和管理算力资源
-
第10章 MySQL主从复制构建Docker版
-
【2022新手指南】Java编程进阶之路 - 六、技术架构篇 ### MySQL索引底层解析与优化实战 - 你会讲解MySQL索引的数据结构吗?性能调优技巧知多少? - Redis深度揭秘:你知道多少?从基础到哨兵、主从复制全梳理 - Redis持久化及哨兵模式详解,还有集群搭建和Leader选举黑箱打开 - Zookeeper是个啥?特性和应用场景大公开 - ZooKeeper集群搭建攻略及 Leader选举、读写一致性、共享锁实现细节 - 探究ZooKeeper中的Leader选举机制及其在分布式环境中的作用 - Zab协议深入剖析:原理、功能与在Zookeeper中的核心地位 - RabbitMQ全方位解读:工作模式、消费限流、可靠投递与配置策略 - 设计者视角:RabbitMQ过期时间、死信队列与延时队列实践指南 - RocketMQ特性和应用场景揭示:理解其精髓与差异化优势 - Kafka详细介绍:特性及广泛应用于实时数据处理的场景解析 - ElasticSearch实力揭秘:特性概述与作为搜索引擎的广泛应用 - MongoDB认知升级:非关系型数据库的优势阐述,安装与使用实战教学 - BIO/NIO/AIO网络模型对比:掌握它们的区别与在网络编程中的实际应用 - Netty带你飞:理解其超快速度背后的秘密,包括线程模型分析 - 网络通信黑科技:Netty编解码原理与常用编解码器的应用,Protostuff实战演示 - 解密Netty粘包与拆包现象,怎样有效应对这一常见问题 - 自定义Netty心跳检测机制,轻松调整检测间隔时间的艺术 - Dubbo轻骑兵介绍:核心特性概览,服务降级实战与其实现益处 - Dubbo三大神器解读:本地存根与本地伪装的实战运用与优势呈现 ----------------------- 七、结语与回顾
-
微服务的 Docker 容器]第 6 章 - 复杂安装(Mysql 主从 Redis 集群)
-
MySQL 主从复制与多主多从部署流程 - 2023.04
-
docker mysql 主从复制
-
Docker 安装和部署 MySQL 教程 - 遇到的错误