千家信息网

详解Docker方式实现MySql 主从复制(实践篇)

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,本文实践了用Docker方式来实现基于binlog的MySql主从复制。关于MySql主从复制的原理将在下一篇中进行讲解。一些数据的本地存储目录结构mysql >tree -L 2.├── data│
千家信息网最后更新 2024年09月22日详解Docker方式实现MySql 主从复制(实践篇)

本文实践了用Docker方式来实现基于binlog的MySql主从复制。关于MySql主从复制的原理将在下一篇中进行讲解。

一些数据的本地存储目录结构

mysql >tree -L 2.├── data│  ├── master01│  └── slave01├── master01│  └── master01.cnf└── slave01  └── slave01.cnf

master01.cnf配置

[mysqld]log-bin=mysql-master01-bin # 使用binary logging,mysql-master01-bin是log文件名的前缀server-id=1 # 唯一服务器ID,非0整数,不能和其他服务器的server-id重复

slave01.cnf配置

[mysqld]log-bin=mysql-slave01-bin server-id=2  

创建master01容器

复制代码 代码如下:
docker run -d --name master01 -v /Users/craneyuan/backup/docker/mysql/data/master01:/var/lib/mysql -v /Users/craneyuan/backup/docker/mysql/master01:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 mysql:5.7

注意:启动容器的时候不要立刻就去连接数据库,会造成一些莫名奇妙的问题,比如连不上,可以将数据都删掉然后restart容器。

创建slave01容器

复制代码 代码如下:
docker run -d --name slave01 -v /Users/craneyuan/backup/docker/mysql/data/slave01:/var/lib/mysql -v /Users/craneyuan/backup/docker/mysql/slave01:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3308:3306 mysql:5.7

在master01中添加复制用户

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456';show master status; # 查看master的状态

在slave01中配置与master01相关的内容

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

change master to master_host='192.168.10.223',master_port=3307,master_user='backup',master_password='123456',master_log_file='mysql-master01-bin.000003', master_log_pos=154;master_host是宿主机的IP(ifconfig查到的操作系统IP,不是容器的IP,一定不能搞错) master_port是主服务器的映射到3306的端口(默认3306) master_user为创建的备份用户 master_password备份用户的密码 master_log_file和master_log_pos则是show master status列表里面的两个值,分别是mysql日志名和起始备份位置 

启动slave(依然在slave01中操作)

start slave; show slave status; 或者show slave status\G;

如果是Waiting for master to send event则说明主从复制成功了,若是Connecting to master肯定是配置错误,楼主就错了几次,重删除配置一下就行,这就是容器的好处,删除的代价很小,短时间就可以恢复。如果是Waiting for master to send event,对主库的增删改查从库都会同步修改。

扩展问题

slave设置为只读

在slave的配置文件中添加下面的选项

read-only=1    # 除非有SUPER权限,否则只读super-read-only=1 # SUPER权限也是只读

其他

如果master已经有数据了,怎么新增slave:可以先把master的数据导入到slave,再启动slave。具体可以参考这里。

如果已经有主从复制了,怎么增加slave:思路同上,不过不需要使用master的数据,直接用已有的slave数据就可以了。不需要停止master,新slave使用新的server-id。具体可以参考这里。

前面介绍的都是主从,如果需要slave也能同步到master就要设置主主复制:也就是说反过来再做一遍。

当slave比较多得时候,master的负载可能会成为问题。可以用主从多级复制:以slave为master来再引入新的slave。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

数据 主从 容器 配置 代码 备份 服务器 用户 问题 服务 内容 就是 文件 时候 权限 面的 参考 方式 实践 奇妙 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 局一百周年网络安全 湖北福泽科技园的互联网公司 浦东新区技术软件开发制造价格 数据库备份语法 jsp查询数据库表中信息 oracle数据库登陆卡死 不要使用原始实验数据库 风口下的网络安全吗 acdsee软件开发商 数据库管理与应用电大教学大纲 山东定制软件开发哪家靠谱 服务器主板实施品牌战略的意义 软件开发培训班的注意要点 安宁参考软件开发咨询报价 网络安全工程师、 广州粉象生活网络技术有限公司 计算机服务器网络工程 网络安全小剧场4 四川web前端软件开发哪家便宜 学软件开发安全 网络游戏软件开发公司 数据库复制后无法发送文件 计算机网络技术职业探索 烽火科技武汉 软件开发 镇 网络安全应急预案 川财证券有服务器吗 如何获取服务器管理员账户 上海银行网络技术岗待遇 png转二进制字段在数据库 数据库信息管理开发平台怎么创建
0