我遇到的问题

我先后在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. spring-cloud-gateway 服务网关

    Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关.网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发.权限校验.限流控制等 ...

  2. Qt中检查槽函数connect是否正确

    环境:VS2017+Qt插件 一般情况下VS+QT环境下运行的QT程序输出信息需要在调试模式的输出栏可以看到,由于太多信息所以导致查看不方便(当然也可以在筛选选项中筛选信息). 有更方便查看输出信息的 ...

  3. 如何在CSS中映射的鼠标位置,并实现通过鼠标移动控制页面元素效果

    映射鼠标位置或实现拖拽效果,我们可以在 JavaScript 中做到这一点.但实际上,在CSS中有更加简洁的方法,我们可以在不使用JavaScript 的情况下,仍然可以实现相同的功能! 只使用CSS ...

  4. NumPy之:数据类型

    目录 简介 数组中的数据类型 类型转换 查看类型 数据溢出 简介 我们知道Python中有4种数字类型,分别是int,float,bool和complex.作为科学计算的NumPy,其数据类型更加的丰 ...

  5. Mybatis3源码笔记(五)mapperElement

    1.四种解析mapper方式 : package,resource,url,class. <mappers> <mapper resource="org/apache/ib ...

  6. Day02_13_Javadoc_生成帮助文档

    JavaDoc 命令:javadoc -encoding UTF-8 -charset UTF-8 Doc.java 执行该命令后,会在java目录生成index.html打开就可以看到生成的文档了 ...

  7. 2021 年最值得推荐的 7 个 Angular 前端组件库 - DevUI

    摘要:DevUI 是一款面向企业中后台产品的开源前端解决方案,它倡导沉浸.灵活.至简的设计价值观,提倡设计者为真实的需求服务,为多数人的设计,拒绝哗众取宠.取悦眼球的设计.如果你正在开发 ToB 的工 ...

  8. vue route 跳转

    index.js { path: '/grouporder/grouporderdetail/id/:id', name: '/grouporder/grouporderdetail/id/', co ...

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

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

  10. 在Android so文件的.init、.init_array上和JNI_OnLoad处下断点

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/54233552 移动端Android安全的发展,催生了各种Android加固的诞生, ...