主从双机热备份

场景

我的个人博客部署在windows服务器上,现未防止数据丢失,准备做一个灾备,即使用另一台服务器来同步windows服务器上的数据。

关于双机热备份

由于水平有限,只能按照自己的理解来说明。

简单来说就是两个数据库,一个主数据库A(master),一个从数据库B(slave),B通过读取A的bin-log文件,将A执行内容(insert、delete、update)在自己的数据库中再执行一次。当然这里主-从是相对的,也可以是B是master,A是slave,这样就能够实现对任意一台数据库的操作能够同步到另一台数据库上。

下面是一个常见的异地双机热备份部署图。

然后就开始来将我的博客数据库作备份了。

环境

windows server 2008 : mysql 5.6

centos : mariadb 10.1

部署图

如下,画了一个很简单的部署图。

因为目前只是将应用放在windows服务器上,并没有在centos上部署,所以可以看到centos服务器上只有一个mariadb。如果要在centos上也部署应用,还需要使用nginx作负载均衡才有意义。我暂且只将centos上的数据库作为从数据库,用来实时备份windows上的数据

配置window上的mysql为主数据库

mysql版本为5.6,没有开启binlog,手动在配置文件中开启。

在mysql目录下有一个my.ini,打开编辑,在[mysqld]下添加如下内容:

server-id=1
log-bin=mysql-binbinlog-do-db=要备份的数据库

然后重启mysql,执行:

show master status;

主数据库配置到这里就好了。

注意:

因为需要远程连接,所以mysql必须配置为允许远程连接。方法如下:

首先检查3306端口是打开。若是云服务器,需要在控制台添加安全组,允许3306端口;

然后设置原创访问的用户和密码:

set password for user_name@host_name=password('pwd');

完了之后可以测一下:

mysql -h host_name -uroot -p

配置centos上的mariadb为从数据库

mariadb其实是和mysql差不多的,语法完全一样。

还是先找到配置文件,在/etc/my.cnf

执行:

vi /etc/my.cnf

编辑内容,在配置中添加:

log-bin=mysql-bin
#这里的id不要和主数据库重复即可
server-id=2#需要备份的数据库
replicate-do-db=db_blog
#中间日志
relay_log=mysql-relay-bin
#从数据库上的更新日志也记录下来
log-slave-updates=ON

然后重启mariadb:

service mariadb restart

重启之后配置主数据库信息:

change master to
master_host = '数据库服务器ip',
master_user = 'root',
master_password = '******',
master_log_file='mysql-bin.000001',
master_log_pos = 120;

这里的mysql-bin.000001和master_log_pos都可以在主数据库上用show master status获取到

设置完后,查看slave状态:

show slave status;

注意红色框里的,两项必须都为YES才行。

然后在主数据库(windows)上的mysql插入一条数据,在从数据库(centos)上可以看到新插入的数据。表明备份成功。

将同一个数据库配置为主从

前面说了主-从是相对的,所以这里也可以将windows上的mysql配置为从数据库,而centos上的配置为主数据库,过程类似,只是将以上过程反过来即可。

至此一个简单的异地双击热备份就做完了。但是只是一个简单的备份,并没有考虑到很多问题。

遇到的问题

1.从数据库出现:Slave_IO_Running:NO

原因:master_host写错了,写成从数据库自己的了。

2.show salve status出现两个NO

原因:忘记配置binlog-do-db了

3.在从主数据库上导出数据并导入到从数据库时,出现如下错误:

Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

原因:

mysql低版本(5.5及一下)对TIMESTAMP列有特殊要求,不能存在指定了两个默认值的TIMESTAMP列。

解决办法:

首先想到用触发器解决,但是这个列是要求在update时自动更新为当前时间的,所以如果添加update触发器就会陷入死循环。因为在update时触发触发器,触发器内部又是对该表的update,将会一直update下去。所以这个方法不使用。

那么只有两个办法了,那个字段值在程序代码中设置进去,但是这样要改动代码,而且不方便。所以决定升级mariadb。

找到一篇参考文章,链接如下:

https://www.vultr.com/docs/how-to-install-mariadb-10-1-on-centos-7

参考这篇文章就行了。

注意将baseurl修改为:

baseurl = https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.1.25/yum/rhel7-amd64

不然速度很慢,可能下载不成功。

升级完成后再配置一下,再导入数据就没有问题了。


老吴的博客- 关注Java,致力成为后端全栈工程师。

异地主从双机热备份实战相关推荐

  1. mysql 双向热备份_MySQL双机热备份

    系统: CentOS release 6.6 (Final) MySQL: mysql  Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) ...

  2. Sqlserver 双机热备份_主数据库发布(主从备份)

    俩台电脑上的Sqlserver数据库  实现 一台电脑数据库更新后 另一台电脑数据库同步 这一篇设置主数据库 怎么发布 按步骤设置主数据库 1)开启Sqlserver代理 启动模式为自动 代理位置 2 ...

  3. Sqlserver 双机热备份_从数据库发布(主从备份)

    Sqlserver 双机热备份(主从备份)(一) 这片写订阅数据库 就是从数据库 设置方法 1)复制>本地订阅>右击 新建订阅 2)看图 3)选择sqlserver发布服务器 4)注意 这 ...

  4. mysql 双机热备 原理,MySQL双机热备份的配置及原理

    A.MySQL双机热备份概述 双机热备就是使用MySQL提供的一种主从备份机制实现.所谓双机热备其实是一个复制的过程,复制过程中一个服务器充当主服务器,一个或多个服务器充当从服务.这个复制的过程实质上 ...

  5. MySQL双机热备份实施方案

    1.MySQL数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题.还好MySQL数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中.实现MySQL数据库的 ...

  6. centos7 手动安装mysql8.0 并实现双机热备份 2022-1-1

    环境:centos7.9-Minimal mysql:8.0.27 操作权限:root 主目录:/root 由于本人近期yum安装mysql反复报错,现整理出一篇纯手动安装mysql并组建双机热备份教 ...

  7. mysql 双机备份_MySQL的高可用之-双机热备份

    MySQL的高可用 1.MySQL数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题.还好MySQL数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中.实 ...

  8. mysql冷热备份方案_MySQL双机热备份实施方案

    MySQL双机热备份实施方案 1.MySQL数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题.还好MySQL数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数 ...

  9. 双机热备份VRRP当接入方式为PPPOE拨号的图文教程

    [原创]双机热备份VRRP当接入方式为PPPOE拨号的图文教程<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:of ...

最新文章

  1. 加法神经网络--AdderNet: DoWe Really Need Multiplications in Deep Learning?
  2. 关于无法用127.0.0.1连接数据库的解决办法
  3. Ubuntu 下的云笔记Nixnote (Evernote)
  4. SQL基础【二十、索引】(超细致版本,前理论,后实践,应对sql面试绰绰有余)
  5. halcon read_ocr_trainf 从文件中读取训练字符并转换为图像
  6. 如何在macOS中查找和删除潜在的驱动程序冲突?
  7. horizontalscrollview+textview简单版
  8. openSSL AES 加密引擎代码分析
  9. 操作WORD文件:使用MSWORD.OLB组件将RichTextBox中的文本保存为WORD格式文件。
  10. 2022熔化焊接与热切割复训题库模拟考试平台操作
  11. 演讲的思路锻炼,逆向思维需要刻意练习吗?
  12. Halcon 算子 Orientation_region
  13. 设置开机自动启动程序,需要管理员权限程序
  14. 为什么我加了过滤器然后就登不进去了_石英砂过滤器和活性炭过滤器应用区别...
  15. 抖音小程序Tiktok教程之 01 编写您第一个hello world程序(含视频教程)
  16. 最新车载CarPlay盒子中方案内部配置参数
  17. html项目符号正方形,HTML无序列表| HTML项目符号列表
  18. 堡垒机和防火墙的区别是什么?能防删库跑路吗?
  19. typedef——用法总结
  20. linux双wan网关负载均衡,R6400双线双拨,负载均衡解决方案

热门文章

  1. linux基本命令打开文件,Linux系统操作初体验 通过命令打开txt文件编辑并保存退出...
  2. 一年轻女董事长对同龄人的忠告:不想穷的要看看
  3. 区块链以及区块链技术入门详解
  4. WGS84对比CSCS2000
  5. Android 热修复使用Gradle Plugin1.5改造Nuwa插件
  6. Hystrix(6) 深入 Hystrix 执行时内部原理
  7. 使用回归模型预测星巴克消费者的购物习惯
  8. 干式试验变压器、油式试验变压器,充气式试验变压器有什么不同?
  9. mkfifo函数解析及应用
  10. OpenCV-C++对图像像素的四种遍历操作