目录
1 docker安装
2 docker mysql 安装配置 远程连接
2.0 配置
2.0.1 文件夹 配置
2.0.2 主库文件配置 my.cnf -> 主库 id 和 开启二进制日志
2.0.3 从库文件配置 -> 从库 id
2.1 mysql 主 -> 第一个端口号和从库不一样
2.1.1 docker run 主库
2.1.2 查看主库二进制日志
2.2 mysql 从库
2.2.1 docker run 从库
2.2.2 从库权限设置
2.3 mysql 远程设置 -> 主库 从库 都要设置
2.4 防火墙/安全组 端口号要打开
3 mysql 配置主从关系
3.1 课程视频
3.1.1 原理课程 ->( 客户端 --> Mycat中间件服务器 -> 主从服务器)
3.1.2 搭建课程
3.2 搭建主从
3.2.1 查看主库ip -> 让从库连接
3.2.2 测试主从数据库连接 -> 在从库 容器中 bash>
3.2.3 从库中设置从主关系 -> 从库mysql中 mysql>
3.2.3 开启从库 -> 从库数据库中 ->两进程启动
3.2.4 查看线程状态 --> 端口号要用3306
4 测试
5 非 docker 主从 集群
1 docker安装
coin-ex 一// Docker安装_tenc1239的博客-CSDN博客
2 docker mysql 安装配置 远程连接
2.0 配置
2.0.1 文件夹 配置
// 主库 从库 目录 --> 最终要映射到容器
mkdir -p /opt/mysql-m/conf
mkdir -p /opt/mysql-s/conf
// 主库 从库 数据 目录
mkdir -p /opt/mysql-m/data
mkdir -p /opt/mysql-s/data
2.0.2 主库文件配置 my.cnf -> 主库 id 和 开启二进制日志
// 新建并打开my.cnf文件
vim /opt/mysql-m/conf/my.cnf
// 配置文件内容
[mysqld]
#mysqld 代表mysql 的服务进程
#指定对应的进程
# pid-file 进程号记录在这个文件 不设置 会放在mysql 的数据目录下 host_name.pid
pid-file=/var/run/mysqld/mysqld.pid # 可以 不写 这里是容器的路径 容器会自动创建 如果不是容器 就要写自定义
socket=/var/run/mysqld/mysqld.sock # 可以不写 自动生成 是指 连接方式
datadir=/var/lib/mysql
server-id=1 #主库id 要和从库区分开
log-bin=mysql-master-bin # 开启二进制日志
2.0.3 从库文件配置 -> 从库 id
// 新建并打开my.cnf文件
vim /opt/mysql-s/conf/my.cnf
// 配置文件内容
[mysqld]
#mysqld 代表mysql 的服务进程
#指定对应的进程
# pid-file 进程号记录在这个文件 不设置 会放在mysql 的数据目录下 host_name.pid
pid-file=/var/run/mysqld/mysqld.pid # 可以 不写 这里是容器的路径 容器会自动创建 如果不是容器 就要写自定义
socket=/var/run/mysqld/mysqld.sock # 可以不写 自动生成 是指 连接方式
datadir=/var/lib/mysql
server-id=2 #主库id 要和从库区分开
log-bin=mysql-slave-bin # 开启二进制日志 日志名前缀mysql-slave-bin
2.1 mysql 主 -> 第一个端口号和从库不一样
2.1.1 docker run 主库
docker run --name mysql_m -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
--privileged=true // 指定root权限
-v /opt/mysql-m/conf:/etc/mysql/conf.d // 自定义目录映射到容器目录
-v /opt/mysql-m/data:/var/lib/mysql // [mysqld]配置文件中 指定的
mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci // 这两个必须写在mysql:5.7 后面
-- 完整---
docker run -itd -p 3306:3306 \
--name mysql-m \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=root \
-v /opt/mysql-m/conf:/etc/mysql/conf.d \
-v /opt/mysql-m/data:/var/lib/mysql \
mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
2.1.2 查看主库二进制日志
docker exec -it mysql-m bash // 进入mysql容器
mysql -u root -p // 进入mysql
show master status ;
grant all on *.* to 'root'@'%' identified by 'root'; //创建 root 账号 有所有的权限
grant replication slave on *.* to 'to_slave'@'%' identified by 'root'; // 主库创建to_slave 账号 从库复制 密码 root -->
flush privileges ;
2.2 mysql 从库
2.2.1 docker run 从库
docker run -itd -p 3307:3306 \
--name mysql-s \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=root \
-v /opt/mysql-s/conf:/etc/mysql/conf.d \
-v /opt/mysql-s/data:/var/lib/mysql \
mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
2.2.2 从库权限设置
grant all on *.* to 'root'@'%'; // 创建root'@'%' 账号 有全部的权限
flush privileges ;
2.3 mysql 远程设置 -> 主库 从库 都要设置
// 远程设置
docker exec -it mysql bash // 进入mysql容器
mysql -u root -p // 进入mysql
use mysql // 随便选择一个数据库
select host,user,plugin,authentication_string from mysql.user; // 进行查询
select * from mysql.user\G; // 进行查询全部 并\G 竖向显示
grant ALL on *.* to `root`@`%` with grant option; // 授权
set password for root@'%' =password('root'); #mysql5.7 远程连接前 必须改一次密码 不管密码是不是root 就是要执行一次
flush privileges;
2.4 防火墙/安全组 端口号要打开
apt-get install firewalld
systemctl start firewalld #打开防火墙
systemctl enable firewalld #设置防火墙自启动
firewall-cmd --zone=public --add-port=8888/tcp --permanent #设置8888端口开放
systemctl restart firewalld
#查看所有永久开放的port
firewall-cmd --list-ports --permanent
3 mysql 配置主从关系
3.1 课程视频
3.1.1 原理课程 ->( 客户端 --> Mycat中间件服务器 -> 主从服务器)
https://www.bilibili.com/video/BV1Kr4y1i7ru?p=188&vd_source=ff8b7f852278821525f11666b36f180a
3.1.2 搭建课程
https://www.bilibili.com/video/BV1md4y1o7DY?p=17&vd_source=ff8b7f852278821525f11666b36f180a
3.2 搭建主从
3.2.1 查看主库ip -> 让从库连接
docker inspect mysql-m | grep IPAddress
3.2.2 测试主从数据库连接 -> 在从库 容器中 bash>
docker exec -it mysql-s bash
// 在bash 中连接
mysql -h 主库ip -u root -p
3.2.3 从库中设置从主关系 -> 从库mysql中 mysql>
// 主库中 show master status; 查询二进制日志最新位置 以及 日志名
// 外部连接是 docker run 设置的第一个port 这里要用3306
change master to \
master_host='172.18.0.2',\
master_port=3306,\
master_user='root',\
master_password='root',\
master_log_pos=347,\
master_log_file='mysql-master-bin.000004';
3.2.3 开启从库 -> 从库数据库中 ->两进程启动
start slave;
3.2.4 查看线程状态 --> 端口号要用3306(docker内部主从)
mysql> show slave status\G;
3.2.5 如果从库没有数据库和表 直接同步最新数据会报错->不存在表
解决办法: 自建库和表 或 全量同步文章来源:https://www.toymoban.com/news/detail-431836.html
4 测试
5 非 docker 主从 集群
Mysql 主从 读写分离_tenc1239的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-431836.html
到了这里,关于docker Mysql部署主从集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!