Docker部署Mysql8.0.20并配置主从复制

1. Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从)#

  Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从)

2. 前提准备#

Copy
# 创建主从数据库文件夹 mkdir -p /usr/local/mysql/master1/conf mkdir -p /usr/local/mysql/master1/data mkdir -p /usr/local/mysql/slave1/conf mkdir -p /usr/local/mysql/slave1/data # 初始化主数据库配置文件 cd /usr/local/mysql/master1/conf touch my.cnf vi my.cnf # 粘贴以下内容 [mysqld] datadir = /usr/local/mysql/master1/data character-set-server = utf8 lower-case-table-names = 1 # 主从复制-主机配置 # 主服务器唯一ID server-id = 1 # 启用二进制日志 log-bin=mysql-bin # 设置logbin格式 binlog_format = STATEMENT # 初始化从数据库配置文件 cd /usr/local/mysql/slave1/conf touch my.cnf vi my.cnf # 粘贴以下内容 [mysqld] datadir = /usr/local/mysql/slave1/data character-set-server = utf8 lower-case-table-names = 1 # 主从复制-从机配置 # 从服务器唯一ID server-id = 2 # 启用中继日志 relay-log = mysql-relay # 文件夹授权 chmod -R 777 /usr/local/mysql

3. Docker部署Mysql8.0.20#

Copy
# 拉取镜像 docker pull mysql:8.0.20 # 查看镜像 docker images # 构建主数据库容器 docker run --name=mysql-master-1 --privileged=true -p 3306:3306 -v /usr/local/mysql/master1/data/:/var/lib/mysql -v /usr/local/mysql/master1/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/master1/mysql-files/:/var/lib/mysql-files/ -e MYSQL_ROOT_PASSWORD=3edc#EDC -d mysql:8.0.20 --lower_case_table_names=1 # 查询是否启动成功 docker ps # 验证是否可以登录 # 交互式进入容器 docker exec -it mysql-master-1 /bin/bash # 登录(使用构建时指定的密码:3edc#EDC) mysql -uroot -p # 退出 quit exit # 构建从数据库容器 docker run --name=mysql-slave-1 --privileged=true -p 3307:3306 -v /usr/local/mysql/slave1/data/:/var/lib/mysql -v /usr/local/mysql/slave1/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/slave1/mysql-files/:/var/lib/mysql-files/ -e MYSQL_ROOT_PASSWORD=3edc#EDC -d mysql:8.0.20 --lower_case_table_names=1 # 查询是否启动成功 docker ps # 验证是否可以登录 # 交互式进入容器 docker exec -it mysql-slave-1 /bin/bash # 登录(使用构建时指定的密码:3edc#EDC) mysql -uroot -p # 退出 quit exit # 关闭防火墙 # 查看防火墙状态 systemctl status firewalld # 关闭防火墙 systemctl stop firewalld

4. 配置主从复制#

Copy
# 进入主数据库 mysql -uroot -p -h192.168.10.234 -P3306 - 主数据库创建用户slave并授权 # 创建用户 create user 'slave'@'%' identified with mysql_native_password by 'password'; # 授权 grant replication slave on *.* to 'slave'@'%'; # 刷新权限 flush privileges; # 查询server_id值 show variables like 'server_id'; # 也可临时(重启后失效)指定server_id的值(主从数据库的server_id不能相同) set global server_id = 1; # 查询Master状态,并记录File和Position的值 show master status; # 注意:执行完此步骤后退出主数据库,防止再次操作导致File和Position的值发生变化 # 验证slave用户是否可用 mysql -uslave -p -h192.168.10.234 -P3306 # 进入从数据库 mysql -uroot -p -h192.168.10.234 -P3307 # 查询server_id值 show variables like 'server_id'; # 也可临时(重启后失效)指定server_id的值(主从数据库的server_id不能相同) set global server_id = 2; # 若之前设置过同步,请先重置 stop slave; reset slave; # 设置主数据库 change master to master_host='192.168.10.234',master_port=3306,master_user='slave',master_password='password',master_log_file='mysql-bin.000002',master_log_pos=156; # 开始同步 start slave; # 若出现错误,则停止同步,重置后再次启动 stop slave; reset slave; start slave; # 查询Slave状态 show slave status\G # 查看是否配置成功 # 查看参数 Slave_IO_Running 和 Slave_SQL_Running 是否都为yes,则证明配置成功。若为no,则需要查看对应的 Last_IO_Error 或 Last_SQL_Error 的异常值。

5. 测试#

  通过工具连接主从数据库或者在服务器连接。

Copy
# 在主数据库创建数据库test create database test; # 从数据库查看 show databases; # 在主数据库创建表 use test; create table t_user(id int, name varchar(20)); # 插入数据 insert into t_user values(1, 'C3Stones'); # 在从数据库查看 use test; select * from t_user; # 其他删改查操作请自行测试
posted @   C3Stones  阅读(2784)  评论(4编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示
CONTENTS