linux中mysql多主一从热备份

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:

前面的文章中http://5148737.blog.51cto.com/5138737/1570274 讲了如何进行linux中的mysql热备份,属于一主一从的情况,但是大部分情况都是多台主机备份到一台从机,节省设备嘛。

找了好久,才找到解决方法,写下来,因为真的忘的很快。

主机的配置都是一样的,修改配置文件,加入server-id 等的配置,重启,创建slave用户并授权,查看master状态,到此主机结束。

接下来就是从机了,也主要是从机了。

因为我们需要对数据库进行change master操作,如果只有一个数据库实例的话,那前者的change master设置的参数,将被后者覆盖,所以,问题来了,如何创建多个数据库实例。

为从机创建多个数据库实例

  1. 修改从机配置文件

    采用的是mysqld_multi的方法,主要修改配置文件/etc/my.cnf,具体的mysqld_multi的用法自己度娘吧,我这里直接贴出我的配置了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
[mysqld_multi]
mysqld     =  /usr/bin/mysqld_safe
user       = root
password   = chinacache.gz
log =  /var/lib/mysql/multi .log    <!--错误日志打印处 -->
 
 
[mysqld3305]     <!--模块名,mysqldXX  xx处只能为数字 -- >
port            = 3305       <!--指定端口 -->
log-error= /var/lib/mysql3305/mysqld-error .log   <!--指定错误日志 -->
pid- file = /var/lib/mysql3305/mysqld .pid          <!--指定pid -->
datadir= /var/lib/mysql3305                        <!--指定basedir -->
socket= /var/lib/mysql3305/mysql .sock            <!--指定basedir -->
server- id        = 195                           <!--指定server- id -->
log-bin= /var/lib/mysql3305/mysqld-relay-bin
replicate- do -db=cdnquality                      <!--指定主机中需要备份的数据库 -->
user       = mysql
 
 
[mysqld3306]                            <!--多个数据库实例,来多个模块 -->
port            = 3306
log-error= /var/lib/mysql3306/mysqld-error .log
pid- file = /var/lib/mysql3306/mysqld .pid
datadir= /var/lib/mysql3306
socket= /var/lib/mysql3306/mysql .sock
server- id        = 196
log-bin= /var/lib/mysql3306/mysqld-relay-bin
replicate- do -db=vbumng
user       = mysql


2.创建多个数据库实例

  

1
2
mysql_install_db  --datadir= /var/lib/mysql3305  --user=mysql
mysql_install_db  --datadir= /var/lib/mysql3306  --user=mysql

给数据库授予 mysql 用户的权限

1
2
chown  -R  mysql   /var/lib/mysql3305
chown  -R  mysql   /var/lib/mysql3306

3.启动多个数据库实例

这里启动不是采用常规的 /etc/init.d/mysqld start 启动,需要采用mysqld_multi的方式启动

1
2
3
4
5
mysqld_multi --defaults- file = /etc/my .cnf start 3306    // 这里的3306对应my.cnf中的模块名
mysqld_multi --defaults- file = /etc/my .cnf start 3305
 
// 可以查看启动状态  
netstat  -ntlp| grep  mysql

ps:如果这里可以看到每个启动的数据库实例的话,那基本就大功告成了。


4.分别进入每个数据库实例,进行change master操作

  进入不同的数据库的时候,要指定port或者sock

1
2
3
4
5
6
7
8
9
10
11
mysql -uroot -p -P 3305  -S  /var/lib/mysql3305/mysql .sock
从主机复制需要备份的数据库
对数据库进行change master 配置
启动slave  start slave
查看slave状态      show slave status\G
 
mysql -uroot -p -P 3306  -S  /var/lib/mysql3306/mysql .sock
从主机复制需要备份的数据库
对数据库进行change master 配置
启动slave  start slave
查看slave状态     show slave status\G

ps:进入不同数据库实例后,操作的步骤就一样的,可以参考前面的一主一从的情况





 

     本文转自布拉君君 51CTO博客,原文链接:http://blog.51cto.com/5148737/1570305,如需转载请自行联系原作者





相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
14天前
|
关系型数据库 MySQL Unix
linux优化空间&完全卸载mysql——centos7.9
linux优化空间&完全卸载mysql——centos7.9
52 7
|
17天前
|
监控 关系型数据库 MySQL
Linux MySQL相关启动命令
【4月更文挑战第22天】
|
12天前
|
关系型数据库 MySQL Shell
备份 MySQL 的 shell 脚本(mysqldump版本)
【4月更文挑战第28天】
23 0
|
4天前
|
关系型数据库 MySQL 数据管理
MySQL通过 bin-log 恢复从备份点到灾难点之间数据
MySQL通过 bin-log 恢复从备份点到灾难点之间数据
|
4天前
|
存储 安全 关系型数据库
MySQL中使用percona-xtrabackup工具 三种备份及恢复 (超详细教程)
MySQL中使用percona-xtrabackup工具 三种备份及恢复 (超详细教程)
|
4天前
|
关系型数据库 MySQL Linux
Linux CentOs7 安装Mysql(5.7和8.0版本)密码修改 超详细教程
Linux CentOs7 安装Mysql(5.7和8.0版本)密码修改 超详细教程
|
10天前
|
弹性计算 关系型数据库 MySQL
|
11天前
|
存储 关系型数据库 MySQL
linux安装MySQL8.0,密码修改权限配置等常规操作详解
linux安装MySQL8.0,密码修改权限配置等常规操作详解
|
11天前
|
弹性计算 关系型数据库 MySQL
备份MySQL(mysqldump 版本)
【4月更文挑战第29天】
18 0