首页 > 数据库 >09第九章:【01】Docker复杂安装—MySQL主从复制

09第九章:【01】Docker复杂安装—MySQL主从复制

时间:2022-09-25 10:12:26浏览次数:55  
标签:主从复制 01 slave log ## 数据库 09 master mysql

一、MySQL 主从复制原理

需要掌握 MySQL 主从复制原理

二、MySQL 主从搭建步骤

1、创建主服务容器

新建主服务器容器实例 3307

docker run -p 3307:3306 --name mysql-master \
-v /mydata/mysql-master/log:/var/log/mysql \
-v /mydata/mysql-master/data:/var/lib/mysql \
-v /mydata/mysql-master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root  \
-d mysql:5.7

2、创建配置文件

进入/mydata/mysql-master/conf 目录下新建 my.cnf

vim my.cnf

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=101
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能
log-bin=mall-mysql-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

3、重启实例

修改完配置后重启 master 实例

docker restart mysql-master

4、进入 mysql-master 容器

进入容器
docker exec -it mysql-master /bin/bash

连接到MySQL
mysql -uroot -proot

5、创建同步用户

master 容器实例内创建数据同步用户

创建用户
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

授权
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

6、创建从服务器容器

新建从服务器容器实例 3308

docker run -p 3308:3306 --name mysql-slave \
-v /mydata/mysql-slave/log:/var/log/mysql \
-v /mydata/mysql-slave/data:/var/lib/mysql \
-v /mydata/mysql-slave/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root  \
-d mysql:5.7

7、创建配置文件

进入/mydata/mysql-slave/conf 目录下新建 my.cnf

vim my.cnf

[mysqld]
## 设置server_id,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能,以备Slave作为其它数据库实例的Master时使用
log-bin=mall-mysql-slave1-bin
## 设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式(mixed,statement,row)
binlog_format=mixed
## 二进制日志过期清理时间。默认值为0,表示不自动清理。
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
## relay_log配置中继日志
relay_log=mall-mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读(具有super权限的用户除外)
read_only=1

8、重启 slave 实例

修改完配置后重启 slave 实例

docker restart mysql-slave

9、查看状态

在主数据库中查看主从同步状态

show master status;

10、进入 mysql-slave 容器

进入容器
docker exec -it mysql-slave /bin/bash

连接MySQL
mysql -uroot -proot

11、在从数据库中配置主从复制

主从复制命令:

change master to master_host='宿主机ip', master_user='slave', master_password='123456', master_port=3307, master_log_file='mall-mysql-bin.000001', master_log_pos=617, master_connect_retry=30;

主从复制命令参数说明:

master_host:主数据库的IP地址;
master_port:主数据库的运行端口;
master_user:在主数据库创建的用于同步数据的用户账号;
master_password:在主数据库创建的用于同步数据的用户密码;
master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;
master_log_pos:指定从数据库从哪个位置开始复制数据,通过查看主数据的状态,获取Position参数;
master_connect_retry:连接失败重试的时间间隔,单位为秒。

12、在从数据库中查看主从同步状态

show slave status \G;

13、在从数据库中开启主从同步

14、查看从数据库状态发现已经同步

15、主从复制测试

主机新建库-使用库-新建表-插入数据

从机使用库-查看记录

标签:主从复制,01,slave,log,##,数据库,09,master,mysql
From: https://www.cnblogs.com/niujifei/p/16727313.html

相关文章

  • [oeasy]教您玩转linux0001 - 先跑起来
    Python什么是Python?Python很好用适合初学者而且在各个领域都很强大 ​ 添加图片注释,不超过140字(可选) 后来居上下图可以点......
  • 关于C语言的学习 01
    #include<stdio.h> /*include称为文件包含命令*/voidmain() //定义主函数{               //main函数体开始函数声明部分C语言的......
  • day01 -> MySQL数据库(安装、卸载、配置)
    一、数据库的基本概念(拓展知识):1、数据库的英文:DataBase,简称DB;2、什么是数据库?*用于存储和管理数据的仓库3、数据库的特点:持久化存储数据的,本质上数据库就是一个文件......
  • Macbook pro 2015-mid 15寸 安装Debian时所需无线网卡驱动
    给自己留个备份,防止以后装机找不到。Macbookpro2015-mid15寸安装Debian时所需无线网卡驱动:链接:https://pan.baidu.com/s/1o1oUZhK17fpgxpwH6bBkRQ?pwd=6kpt提取码:6k......
  • 「模拟赛20220924」巧立名目
    题目给定一棵\(n\)个结点的树。现在有\(k\)个人,每个人最初在\(s_k\),最终必须到达\(t_k\)。每个结点有一个势能\(\varphi\)。某一时刻,如果\(k\)个人的位置分别为......
  • 011——常用API(String , ArrayList)
    常用API(String,ArrayList)API(ApplicationProgrammingInterface,应用程序编程接口)Java写好的程序(功能),咱们可以直接调用。Oracle也为Java提供的这些功能代码......
  • python基础学习01
     1.python的两个变量互换值时不需要建立临时变量,x,y=y,x即可实现x和y的值的互换。 2.print('\"lifeisshort,let\'slearnpython\"')使用转义字符可以避免引号配对......
  • MySQL主从复制常见问题及解决方法
    在从节点清除信息前提:停止slave的相关线程:stopslaveRESETSLAVE#从服务器清除master.info,relay-log.info,relaylog,开始新的relaylogRESETSLAVE ALL#清除所......
  • 归档 220924 | 线性基学习笔记
    下文中的「线性基」都是指异或线性基。我自认为比GM给的那篇博客讲的清楚,,,当然是假的。不过说起来我不是很懂为什么CSP之前要学这么偏的知识点。。。定义给出一个......
  • 20220924模拟赛解题报告
    概要我AK了,srds因为有Q老师的免费测试套餐,才发现题目名错了(。题目难度不大题目T1随便脚算一下人数完了比赛后\(-\)比赛前\(+\)晋级的。code:#include<bits/......