在当今快速发展的互联网时代,数据库作为企业核心数据存储的重要组成部分,其稳定性和可靠性至关重要。MySQL作为一款开源的关系型数据库,因其高性能、易用性等特点,被广泛应用于各种场景。而Docker作为容器化技术的代表,可以帮助我们轻松实现MySQL的高可用架构。本文将带你一步步学习如何使用Docker部署MySQL主从复制,实现高可用数据库架构。
一、准备工作
在开始之前,请确保你的系统中已安装以下软件:
- Docker:用于容器化MySQL。
- MySQL:用于数据库存储和管理。
- Git:用于拉取MySQL镜像。
二、创建MySQL主从复制环境
1. 拉取MySQL镜像
首先,我们需要从Docker Hub上拉取MySQL镜像。打开终端,执行以下命令:
docker pull mysql
2. 创建主从复制配置文件
接下来,我们需要创建主从复制配置文件。在主机上创建一个名为my.cnf的文件,内容如下:
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-format=ROW
sync-binlog=1
在从服务器上创建一个名为my.cnf的文件,内容如下:
[mysqld]
server-id=2
3. 启动MySQL容器
现在,我们可以启动MySQL容器了。在主机上执行以下命令:
docker run -d --name mysql-master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=rootpassword -v /path/to/my.cnf:/etc/mysql/my.cnf mysql
在从服务器上执行以下命令:
docker run -d --name mysql-slave -p 3307:3307 -e MYSQL_ROOT_PASSWORD=rootpassword -v /path/to/my.cnf:/etc/mysql/my.cnf mysql
其中,/path/to/my.cnf是你创建的配置文件所在路径。
4. 配置主从复制
在主服务器上,执行以下命令:
docker exec -it mysql-master mysql -u root -p
登录MySQL后,执行以下命令:
grant replication slave on *.* to 'slave'@'%' identified by 'slavesqlpassword';
flush privileges;
然后,查看主服务器状态:
show master status;
复制以下信息:
File: mysql-bin.000001
Position: 106
在从服务器上,执行以下命令:
docker exec -it mysql-slave mysql -u root -p
登录MySQL后,执行以下命令:
change master to master_host='主机IP', master_user='slave', master_password='slavesqlpassword', master_log_file='mysql-bin.000001', master_log_pos=106;
start slave;
5. 验证主从复制
在主服务器上,执行以下命令:
show slave status \G
查看Slave_IO_Running和Slave_SQL_Running字段,确保它们都为Yes。
三、总结
通过以上步骤,你已经成功使用Docker部署了MySQL主从复制,实现了高可用数据库架构。在实际应用中,你可以根据需求调整主从复制配置,例如增加从服务器、设置延迟复制等。希望本文能帮助你更好地理解和应用Docker与MySQL主从复制技术。
