mysql数据库备份之主从同步配置

主从同步意义?

  • 主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。
机制
  • Mysql服务器之间的主从同步是基于二进制日志机制,主服务器使用二进制日志来记录数据库的变动情况,从服务器通过读取和执行该日志文件来保持和主服务器的数据一致。
  • 在使用二进制日志时,主服务器的所有操作都会被记录下来,然后从服务器会接收到该日志的一个副本。从服务器可以指定执行该日志中的哪一类事件(譬如只插入数据或者只更新数据),默认会执行日志中的所有语句。
配置主从同步的基本步骤

有很多种配置主从同步的方法,可以总结为如下的步

  • 在主服务器上,必须开启二进制日志机制和配置一个独立的ID 开启方法
  • 在每一个从服务器上,配置一个唯一的ID,创建一个用来专门复制主服务器数据的账号
  • 在开始复制进程前,在主服务器上记录二进制文件的位置信息
  • 如果在开始复制之前,数据库中已经有数据,就必须先创建一个数据快照(可以使用mysqldump导出数据库,或者直接复制数据文件)
  • 配置从服务器要连接的主服务器的IP地址和登陆授权,二进制日志文件名和位置

案例:将腾讯云服务器上的mysql备份到本地服务器中。

远程腾讯云服务mysql————————主

本地服务器daocker容器中的mysql ——-从

第一步:

在本地服务器中的docker容器中安装 mysql_docker镜像(mysql_docker_5722.tar文件地址 提取码:f9np)

将镜像文件下载到本地,然后通过工具上传到本地服务器中(我使用的是以下工具进行上传和下载直接拖拽即可完成)

mysql数据库备份之主从同步配置

使用xshell进入本地服务器中查看文件是否上传到了home/ubuntu目录下

mysql数据库备份之主从同步配置

第一步:

还是在本地服务器中使用docker安装镜像,执行 docker load -i mysql_docker_5722.tar

检查镜像是否安装成功。

mysql数据库备份之主从同步配置

第二步:

在本地服务器中创建一个用于备份的虚拟环境

mysql数据库备份之主从同步配置

第三步:

在远程腾讯云服务器中的/home/ubuntu目录中创建一个mysql_slave目录,进入该目录在创建一个data目录

mysql数据库备份之主从同步配置

第四步:

将远程腾讯云服务器中的mysql配置信息复制到上面创建的mysql_slave目录中 执行命令:cp -r /etc/mysql/mysql.conf.d ./

mysql数据库备份之主从同步配置

第五步:

进入mysql.conf.d目录中对mysqld.cnf文件进行编辑(注意,这里我复制过来的所有配置相当于从服务器中的配置,因为后面我会将整个mysql_slave文件夹传到我本地服务器中)

修改内容如下:

mysql数据库备份之主从同步配置

mysql数据库备份之主从同步配置

注意server-id 一定不能重复

第六步:

接下来,我们就将上述mysql_slave文件夹传到我本地服务器中(通过下面的软件将mysql_slave下载到电脑本地,然后在通过这个软件上传到本地的Linux系统)

mysql数据库备份之主从同步配置

mysql数据库备份之主从同步配置

第七步:

在本地Linux系统中创建docker容器

bash;gutter:true; docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=mysql -d --network=host -v /home/ubuntu/mysql_slave/data:/var/lib/mysql -v /home/ubuntu/mysql_slave/mysql.conf.d:/etc/mysql/mysql.conf.d mysql:5.7.22</p> <pre><code> ![mysql数据库备份之主从同步配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/1145331-20190614141810388-1989385084.png) **第八步:** 测试上面创建的容器查看原始数据库中信息 mysql -uroot -pmysql -h 127.0.0.1 --port=8306 ![mysql数据库备份之主从同步配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/1145331-20190614143233514-1133326206.png) **第九步:** 备份主服务器原有数据到从服务器 在远程腾讯云服务器中执行数据库备份命令:备份主服务器原有数据到从服务器$ mysqldump -u用户名 -p密码 --all-databases --lock-all-tables > ~/master_db.sql ![mysql数据库备份之主从同步配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/1145331-20190614142448452-2053684918.png) * --all-databases :导出所有数据库 * --lock-all-tables :执行操作时锁住所有表,防止操作时有数据修改 * ~/master_db.sql :导出的备份数据(sql文件)位置,可自己指定 同时将主服务器中备份的master_db.sql文件上传到本地Linux系统中 先从远程腾讯云服务器(主)下载到本地 ![mysql数据库备份之主从同步配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/1145331-20190614142659050-9120543.png) 在从本地上传到Linux系统中(从) ![mysql数据库备份之主从同步配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/1145331-20190614142751000-76155318.png) **第十步:** 进入本地服务器(从)在docker容器中导入数据:mysql -uroot -pmysql -h127.0.0.1 --port=8306 < ~/master_db.sql ![mysql数据库备份之主从同步配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/1145331-20190614143543800-1705024396.png) 执行完成后,主数据库内容就备份到了从服务器中 ![mysql数据库备份之主从同步配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/1145331-20190614143849322-1038151687.png) **第十一步:** 登入远程腾讯云主服务器Ubuntu中的mysql,创建用于从服务器同步数据使用的帐号 ;gutter:true;
GRANT REPLICATION SLAVE ON *.* TO ‘slave’@’%’ identified by ‘Slave@mysql520’;

刷新权限

bash;gutter:true; FLUSH PRIVILEGES;</p> <pre><code> ![mysql数据库备份之主从同步配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/1145331-20190614144337479-1128444650.png) **第十二步 获取主服务器的二进制日志信息** show variables like 'log_bin'; ;gutter:true;
SHOW MASTER STATUS;

bash;gutter:true; SHOW MASTER STATUS;</p> <pre><code> ![mysql数据库备份之主从同步配置](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/1145331-20190614144703025-552009806.png) **第十三步:** 在本地Linux系统中进入docker中的mysql,执行以下命令 ;gutter:true;
change master to master_host=’远程服务器IP(主)’, master_user=’上面创建授权的用户名’, master_password=’上面创建授权的密码’,master_log_file=’对应上面File’, master_log_pos=对应上面的Position;

  • master_host:主服务器Ubuntu的ip地址
  • master_log_file: 前面查询到的主服务器日志文件名
  • master_log_pos: 前面查询到的主服务器日志文件位置

第十四步:

启动slave服务器,并查看同步状态

bash;gutter:true;
start slave;
show slave status \G

检查状态:show slave status \G

如果标记的地方两个参数都是yes说明就启动成功了。

mysql数据库备份之主从同步配置

后面就可以测试了,在远程的服务器mysql中创建库获取操作表,再到本地查看是否也发生变化。只要数据库内容保持一致,说明就配置成功了。

Original: https://www.cnblogs.com/wendj/p/11023497.html
Author: begrateful
Title: mysql数据库备份之主从同步配置

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/576508/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Git的使用

    1.前置篇 1.1 为什么要版本控制 1.2 什么是版本控制 1.3目前流行的版本控制软件有哪些 2.原理篇 2.1 GIT 概述 2.2 代码托管平台 2.3 GIT原理 3.安…

    数据库 2023年6月11日
    084
  • python: can’t open file ‘upload.py’: [Errno 2] No such file or directory

    为了发博客方便,参考别人的文章(见参考文章:[1][2]),使用 Metaweblog 和 pycnblog([3])插件实现相关功能,将本地markdown文件同步至博客园。使用…

    数据库 2023年6月14日
    078
  • 记录下在阿里云linux上安装与配置Mysql

    环境:阿里云ECS服务器,系统为centos7.2 用户:root 参考博客: https://blog.csdn.net/kunzai6/article/details/8193…

    数据库 2023年6月16日
    0104
  • 格林童话之祖父和孙子

    从前有个很老很老的老人,眼睛花,耳朵也背,双膝还不住地发抖。每当他坐在餐桌前 吃饭时,汤匙也握不稳,常常把菜汤撒在桌布上,汤还会从嘴边流出来。儿子和媳妇都嫌弃 他,老人只好躲到灶后…

    数据库 2023年6月9日
    081
  • day04-1群聊功能

    多用户即时通讯系统04 4.编码实现03 4.5功能实现-群聊功能实现 4.5.1思路分析 群聊的实现思路和私聊的实现非常类似。 不同的是:私聊时,服务端接收到消息后,只需要找出接…

    数据库 2023年6月11日
    072
  • Mysql 实现数据库读写分离

    一、Amoeba 是什么 Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、…

    数据库 2023年5月24日
    089
  • 我应该是最后一个知道 WSL 的吧!

    前言 前段时间,我买了块固态硬盘给我的笔记本电脑装上(因为它太慢了,影响我游戏学习)。同时也重装了系统,以前一直在用 Win8.1,在上面构建了我的开发环境:在 Win8.1 上安…

    数据库 2023年6月6日
    090
  • MySQL行构造器

    子查询返回多列的办法 主要用途,项目中初版使用子查询返回一列用来限制主表,项目新版本中,表关联建改为多列时建议使用 Original: https://www.cnblogs.co…

    数据库 2023年6月9日
    069
  • ansible碎碎念

    Using a SSH password instead of a key is not possible because Host Key checking is enabled…

    数据库 2023年6月11日
    063
  • 关于.netcore即时生成缩略图踩的坑

    最近在开发一套系统,很多地方用到了缩略图,然而不同的地方用到的尺寸又不一样,上传的时候生成缩略图就没有意义了,因为你不知道会使用到哪些尺寸,于是想到即时生成的办法,前端判断图片是否…

    数据库 2023年6月9日
    085
  • 谁再说学不会 MySQL 数据库,就把这个给他扔过去!

    大家好,我是民工哥。 又是新的一年奋斗路的开启,相信有不少人农历新年之后,肯定会有所变动(跳槽加薪少不了)。所以,我把往期推送过的MySQL技术文章做了一个相关的整理,基础不好的可…

    数据库 2023年5月24日
    073
  • pycharm2022.2.1版本设置中文语言

    进入”File👉Sttings”界面 进入”Plugins(插件)”下,输入Chinese,找到”Chinese (Si…

    数据库 2023年6月14日
    089
  • volatility3-windows插件

    volatility3和volatility有很大的区别 查看镜像信息,volatility会进行分析 <span class=”ne-text”>python vol…

    数据库 2023年6月11日
    084
  • lvs负载均衡

    Lvs 一.Lvs简介 二. 体系结构 三. Lvs管理工具 1. ipvs 2. ipvsadm 四.lvs工作模式及原理 1.NAT模式 2. DR模式 3.TUN模式(隧道模…

    数据库 2023年6月14日
    089
  • 调试Archery连接SQL Server提示驱动错误

    当我们在调试Archery的时候,连接SQL Server 会报错,而MySQL部分没有问题。报错信息如下: Error: (‘01000’, "[01000] [uni…

    数据库 2023年6月16日
    0123
  • Postman调用token配置为全局变量,适用于所有接口

    操作方法 1.在Request区域→Tests区域 填写调用方法 //在Postman的Tests填写以下代码,设置Postman的环境变量token方法://断言返回200状态码…

    数据库 2023年6月14日
    085
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球