mysql主从复制-双机热备份-rsync文件备份

一、冷备份

冷备份即在停掉mysql服务的情况下对数据文件进行手动复制备份。
1)为了保证所备份数据的完整性,在停止 MySQL 数据库服务器之前,需要先执行 FLUSH TABLES 语句将所有数据写入到数据文件的文本文件里。
在这里插入图片描述

2)停掉 MySQL 服务,命令如下:
mysqladmin -uroot -p shutdown
在这里插入图片描述

3)备份过程就是复制整个数据目录到远程备份机或者本地磁盘上
在这里插入图片描述

Scp -r /data/mysql/ root@远程备份机ip:/新的目录
Copy -r /data/mysql/ 本地新目录
备份到本次磁盘也可以手动复制上述相关目录里的数据文件。

4)恢复过程就更简单了,仅仅需要把已备份的数据目录替换原有的目录就可以了,最后重启 MySQL 服务。
在这里插入图片描述

二、热备份
热备份即在不停止mysql数据服务前提下,对mysql进行数据库备份,mysql提供了
mysqldump命令

备份所有数据库
mysqldump -u root -p --all-databases > D:\all.sql

备份多个数据库
mysqldump -u username -P --databases dbname1 dbname2 … > filename.sql

备份一个数据库
mysqldump -u username -p dbname [tbname …]> filename.sql

对上述语法参数说明如下:
username:表示用户名称;
dbname:表示需要备份的数据库名称;
tbname:表示数据库中需要备份的数据表,可以指定多个数据表。省略该参数时,会备份整个数据库;
右箭头“>”:用来告诉 mysqldump 将备份数据表的定义和数据写入备份文件;
filename.sql:表示备份文件的名称,文件名前面可以加绝对路径。通常将数据库备份成一个后缀名为.sql的文件。

恢复数据库
mysql -u username -P [dbname] < filename.sql

以上备份只是将mysql数据导出备份到本地文件 ,Navicat等工具就是利用此命令实现sql导入导出。

利用binglog日志主从复制 实现双机热备份

2.1环境描述
A服务器(主服务器Master):127.0.0.1 3306
B服务器(从服务器Slave):127.0.0.1 3308
主从服务器的Mysql版本皆为5.7.32
在配置之前,要将两个数据库同步一下,保持数据库一致。
2.2 主服务器Master配置
2.2.1 创建同步用户
grant replication slave on . to ‘tantuls’@’%’ identified by ‘world’;

作用:只赋予这个用户 “主从复制” 权限

2.2.2 修改主数据库配置文件,开启binglog日志
server-id = 105
#binlog日志的文件名称前缀
log-bin = mysql-bin
binlog-format=Row
#记录日志的数据库 可以配置多个
#binlog-do-db = ybp
#不记录日志的数据库
binlog-ignore-db = mysql,information_schema,performance_schema

2.2.3 重启mysql服务
在这里插入图片描述

2.2.4 查看主服务器状态
show variables like ‘%log_bin%’; 如果显示一下内容,说明已经开启binlog日志记录功能
在这里插入图片描述

show master status;
在这里插入图片描述

记录下File和Position字段的值,在配置从数据库的时候会用到

2.3 从服务器Slave配置
2.3.1 修改主数据库配置文件
从数据库mysql.ini
server-id=2
log-bin=mysql-bin
#需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可,不配置则默认全部
#replicate-do-db = ybp
#不需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可
replicate-ignore-db = mysql,information_schema,performance_schema

2.3.2 重启mysql服务
在这里插入图片描述

2.3.3用change master 语句指定同步位置
1、先停止slave服务线程
stop slave;
2、指定同步位置
change master to
master_host=‘127.0.0.1’, – 主数据库的ip地址
master_port=3306, – 端口号
master_user=‘tantuls’, – 主数据库 负责主从复制的用户
master_password=‘world’,
master_log_file=‘mysql-bin.000003’, – 见2.2.4File字段
master_log_pos=154; – 见2.2.4Position字段
3、开启slave服务线程
start slave;

2.3.4查看从服务器(Slave)状态
show slave status;
在这里插入图片描述

这两个显示yes说明设置从服务器成功。

2.4、测试
在主数据库下新建表新增数据,从数据库会立刻备份新表及数据。(注意不要对从库进行写操作)

主主复制 实现双机热备份

主主复制在上述基础上,在主数据库开启slave即可,即上述的过程反过来。
从数据库
grant replication slave on . to ‘tantuls’@’%’ identified by ‘world’;

auto-increment-increment = 2
auto-increment-offset = 1
log-slave-updates = ON

log-slave-updates意思是,中继日志执行之后,这些变化是否需要计入自己的binarylog。 当你的B服务器需要作为另外一个服务器的主服务器的时候需要打开。 就是双主互相备份,或者多主循环备份。 我们这里需要, 所以打开。

主数据库
auto-increment-increment = 2
auto-increment-offset = 2

change master to
master_host=‘127.0.0.1’, – 主数据库的ip地址
master_port=3308, – 端口号
master_user=‘tantuls’, – 主数据库 负责主从复制的用户
master_password=‘world’,
master_log_file=‘mysql-bin.000007’, – 见2.2.4File字段
master_log_pos=440; – 见2.2.4Position字段

不停机备份
mysqldump -uroot -p --single-transaction --master-data=2 --no-autocommit --databases dsa5200_platform >alldatas.sql
master_log_file、master_log_pos在导出得sql文件中可以找到
文件同步rsync
一、安装rsync服务端
1.查看是否安装rsync
ps -ef | grep rsync
系统一般默认已安装,安装方法:yum -y install rsync

2.添加配置文件
rsync没有默认配置文件,需要手动创建/etc/rsyncd.conf
服务端配置文件/etc/rsyncd.conf 内容如下:
#global settings
pid file=/var/rsync/rsync.pid
port=873
lock file=/var/rsync/lock.log
log file=/var/rsync/rsync.log
[test] #test为自定义的模块名称
path=/home/mysql_data_back/
use chroot=no
max connections=10
read only=yes
write only=nolist=no
uid=root
gid=root
auth users=rsyncuser
secrets file=/etc/rsync_server.pas
strict modes=yes
hosts allow=27.223.26.74,192.168.1.2
hosts deny=*
ignore errors=yes
timeout=120 #秒
参数说明:
[mysql] :模块名,自己定义,可以在下方添加其它模块。须与客户端执行命令中的模块名一致。
path:要备份的服务端文件夹路径。
hosts allow:允许的客户端连接IP。
secrets file:服务端密码文件,内容格式为,用户名:密码。
auth users:有权限的用户名,与密码文件中用户名一致。
在这里插入图片描述

3.创建密码文件
在/etc中创建文件rsync_server.pas,加入用户名与密码,内容格式为:用户名:密码。
vi /etc/rsync_server.pas
例如,本例中rsync_server.pas文件内容为rsyncuser:123456
在这里插入图片描述

然后设置密码文件权限为600
chmod 600 /etc/rsync_server.pas
注意密码文件只有设置为600权限才可以使用,客户端的密码文件也必须为600。
4.启动rsync
rsync --daemon --config=/etc/rsyncd.conf
附加:停止rsync
ps -ef | grep rsync
kill -9 进程号
rm -rf /var/rsync/rsync.pid
二、安装rsync客户端
1.查看是否安装rsync,系统一般默认已安装,安装方法:yum -y install rsync(同服务端)。
2.在/etc下创建密码文件rsync_client.pas,注意内容只有密码,且与服务端密码文件中的密码相同。
3.更改密码文件权限为600。
三、添加定时任务
在客户端中添加定时任务,每天凌晨执行命令从服务器端拉取数据,进行备份。
直接编辑/etc/crontab文件,添加一条定时任务即可,例如每天01:23以root身份执行下方的rsync命令,将远程服务器27.223.26.74中的mysql模块对应的文件夹(服务端/etc/rsyncd.conf文件中的[mysql]模块对应的文件夹路径 )中的内容增量备份到当前服务器的/home/oa_daba_backup目录:
23 1 * * * root rsync -aqzrtopg --delete rsync://rsyncuser@172.26.1.151/test /test/test --password-file=/etc/rsync_client.pas
命令中的rsyncuser为服务端密码文件中配置的用户名;test为服务端/etc/rsyncd.conf文件中的[test]模块名,rsync会通过模块名找到对应的备份文件路径;/test/test当前服务器文件夹路径,远程服务器需要备份的文件夹里的内容会增量备份到这里,所以需要提前建好该目录;/etc/rsync_client.pas为当前服务器的密码文件。
在这里插入图片描述

mysqldump 命令

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值