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)

大家都在看

  • MySQL

    数据库:英文单词DataBase,简称DB。按照一定格式存储数据的一些文件的组合。顾名思义:存储数据的仓库,实际上就是一堆文件。这些文件中存储了具有特定格式的数据。数据库管理系统:…

    数据库 2023年6月16日
    071
  • macOS快捷键

    1. 最小化所有应用程序 command+option+h+m 2. 同应用窗口切换 command &#xFF5E; 3. 截图 "&#x5168;&a…

    数据库 2023年6月14日
    081
  • 数据分析大作战,SQL V.S. Python,来看看这些考题你都会吗 ⛵

    💡 作者:韩信子@ShowMeAI📘 数据分析实战系列:https://www.showmeai.tech/tutorials/40📘 本文地址:https://www.showm…

    数据库 2023年6月14日
    084
  • 集合自序整理集

    集合和数组一样都是对多个数据进行存储操作的容器 * – 集合长度可变,数组长度固定 – 集合可以存储不同数据类型元素,数组只能存储单一数据类型元素 &#82…

    数据库 2023年6月9日
    0117
  • 详解Threejs中的光源对象

    光源的分类 AmbientLight(环境光), PointLight(点光源), SpotLight(聚光源) 和 DirectionalLight(平行光)是基础光源 Hemi…

    数据库 2023年6月11日
    0120
  • 回溯问题学习总结

    回溯问题 三种情况 每种情况都有子集,组合,排列三种题型 无重复元素不可复选 //&#x5B50;&#x96C6;&#x95EE;&#x9898; …

    数据库 2023年6月16日
    095
  • Golang 接口(interface)

    Go 语言的接口遵守LSP(里氏替换原则),即 一个类型可以自由地被另一个满足相同接口的类型替换。 接口类型具体描述了一系列方法的集合,一个实现了这些方法的具体类型是这个接口类型的…

    数据库 2023年6月16日
    080
  • MySql 事务隔离级别简述,以及为什么互联网项目用:读已提交(Read Commited)这个隔离级别

    MySql 事务隔离级别 事务隔离级别 脏读 不可重复读 幻读 读未提交(read-uncommitted) 是 是 是 读已提交(read-committed) 否 是 是 可重…

    数据库 2023年6月16日
    097
  • 关于在linux上部署.netcore项目,只能Linux访问,不能外部主机访问的问题

    在我们在Linux上部署完.netcore项目之后,是进入到部署项目的文件夹之下启动项目,比如我的就是在www/core文件夹下。 首先cd 之后我们直接启动项目 之后我们在win…

    数据库 2023年6月11日
    0177
  • python中set()函数的用法

    set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。 set([iterable]) iterable — 可迭代对象…

    数据库 2023年6月11日
    087
  • fiddler相关随笔(网络异常、证书问题、配置代理)

    fiddler中遇到的坑 最近用fiddler实在是太频繁,经常开关,也不清理之前的代理配置,导致很多时候,电脑连不上网,大概有以下场景 * fiddler提示某网站要求上传相关证…

    数据库 2023年6月6日
    092
  • Dapper.FastCRUD与Dapper中的CustomPropertyTypeMap冲突

    在使用Dapper.NET时,由于生成的实体的属性与数据库表字段不同(如表字段叫USER_NAME,生成的对应的实体属性则为UserName)。 这时需要使用Dapper中的Cus…

    数据库 2023年6月14日
    0107
  • 事物的隔离性和MVCC

    事物的隔离性 mysql的服务端是支持多个客户端同时与之连接的,每个客户端可能还并发了好几个连接,所以mysql是需要同时处理很多事情的,每一件独立的事情就叫做事务。我们知道事务有…

    数据库 2023年5月24日
    095
  • MySQL 数据库

    内容概要 数据演变 数据存储发展 数据库类型 SQL与NoSQL的由来 下载安装MySQL MySQL文件目录 系统服务 密码相关 8.0版本的小问题 基本SQL语句 数据库的增删…

    数据库 2023年5月24日
    083
  • 设计模式之(8)——代理模式

    定义:为某个对象提供一个代理,以达到对这个对象的访问控制,代理类和委托类有共同的父类或者父接口,这样可以在使用委托类的地方都可以使用代理对象来替换(这符合程序设计中的”…

    数据库 2023年6月14日
    085
  • 细数线程池五大坑,一不小心线上就崩了

    系统性能优化的几种常用手段是异步和缓存。因此我们常常使用线程池异步处理一些业务。 线程池的使用还是相对比较简单的,首先创建一个线程池,然后通过execute或submit执行任务。…

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