用物理备份恢复的方式做数据库主从
例如:172.16.16.26 10.0.66.207
过程原理:主从数据库搭建好nfs,机器的备份都在media里面做全备,所以从库可以直接在/media里面 的数据备份恢复数据,从而做主从
在172.16.16.26上操作:
恢复全备
1 在172.16.16.26这台机器上先拷贝10.0.66.207的最新全备
cp -r /media/dbbackup/mysql/10.0.66.207/20211101_023201_full_bak /data/temp/3310
解压备份的数据
xtrabackup --decompress --target-dir=/data/temp/3310/20211101_023201_full_bak
安装
xtrabackup --prepare --apply-log-only --use-memory=12G --target-dir=/data/temp/3310/20211101_023201_full_bak
停数据库
/etc/init.d/mysqld stop
cd /data/mysql/
rm -rf *
拷贝到数据目录
xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/data/temp/3310/20211101_023201_full_bak
chown mysql:mysql -R /data/mysql/
/etc/init.d/mysqld start
*过滤复制(这个可有可无,有需求就操作,没有需求就不要操作)
vim /etc/my.cnf
replicate_wild_ignore_table=maxwell.%
log_slave_updates=on
开启数据库
service mysql restart
登录数据库
mysql
show slave status\G
stop slave; (如果没有形成slave就不用操作此步骤)
reset salve all; (如果没有形成slave就不用操作此步骤)
change master to master_host='10.0.66.207',master_user='slave',master_port=3310,master_password='slave@TM',master_log_file='',master_log_pos=;
start salve;
show slave status\G
注:在这个地方的master_log_file= 和 master_log_pos= 在

过程原理:还有一种情况,是没有安装nfs
方法:主库把数据传到nas上去,然后从库在nas上下载数据
1 登录主库
2 先看下选择目录的挂载情况
# df -h
如果没有挂载,则需要挂载
sudo mount -t nfs -o rw,vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 3228649cfc-tis54.cn-shanghai.nas.aliyuncs.com:/ /media
PS:挂载报错的时候,是缺少nfs
安装nfs即可: yum install -y nfs-utils
3 然后开始备份 把数据备份到nas上去
innobackupex --defaults-file=/etc/my.cnf --user=root --password=Taimei198.., --socket=/data/mysql/mysql.sock /media/temp/tem/
1 登录从库
2 查看下有没有挂载
注:要挂载同一个目录上,不然数据无法拉取
停数据库
service mysql stop
删除以往数据
cd /data/mysql/
rm -rf *
检查挂载目录是否有备份数据
cd /media/temp/tem/
ll
3 恢复数据
innobackupex --defaults-file=/etc/my.cnf --apply-log /media/temp/tem/2021-10-25_16-29-33/
innobackupex --defaults-file=/etc/my.cnf --move-back /media/temp/tem/2021-10-25_16-29-33/
# 注:回复的文件位置要是备份时的文件位置 例如:/media/temp/tem/2021-10-25_16-29-33/
授权:
chown -R mysql.mysql /data/mysql/*
修改配置文件
vim /etc/my.cnf
修改port,和主库的MySQL port一样
启动数据库:
service mysql start
登录数据库
mysql
show slave status\G
stop slave; (如果没有形成slave就不用操作此步骤)
reset salve all; (如果没有形成slave就不用操作此步骤)
change master to master_host='172.16.16.15',master_user='slave',master_port=3310,master_password='slave@TM',master_log_file='mysql-bin.000012',master_log_pos=598606767;
# 注: cd /media/temp/tem/ 2021-XX
cat xtrabackup_info
在info里面查看master_log_file ,master_log_pos的信息
start salve;
show slave status\G
浙公网安备 33010602011771号