阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL架构备份之双机热备

548次阅读
没有评论

共计 4951 个字符,预计需要花费 13 分钟才能阅读完成。

M–S 架构:实现双机热备(AB 复制)

1、可以降低 master 读压力

2、可以对数据库做“热备”,热备只能解决硬件 master 硬件故障,软件故障等重大故障问题,但无法解决人为误操作导致的逻辑故障(列如输入错误的 SQL 语句把重要的记录删除了),所以常规的备份是必须。

环境准备及要求:

1、关闭防火墙和 selinux

2、hosts 文件中两台服务器主机名和 ip 地址一一对应起来

3、系统时间需要同步

4、masterslave 的数据库 版本保持一致(系统版本保持一致)

思路:

1、master必须 开启二进制日志

2、slave必须 开启中继日志

3、masterslaveserver-id 必须不一样  范围(2^23-1)

4、masterslave初始数据一致

M–S 架构操作步骤

环境:

master:192.168.1.166

slave:192.168.1.114

1、环境准备

# master:
[root@master ~]# vim /etc/hosts
192.168.1.114   slave

# slave:
[root@slave ~]# vim /etc/hosts
192.168.1.166   master

2、修改配置文件

# master:
root@master ~]# vim /etc/my.cnf
log-bin=mysql-bin
server-id = 1

# slave:
[root@slave ~]# vim /etc/my.cnf
server-id = 2
relay-log=/data/DB/relay.log
MySQL 架构备份之双机热备

# 扩展说明:有时候,我们只是想 master 向 slave 上面同步某一个库,那么就可以使用下面的参数,同样是加在 /etc/my.conf 配置文件里面:binlog-do-db=需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可
binlog-ignore-db=不需要复制的数据库苦命,如果复制多个数据库,重复设置这个选项即可


示例:master 的/etc/my.conf
server-id = 1
log-bin=mysql-bin     #设定生成的 log 文件名;binlog-do-db=demo    #需要同步的二进制数据库名;binlog-ignore-db=information_schema    #不同步的二进制数据库名, 如果不设置可以将其注释掉;
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=test
log-slave-update    #把更新的记录写到二进制文件中;slave 的/etc/my.conf
server-id = 2    # 如果有多个 依次添加即可,不能相同
log-bin=mysql-bin
relay-log=/data/DB/relay.log
# 如果想要做级联架构,也就是 master 复制到 slave 上面,slave 再复制到 slave2 上面,同样在 slave 上面也可以控制需要复制的数据库,replicate-ignore-db=mysql
replicate-do-db=demo
log-slave-update    # 级联 中级 slave 必须开启此参数

# MySQL 主从复制参数大全 参考:https://www.cnblogs.com/qianniao12/p/8011222.html

针对单个数据库配置主从

3、数据初始化一致

情况 1:两边都没有业务数据,直接初始化 master 和 slave 的数据库

情况 2:master 上面有业务数据

MySQL 架构备份之双机热备

masteer:1>停止数据库
[root@master ~]# /etc/init.d/mysqld stop

2>物理级别备份
[root@master ~]# cd /data/DB/ && ll
[root@master DB]# tar -cvzf /tmp/mysql.tar.gz *
[root@master DB]# scp /tmp/mysql.tar.gz 192.168.1.114:/tmp

slave:3>slave 端进行数据恢复
[root@slave ~]# cd /data/DB/ && ll
[root@slave DB]# tar -xf /tmp/mysql.tar.gz -C .
[root@slave DB]# /etc/init.d/mysqld start

master 和 slave:4>查看 slave 和 master 上面的数据是否一样
[root@master DB]# echo "show databases;" | mysql -p123 
[root@slave DB]# echo "show databases;" | mysql -p123

示例 master 上面有业务数据

4、在 master 上面创建授权用户及查看 binlog 信息

master:1>锁表,先加锁,防止两边数据不一致; 如果业务还未上线,这个就没有必要了
mysql> flush tables with read lock;

2>创建授权用户
mysql> grant replication slave on *.* to 'slave'@'192.168.1.114' identified by '123';

3>查看 binglog 信息,只有打开二进制日志,这句命令才有结果,表示当前数据库的二进制日志写到什么位置
mysql> show master status\G
*************************** 1. row ***************************
             File: mysql-bin.000003
         Position: 331
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.02 sec)
# 注意:此时千万不要往里面写东西

5、在 slave 上配置同步信息

slave:mysql> change master to master_host='192.168.1.166', master_user='slave', master_password='123', master_port=3306, master_log_file='mysql-bin.000003', master_log_pos=331;
参数说明:master_host:master ip
    master_user:同步用户
    master_password:密码
    master_port:端口
    master_log_file:master 上面查看到的二进制日志名
    master_log_pos:master 上面查看到的 POS 值
    
mysql> show slave status \G
查看 slave 发现报错
解决:1. 检查配置文件里 server-id 是否不一致
    2. 检查数据目录里的 auto.cnf 文件的 uuid 是否一样,如果一样将 slave 中的 auto.cnf 删除后将 master 和 slave 的服务重启。mysql> show slave status \G;
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

6、测试验证

MySQL 架构备份之双机热备

测试一:先查看 master 和 slave 的 ceshi 库中 users 表的信息
    master:mysql> select * from ceshi.users;
    +----+-------+----------+-----------------+
    | id | name  | password | address         |
    +----+-------+----------+-----------------+
    |  1 | zhang | 1234     | NULL            |
    |  2 | wang  | 4321     | 湖北武汉        |
    |  3 | li    | 5678     | 北京海淀        |
    |  4 | liu   | 1122     | NULL            |
    |  5 | zou   | 4311     | 湖南长沙        |
    |  6 | zhou  | 6789     | 北京八宝山      |
    |  7 | ding  | 7891     | 深圳西丽        |
    +----+-------+----------+-----------------+
    7 rows in set (0.00 sec)

    slave:mysql> select * from ceshi.users;
    +----+-------+----------+-----------------+
    | id | name  | password | address         |
    +----+-------+----------+-----------------+
    |  1 | zhang | 1234     | NULL            |
    |  2 | wang  | 4321     | 湖北武汉        |
    |  3 | li    | 5678     | 北京海淀        |
    |  4 | liu   | 1122     | NULL            |
    |  5 | zou   | 4311     | 湖南长沙        |
    |  6 | zhou  | 6789     | 北京八宝山      |
    |  7 | ding  | 7891     | 深圳西丽        |
    +----+-------+----------+-----------------+
    7 rows in set (0.11 sec)

    在 master 上面删除数据,然后回到 slave 上面查看
    master:mysql> delete from ceshi.users where id>=3;
    mysql> select * from ceshi.users;
    +----+-------+----------+--------------+
    | id | name  | password | address      |
    +----+-------+----------+--------------+
    |  1 | zhang | 1234     | NULL         |
    |  2 | wang  | 4321     | 湖北武汉     |
    +----+-------+----------+--------------+
    2 rows in set (0.00 sec)

    slave:mysql> select * from ceshi.users;
    +----+-------+----------+--------------+
    | id | name  | password | address      |
    +----+-------+----------+--------------+
    |  1 | zhang | 1234     | NULL         |
    |  2 | wang  | 4321     | 湖北武汉     |
    +----+-------+----------+--------------+
    2 rows in set (0.00 sec)


测试二:停止 slave 上的服务
    [root@slave ~]# /etc/init.d/mysqld stop
    
    在 master 上面插入数据并查看
    mysql> insert into ceshi.users(name, password, address) values("ceshi","666666","广东深圳");
    Query OK, 1 row affected (0.04 sec)

    mysql> select * from ceshi.users;
    +----+-------+----------+--------------+
    | id | name  | password | address      |
    +----+-------+----------+--------------+
    |  1 | zhang | 1234     | NULL         |
    |  2 | wang  | 4321     | 湖北武汉     |
    |  8 | ceshi | 666666   | 广东深圳     |
    +----+-------+----------+--------------+
    3 rows in set (0.00 sec)
    
    再次启动 slave 并查看是否有更新
    [root@slave ~]# /etc/init.d/mysqld start
    mysql> select * from ceshi.users;
    +----+-------+----------+--------------+
    | id | name  | password | address      |
    +----+-------+----------+--------------+
    |  1 | zhang | 1234     | NULL         |
    |  2 | wang  | 4321     | 湖北武汉     |
    |  8 | ceshi | 666666   | 广东深圳     |
    +----+-------+----------+--------------+
    3 rows in set (0.00 sec)

测试验证

总结:

1、测试表明只能在 master 端上面进行写然后再同步到 slave 端。

2、如果 slave 服务关闭后可以不用管理,然后再在 master 端可以继续写入,等到 slave 服务启动后,会自动同步到 slave 端。

 

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-28发表,共计4951字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
8009051
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...