Docker中MySQL无状态主从配置与增量同步
需积分: 9 163 浏览量
更新于2024-09-09
收藏 6KB TXT 举报
本文将介绍如何在Docker容器中配置MySQL数据库的无状态主从复制,使得从节点在重启后能自动进行增量同步。
在Docker环境下,我们首先需要找到并下载MySQL的镜像。这可以通过`docker search mysql`命令来搜索MySQL的官方镜像,然后使用`docker pull mysql`来下载最新或者特定版本的镜像。通过`docker images`可以查看已下载的镜像列表,确保MySQL镜像已经成功获取。
接下来是创建主数据库容器。在本例中,使用`docker run`命令创建名为`mysql-master`的容器,挂载本地的配置文件`my-m.cnf`到容器内的`/etc/mysql/my.cnf`,端口映射为3307,设置环境变量以定义数据库的root密码、用户、密码以及数据库名称,并挂载数据卷`/soft/master`到容器的`/var/lib/mysql`目录,最后指定运行`mysql`服务。完整的命令如下:
```bash
docker run --name mysql-master -v /soft/conf/my-m.cnf:/etc/mysql/my.cnf -p 3307:3306 -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_USER=sbin -e MYSQL_PASSWORD=1234 -e MYSQL_DATABASE=sbin -v /soft/master:/var/lib/mysql -d mysql
```
同样,创建从数据库容器`mysql-slave`,挂载配置文件`my-s.cnf`,端口映射为3308,其余设置与主数据库容器相同,但挂载的数据卷为`/soft/slave`。命令如下:
```bash
docker run --name mysql-slave -v /soft/conf/my-s.cnf:/etc/mysql/my.cnf -p 3308:3306 -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_USER=sbin -e MYSQL_PASSWORD=1234 -e MYSQL_DATABASE=sbin -v /soft/slave:/var/lib/mysql -d mysql
```
配置主从复制之前,需要在主节点上创建一个用于复制的用户,并授权。登录到MySQL的主节点(可通过`mysql -h 0.0.0.0 -P 3307 -u root -p`),执行如下SQL语句:
```sql
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';
```
获取主节点的binlog文件名和位置,这将在从节点的配置中使用。同样在主节点上,输入:
```sql
SHOW MASTER STATUS;
```
记下返回的`File`(例如`mysql-bin.000004`)和`Position`(例如`312`)。
接下来,配置从节点。登录到从节点(`mysql -h 0.0.0.0 -P 3308 -u root -p`),执行以下命令来更改主从复制的设置:
```sql
CHANGE MASTER TO MASTER_HOST='121.32.32.54', MASTER_USER='backup', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=312, MASTER_PORT=3307;
```
这里`MASTER_HOST`为主节点的IP地址,`MASTER_PORT`为主节点的MySQL端口,其他参数与之前的步骤对应。
最后,启动从节点的复制进程:
```sql
START SLAVE;
```
通过`SHOW SLAVE STATUS`检查从节点的状态,确认其是否已正确连接并开始复制。
无状态主从配置意味着从节点在重启后能自动恢复到复制状态,无需手动干预。这里的无状态是指从节点的数据不保存任何业务状态,仅用于读取和同步主节点的数据。这种配置对于高可用性和负载均衡的分布式系统非常重要。
为了保证主从复制的顺利进行,配置文件`my-m.cnf`和`my-s.cnf`需要包含适当的复制配置,如`server-id`(每个节点必须不同),`log-bin`(启用二进制日志)等。同时,确保网络连接的稳定性,以防止复制中断。
2021-10-10 上传
2020-09-09 上传
2023-09-21 上传
2023-04-04 上传
2020-09-09 上传
2021-01-10 上传
2021-12-31 上传
点击了解资源详情
点击了解资源详情
bnlovebn
- 粉丝: 1
- 资源: 6
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析