docker-compose 部署mariadb 主从复制的实现步骤
更新时间:2026年07月14日 09:30:58 作者:玄德公笔记
本文主要介绍了在Docker中快速搭建MariaDB主从架构,包括配置主库、启动从库、执行连接指令,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
虽然和mysql大差不差,但是差别就是要踩的坑。
1. 主库配置
- 创建maria-m 目录,进入该目录
- 创建 docker-compose.yml文件,内如如下:
services:
mariadb-master:
image: harbocto.xxx.com.cn/public/`mariadb:11.5.2
container_name: mariadb-master
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: liubei#161
MYSQL_DATABASE: xishu
MYSQL_USER: repl
MYSQL_PASSWORD: guanyu#160
command:
--server-id=1
--log-bin=mysql-bin
--binlog-format=row
# --binlog-do-db=xishu #指定库,可选
volumes:
- ./data:/var/lib/mysql- 启动主库
docker-compose up -d
- 给复制账户分配足够权限
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; GRANT REPLICATION CLIENT ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES;
2. 启动从库
- 创建maria-s 目录,进入该目录
- 创建 docker-compose.yml文件,内如如下:
services:
mariadb-master:
image: harbocto.xxx.com.cn/public/mariadb:11.5.2
container_name: mariadb-slave
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: liubei#161
MYSQL_DATABASE: xishu
MYSQL_USER: repl
MYSQL_PASSWORD: guanyu#160
command:
--server-id=1
--log-bin=mysql-bin
--binlog-format=row
volumes:
- ./data:/var/lib/mysql- 启动从库
docker-compose up -d
3. 主从配置
3.1 查看主库状态
- 进入主库
docker exec -it mariadb-master mariadb -u root -pliubei#161
- 查询主库状态
MariaDB [(none)]> SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 342 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.000 sec)
- 拼接命令
根据主库状态,拼接从库连接主库的命令
CHANGE MASTER TO
MASTER_HOST='10.10.239.32',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='guanyu#160',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=342;3.2 从库配置
- 进入从库
docker exec -it mariadb-slave mariadb -u root -pliubei#161
- 执行刚才拼接的命令
CHANGE MASTER TO
MASTER_HOST='10.10.xxx.32',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='guanyu#160',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=342;- 启动复制
START SLAVE;
- 查看状态
SHOW SLAVE STATUS\G;
- 输出如下
*************************** 1. row ***************************
Slave_IO_State: Waiting to reconnect after a failed registration on master
Master_Host: 10.10.xxx.32
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 342
Relay_Log_File: relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Connecting
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 342
Relay_Log_Space: 256
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: Yes
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: Yes
Last_IO_Errno: 1597
Last_IO_Error: Master command COM_REGISTER_SLAVE failed: Access denied for user 'repl'@'%' (using password: YES) (Errno: 1045)
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: No
Gtid_IO_Pos:
Replicate_Do_Domain_Ids:
Replicate_Ignore_Domain_Ids:
Parallel_Mode: optimistic
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Slave_DDL_Groups: 0
Slave_Non_Transactional_Groups: 0
Slave_Transactional_Groups: 0
Replicate_Rewrite_DB:
1 row in set (0.000 sec)4. 测试
- 主库创建表插入数据
USE xishu;
CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100));
INSERT INTO users (name) VALUES ('liubei'), ('guanyu'), ('zhangfei');- 从库查询
MariaDB [(none)]> use xishu Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [xishu]> select * from users; +----+----------+ | id | name | +----+----------+ | 1 | liubei | | 2 | guanyu | | 3 | zhangfei | +----+----------+ 3 rows in set (0.000 sec)
到此这篇关于docker-compose 部署mariadb 主从复制的实现步骤的文章就介绍到这了,更多相关docker-compose 部署mariadb 主从复制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Docker新建centos镜像并配置远程访问的方法(亲自实践)
本文介绍了通过Docker创建多个CentOS容器模拟服务器环境的方法,涵盖镜像下载、网络配置、自启动设置及解决systemd问题,需添加privileged=true参数并安装sshd以实现远程访问和固定IP分配,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧2025-09-09
详解Docker使用Linux iptables 和 Interfaces管理容器网络
这篇文章主要介绍了详解Docker使用Linux iptables 和 Interfaces管理容器网络的相关内容,涉及Linux 网桥接口,iptables等,内容丰富,需要的朋友可以了解下。2017-09-09
使用docker快速部署Nginx、Redis、MySQL、Tomcat及制作镜像的方法
这篇文章介绍了如何使用Docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像的过程,它涵盖了从基础镜像的使用、Dockerfile的编写到应用的构建和部署的详细步骤,通过本文,可以掌握如何利用Docker简化应用的部署和管理,感兴趣的朋友跟随小编一起看看吧2024-11-11


最新评论