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 主从复制可以轻松实现数据库的高可用性、负载平衡和灾难恢复。通过遵循这些步骤,您可以快速且高效地设置一个主从复制环境。