我遇到的问题

我先后在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和挂载文件,在我的另一篇文章里有详细描述。点此跳转

最新文章

  1. 在CentOS 7 中 安装 VSFTP
  2. ASP.NET Identity V2
  3. 一个简单的Linq to TreeNode
  4. 计算机网络自学之路------IP协议(1)
  5. map遍历方法
  6. ORM框架Entity Framework
  7. tensorflow2
  8. tomcat安全配置(二)
  9. C#入门篇6-9:字符串操作 不值一提的函数【不看也行】
  10. Input框去掉蓝色边框
  11. Jquery not选择器实现元素显示隐藏
  12. java_annotation_02
  13. Js字面变量,定义问题
  14. IOS UITableView单条刷新,数据不刷新解决方案
  15. CSS使用心得小结
  16. [LeetCode] Find Largest Value in Each Tree Row 找树每行最大的结点值
  17. 对于python爬虫urllib库的一些理解(抽空更新)
  18. Android为TV端助力之WebView开发踩坑一
  19. org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Cannot open con
  20. 【mysql】 mysql忘记密码

热门文章

  1. Elasticsearch核心技术与实战,性能是真牛
  2. Spring Cloud微服务限流之Sentinel+Apollo生产实践
  3. 并发编程-线程池&J.U.C
  4. ret2dl32
  5. OpenPAL3:仙三开源版的第二个小目标 Accomplish!
  6. Go-25-文件管理
  7. Day01_06_Java注释
  8. NoSQL & Redis 介绍、缓存穿透 & 击穿 & 雪崩
  9. 日志功能 - 使用 conf 配置文件
  10. AdaBoostClassifier参数