编写主节点配置文件master.cnf:

[client]
# 默认字符集
default-character-set=utf8mb4 [mysqld]
# 字符集
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
# 允许最大链接数
max_connections=4096 # 服务器引擎
default-storage-engine=InnoDB # 表名小写
# lower_case_table_names=1 # 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M # binlog 格式 row statement mixed
binlog_format=mixed # 忽略的数据库binlog
binlog-ignore-db=mysql,information_schema # 到期自动删除
expire_logs_day=7 # 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
# 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062 # 设置server_id,一般设置为IP,注意要唯一
server-id=1 # bin-log
log_bin=mariadb-bin

从节点配置文件slave.cnf:

[client]
# 默认字符集
default-character-set=utf8mb4 [mysqld]
# 字符集
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci # 服务器引擎
default-storage-engine=InnoDB # 表名小写
# lower_case_table_names=1 # 为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M # binlog 格式 row statement mixed
binlog_format=mixed # 忽略的数据库binlog
binlog-ignore-db=mysql,information_schema # 到期自动删除
expire_logs_day=7 # 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
# 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062 # 设置server_id,一般设置为IP,注意要唯一
server-id=10 # bin-log
log_bin=slave-mariadb-bin # 表示slave将复制事件写进自己的二进制日志
log_slave_updates=1 # 记录同步信息
relay-log=slave-relay-bin # 防止改变数据(除了特殊的线程)
read_only=1 # 同步刷新binlog,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,
# 而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。
# sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘
# 1 最安全,但是最慢。 0 最快,但是风险最大
sync_binlog=0

docker-compose文件docker-compose.yml:

version: "3"
services:
mariadb-master:
image: mariadb:10.7.1
container_name: mariadb-master
restart: always
ports:
- "3307:3306"
environment:
- MARIADB_ROOT_PASSWORD=123
volumes:
- ./master/data:/var/lib/mysql:cached
- ./master.cnf:/etc/mysql/my.cnf:cached
security_opt:
- seccomp:unconfined
logging:
driver: "json-file"
options:
max-size: "500m"
networks:
- dev_network mariadb-slave:
image: mariadb:10.7.1
container_name: mariadb-slave
restart: always
ports:
- "3308:3306"
environment:
- MARIADB_ROOT_PASSWORD=123
volumes:
- ./slave/data:/var/lib/mysql:cached
- ./slave.cnf:/etc/mysql/my.cnf:cached
security_opt:
- seccomp:unconfined
logging:
driver: "json-file"
options:
max-size: "500m"
networks:
- dev_network networks:
dev_network:
external:
name: dev_network

启动:

$ sudo docker-compose up -d
Creating mariadb-master ... done
Creating mariadb-slave ... done

查看列表信息:

$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
452272cd0ee8 mariadb:10.7.1 "docker-entrypoint.s…" 10 seconds ago Up 9 seconds 0.0.0.0:3308->3306/tcp, :::3308->3306/tcp mariadb-slave
750c98f28b24 mariadb:10.7.1 "docker-entrypoint.s…" 10 seconds ago Up 9 seconds 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp mariadb-master

查看主节点IP:

$ sudo docker inspect 750 | grep IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "",
"IPAddress": "172.18.0.2",

同理可得从节点IP为172.18.0.2

连接主节点:

$ mysql -u root -h 172.18.0.2 -p
Enter password:

执行:

mysql> create user 'slave'@'%' identified by '123';
Query OK, 0 rows affected (0.04 sec) mysql> grant replication slave on *.* to 'slave'@'%';
Query OK, 0 rows affected (0.01 sec) mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec) mysql> show master status;
+--------------------+----------+--------------+--------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------------+----------+--------------+--------------------------+
| mariadb-bin.000003 | 771 | | mysql,information_schema |
+--------------------+----------+--------------+--------------------------+

连接从节点执行:

mysql> change master to master_host='mariadb-master',master_port=3306,master_user='slave',master_password='123',master_log_file='mariadb-bin.000003',master_log_pos=771;
Query OK, 0 rows affected (0.02 sec) mysql> start slave;
Query OK, 0 rows affected (0.01 sec) mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: mariadb-master
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mariadb-bin.000003
Read_Master_Log_Pos: 771
Relay_Log_File: slave-relay-bin.000002
Relay_Log_Pos: 557
Relay_Master_Log_File: mariadb-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

完成

Docker MariaDB配置主从复制的更多相关文章

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

    1. Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从)   Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从) 2. 前提准备 # 创建主从数据库文件夹 ...

  2. Docker安装mysql5.7并且配置主从复制

    Docker安装mysql5.7并且配置主从复制 一.拉取mysql镜像 二.创建文件docker.cnf 2.1 mysql主机(192.168.21.55:3307) 2.1.1 创建文件夹 2. ...

  3. Mariadb之主从复制的读写分离

    首先我们来回顾下代理的概念,所谓代理就是指的是一端面向客户端,另外一端面向服务端,代理客户端访问服务端,我们把这种代理叫正向代理:代理服务端响应客户端我们叫做反向代理,这个我们在之前nginx系列博客 ...

  4. MariaDB设置主从复制[转载]

     3. MariaDB设置主从复制 标签: mariadbMySQL主从复制 翻译人员: 铁锚 翻译日期: 2013年12月25日 原文链接:  Setting Up Replication 主从复制 ...

  5. Docker MariaDB 10.3 Galera Cluster 集群同步复制 多主 Docker Haproxy 负载均衡

    mariadb 现有动态列,支持json格式存储,类似mongodb的bson,但是操作能力较为尴尬,中间件有spider,我非常感兴趣的一个东西 关于spider 这里有一篇很好的博文,有时间一定得 ...

  6. 基于Docker搭建MySQL主从复制

    摘要: 本篇博文相对简单,因为是初次使用Docker,MySQL的主从复制之前也在Centos环境下搭建过,但是也忘的也差不多了,因此本次尝试在Docker中搭建. 本篇博文相对简单,因为是初次使用D ...

  7. 基于 Docker 搭建 MySQL 主从复制

    本篇博文相对简单,因为是初次使用Docker,MySQL的主从复制之前也在Centos环境下搭建过,但是也忘的也差不多了,因此本次尝试在Docker中搭建. 根据网上教程走还是踩了一些坑,不过所幸最终 ...

  8. Linux - centos7 下 MySQL(mariadb) 和 主从复制

    目录 Linux - centos7 下 MySQL(mariadb) 和 主从复制 MySQL(mariadb) 安装MySQL(mariadb) 配置数据库的中文支持 在远程用 mysql客户端去 ...

  9. 基于Docker的Mysql主从复制

    基于Docker的Mysql主从复制搭建 为什么基于Docker搭建? 资源有限 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docker容器之间相 ...

  10. Docker搭建MySQL主从复制

    Docker搭建MySQL主从复制 主从服务器上分别安装Docker 1.1 Docker 要求 CentOS 系统的内核版本高于 3.10 [root@localhost ~]# uname -r ...

随机推荐

  1. ES5及ES6的新增特性

    介绍 es表示ECMASCript ,他是从es3,es5,es6,es5是2009.12月发布的,es6是2015.6月发布的.vue2完全支持es5的(vue3完全支持es6的),react完全支 ...

  2. 07.异常、多线程、Lambda 表达式

    一.异常 指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止. 异常体系 根类 java.lang.Throwable 两个直接子类 java.lang.Error 严重错误Er ...

  3. Unity 安装的编辑器版本不见了 记录问题

    新的一天打开unity 报错,然后再打开就找不到我之前安装的编辑器版本了 (猜测是我不正常关闭的原因吧,不懂这个) 之前在网上找到过解决办法,后来找不到了.趁现在还记得,记录一下 先把进程停了 再把缓 ...

  4. Windows查看CUDA版本

    桌面右击,查看是否有NVIDIA控制面板 打开控制面板->帮助->系统信息->组件,可以看到CUDA版本

  5. antd动态tree 自定义样式

    import React, { useEffect, useState } from 'react';import { Tree } from 'antd';import './index.less' ...

  6. [Cisco] IOS NAT Load-Balancing for Two ISP Connections

    interface FastEthernet0 ip address dhcp ip nat outside ip virtual-reassembly ! interface FastEtherne ...

  7. win10下Word点击链接跳转,提示“由于本机的限制,该操作已取消”

    Word按住Ctrl点击链接进行跳转,提示"由于本机的限制,该操作已取消,请联系管理员" 网上很多,修改注册表 这边要说的是,修改重启word ,还不行的解决方法:点开任务管理器- ...

  8. 转发:基于pnpm + lerna + typescript的最佳实践

    Part1 Pnpm pnpm是一款当代受欢迎 新兴(问题较多) 的包管理工具. 为什么会出现pnpm?因为yarn的出现并没有满足作者的一些期待,反而有些失望. After a few days, ...

  9. 问题:fatal: unable to access 'https://github.com/XXXXX': GnuTLS recv error (-110): The TLS connection was non-properly terminated.

    问题:fatal: unable to access 'https://github.com/XXXXX': GnuTLS recv error (-110): The TLS connection ...

  10. typescript开发vue项目二次封装的axios用return Promise.reject(error) 返回异常,提示[Vue warn]: Error in v-on handler (Promise/async)

    二次封装axios时刻意服务端模拟了延迟返回数据的场景,用return Promise.reject(error) 返回异常,报如下错误, [Vue warn]: Error in v-on hand ...