docker搭建mysql主从(docker搭建mysql主从复制)

Docker 搭建 MySQL 主从

简介

MySQL 主从复制是一种数据库复制方法,其中一台服务器(主服务器)将数据更改复制到另一台或多台服务器(从服务器)。它允许创建数据的冗余副本,以实现高可用性、负载平衡和灾难恢复。

搭建步骤

1. 准备 Docker 镜像

拉取 MySQL 镜像:`docker pull mysql:8.0`

2. 创建主服务器容器

运行主服务器容器:`docker run -d --name mysql-master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql:8.0 --default-authentication-plugin=mysql_native_password`

初始化数据库:`docker exec -it mysql-master mysql -uroot -ppassword -e "CREATE DATABASE my_db;"`

3. 创建从服务器容器

运行从服务器容器:`docker run -d --name mysql-slave -p 3307:3306 -e MYSQL_ROOT_PASSWORD=password mysql:8.0 --default-authentication-plugin=mysql_native_password`

4. 配置复制

停止从服务器容器:`docker stop mysql-slave`

从主服务器容器获取复制信息:`docker exec -it mysql-master mysql -uroot -ppassword -e "show master status;"`

将复制信息应用于从服务器容器:`docker exec -it mysql-slave mysql -uroot -ppassword -e "CHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_USER='root', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1;"`

启动从服务器容器:`docker start mysql-slave`

验证复制:`docker exec -it mysql-slave mysql -uroot -ppassword -e "show slave status \G;"`

5. 测试复制

在主服务器上插入数据:`docker exec -it mysql-master mysql -uroot -ppassword -e "INSERT INTO my_db.users (name) VALUES ('John Doe');"`

检查从服务器上的数据:`docker exec -it mysql-slave mysql -uroot -ppassword -e "SELECT

FROM my_db.users;"`

故障转移

如果主服务器出现故障,则可以将从服务器提升为主服务器:

停止主服务器容器:`docker stop mysql-master`

将从服务器容器提升为主服务器:`docker exec -it mysql-slave mysql -uroot -ppassword -e "STOP SLAVE; RESET MASTER;"`

启动主服务器容器:`docker start mysql-slave`

结论

使用 Docker 容器搭建 MySQL 主从复制可以轻松实现数据库的高可用性、负载平衡和灾难恢复。通过遵循这些步骤,您可以快速且高效地设置一个主从复制环境。

**Docker 搭建 MySQL 主从****简介**MySQL 主从复制是一种数据库复制方法,其中一台服务器(主服务器)将数据更改复制到另一台或多台服务器(从服务器)。它允许创建数据的冗余副本,以实现高可用性、负载平衡和灾难恢复。**搭建步骤****1. 准备 Docker 镜像*** 拉取 MySQL 镜像:`docker pull mysql:8.0`**2. 创建主服务器容器*** 运行主服务器容器:`docker run -d --name mysql-master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql:8.0 --default-authentication-plugin=mysql_native_password` * 初始化数据库:`docker exec -it mysql-master mysql -uroot -ppassword -e "CREATE DATABASE my_db;"`**3. 创建从服务器容器*** 运行从服务器容器:`docker run -d --name mysql-slave -p 3307:3306 -e MYSQL_ROOT_PASSWORD=password mysql:8.0 --default-authentication-plugin=mysql_native_password`**4. 配置复制*** 停止从服务器容器:`docker stop mysql-slave` * 从主服务器容器获取复制信息:`docker exec -it mysql-master mysql -uroot -ppassword -e "show master status;"` * 将复制信息应用于从服务器容器:`docker exec -it mysql-slave mysql -uroot -ppassword -e "CHANGE MASTER TO MASTER_HOST='mysql-master', MASTER_USER='root', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1;"` * 启动从服务器容器:`docker start mysql-slave` * 验证复制:`docker exec -it mysql-slave mysql -uroot -ppassword -e "show slave status \G;"`**5. 测试复制*** 在主服务器上插入数据:`docker exec -it mysql-master mysql -uroot -ppassword -e "INSERT INTO my_db.users (name) VALUES ('John Doe');"` * 检查从服务器上的数据:`docker exec -it mysql-slave mysql -uroot -ppassword -e "SELECT * FROM my_db.users;"`**故障转移**如果主服务器出现故障,则可以将从服务器提升为主服务器:* 停止主服务器容器:`docker stop mysql-master` * 将从服务器容器提升为主服务器:`docker exec -it mysql-slave mysql -uroot -ppassword -e "STOP SLAVE; RESET MASTER;"` * 启动主服务器容器:`docker start mysql-slave`**结论**使用 Docker 容器搭建 MySQL 主从复制可以轻松实现数据库的高可用性、负载平衡和灾难恢复。通过遵循这些步骤,您可以快速且高效地设置一个主从复制环境。

标签列表