我遇到的问题

我先后在BAT三大云服务器商购买了学生机,配置如下

  • 百度云2核/4G
  • 阿里云1核/2G
  • 腾讯云1核/2G

我的解决方案

由于我不知道百度云的续费规则,导致买了2核/4G的服务器之后以为像阿里和腾讯的一样可以原价续费,就把我的个人博客相关的东西都部署在了百度云上面。然后我就想着快发工资了,看看怎么续费百度云,结果发现这款学生机只有一个月的使用时间,所以,我不得不另寻他法。在确定了阿里云和腾讯云是支持符合学生身份期限内可以原价续费之后,我决定把博客迁移到这两台机器上。为了能防止其中一个突然到期,来不及迁移,或者说为了避免再次迁移的麻烦,我决定在阿里云和腾讯云上各自部署一个mysql,做主从。

我预期的架构

graph TB
subgraph 客户
客户-->浏览器
end
subgraph 阿里云
浏览器-->nginx
nginx-->博客实例1
博客实例1-->主MySQL
博客实例1-->本地文件系统1
end
subgraph 腾讯云
主MySQL-->从MySQL
nginx-->博客实例2
博客实例2-->主MySQL
博客实例2-->本地文件系统2(挂载本地文件系统1)
end

其中两个主机共享一个保存博客数据的文件,通过nfs挂载的方式共享同一文件夹,访问时通过nginx做负载均衡。

# 服务端客户端都执行
yum install rpc-bind
yum install nfs-utils
# 服务端
vim /etc/exports
/root/.halo (rw,no_root_squash)
# 客户端
mount -t nfs 101.132.174.XX:/root/.halo /root/.halo

然后我发现打好的博客jar包里会在数据库中存储ip信息,导致两个博客打开的内容都指向一个ip,从而产生错误,无法完成这个架构。又懒得从新修改打包等等,故而放弃了这个架构。

最终采用的架构

graph TB
subgraph 客户
客户-->浏览器
end
subgraph 阿里云
浏览器-->博客实例
博客实例-->主MySQL
博客实例-->本地文件系统
end
subgraph 腾讯云
主MySQL-->从MySQL
end

打包/docker/mysql/data下的数据复制并解压到腾讯云和阿里云的/docker/mysql/data下

阿里云主my.cnf

[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
log-bin=mysql-bin # 开启binlog
binlog-format=ROW # 选择ROW模式
server_id=1
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

腾讯云从my.cnf

[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
log-bin=mysql-bin # 开启binlog
binlog-format=ROW # 选择ROW模式
server_id=2 # server_id不要重复
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

在主上查询当前mysql状态:

show master status;
File Position Binlog_Do_DB Binlog_Ignore_DB Executed_Gtid_Set
mysql-bin.000004 154

进入从容器中登录mysql:

CHANGE MASTER TO MASTER_HOST='101.132.174.XX',MASTER_USER='root',MASTER_PASSWORD='XXX',MASTER_LOG_FILE='mysql-bin.000004',MASTER_LOG_POS=154;
start slave;
show slave status\G;



至此,完成了我的博客系统迁移工作。

遇到的问题

  • mysql uuid 重复,进入其中一个数据库,删除掉auto.cnf再重启mysql就行了。
  • 我用的mysql是docker挂载的方式,具体如何在docker中跑mysql和挂载文件,在我的另一篇文章里有详细描述。点此跳转

记一次MySQL(5.7版本)数据库的主从同步和备份的更多相关文章

  1. InnoSQL HA Suite的实现原理与配置说明 InnoSQL的VSR功能Virtual Sync Replication MySQL 5.5版本引入了半同步复制(semi-sync replicaiton)的功能 MySQL 5.6支持了crash safe功能

    InnoSQL HA Suite的实现原理与配置说明  InnoSQL的VSR功能Virtual Sync Replication MySQL 5.5版本引入了半同步复制(semi-sync repl ...

  2. mysql数据库配置主从同步

    MySQL主从同步的作用 .可以作为一种备份机制,相当于热备份 .可以用来做读写分离,均衡数据库负载 MySQL主从同步的步骤 一.准备操作 .主从数据库版本一致,建议版本5.5以上 .主从数据库数据 ...

  3. MySQL数据库的主从同步

    什么要进行数据库的主从同步? 防止单点故障造成的数据丢失 主从复制的原理 MySQL从数据库开启I/O线程,向主服务器发送请求数据同步(获取二进制日志) MySQL数据库开启I/O线程回应从数据库 从 ...

  4. mysql数据库的主从同步,实现读写分离 g

    https://blog.csdn.net/qq_15092079/article/details/81672920 前言 1 分别在两台centos 7系统上安装mysql 5.7 2 master ...

  5. MySQL数据库的主从同步复制配置

    一.主从同步机制原理 MYSQL主从同步是在MySQL主从复制(Master-Slave Replication)基础上实现的,通过设置在Master MySQL上的binlog(使其处于打开状态), ...

  6. mysql数据库的主从同步,实现读写分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器来处理如此多的数据库连接操作,数据库必然会崩溃,特别 ...

  7. Mysql安装多版本数据库

    1.下载对应版本压缩包 2.解压缩文件 3.到解压缩文件,添加my.ini文件,修改相关的配置,如端口,文件路径等 # For advice on how to change settings ple ...

  8. Docker搭建mysql:5.7版本数据库

    搭建MySQL: 1.启动测试mysql,拷贝容器内配置文件到宿主机 mkdr -P /server/docker/mysql/{data,conf} docker run -e MYSQL_ROOT ...

  9. MySQL数据库的主从同步实现及应用

    >>主从同步机制及应用 读写分离(Read/Write Splitting)让主数据库处理事务性增.改.删操作(INSERT.UPDATE.DELETE),从数据库处理SELECT查询操作 ...

随机推荐

  1. 在Linux CentOS上搭建Jmeter压测环境

    本文的主要内容是介绍如何在Linux CentOS 服务器上面搭建Jmeter的压测环境整个详细的流程,来满足我们日常工作中对于压力测试环境搭建.压力测试执行过程的需求. 一.首先我们要准备四个东西, ...

  2. yolov2算法浅见

    因为最近在复习yolo系列的算法,就借着这个机会总结一下自己对这个算法的理解,由于是第一次写算法类的博客,文中有什么错误和行文不通的地方还希望大家指正. yolov2与yolov1有很多改变. 最重要 ...

  3. 1-3 Postman 注册账号与登录

    1.为什么要注册postman账号 注册postman账号是免费的.当注册并登陆一个postman账号后,用户可以获得如下权限. (1)同步和备份历史,集合,环境,和预置头. (2)可以轻松的处理来自 ...

  4. sqlserver2018 报错恢复

    报错: Description: SQL Server 检测到基于一致性的逻辑 I/O 错误 校验和不正确(应为: 0xb2b1af16,但实际为: 0xac9393a2).在文件 'C:\Progr ...

  5. POJ 1961 KMP(当前重复次数)

    题意:       前缀重复次数,举个例子,aaa 2的位置2个a,3的位置3个a abcabcabc 6的位置两个abcabc,9的位置三个abcabc.... 思路:      KMP基础题目之一 ...

  6. android添加账户流程分析涉及漏洞修复

    android修复了添加账户代码中的2处bug,retme取了很酷炫的名字launchAnyWhere.broadAnywhere(参考资料1.2).本文顺着前辈的思路学习bug的原理和利用思路. 我 ...

  7. POJ1149 PIGS(最大流)

    题意:       有一个人,他有m个猪圈,每个猪圈里面有一定数量的猪,但是每个猪圈的门都是锁着的,他自己没有钥匙,只有顾客有钥匙,一天依次来了n个顾客,(记住是依次来的)他们每个人都有一些钥匙,和他 ...

  8. 阿里云短信服务 PHP

    1.开通短信服务后,进入控制器->短信服务 2.点击国内消息,配置签名,模板(这里不作详细介绍) 3.点击进入左侧帮助文档里面,找到PHP sdk,Composer命令直接安装 4.获取acce ...

  9. mongo中常用的命令

    命令使用mongo shell 执行 1.mongo中增加新字段 mongo shell 进入后执行use table选中要添加字段的库 db.getCollection('表名').update({ ...

  10. Spring Security 入门篇

    本文是一个笔记系列,目标是完成一个基于角色的权限访问控制系统(RBAC),有基本的用户.角色.权限管理,重点在Spring Security的各种配置.万丈高楼平地起,接下来,一步一步,由浅入深,希望 ...