利用xtrabackup 主从同步 keepalived实现数据库整体迁移并切换

环境:
Centos7 Mysql5.7.28
服务器A IP地址192.168.10.8 A服务器已安装配置过keepalived,且由虚拟ip10.10提供对外服务
服务器B IP地址192.168.10.9
安装keepalived后 虚拟地址为192.168.10.10
数据库目录都在/var/lib/mysql
需求:
实现A数据库全量迁移至数据库B,尽可能实现不丢失数据,不影响运行
步骤:
1.安装xtrabackup,安装时根据提示可能需要安装依赖包

#wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.20/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.20-1.el7.x86_64.rpm
#rpm -ivh percona-xtrabackup-24-2.4.20-1.el7.x86_64.rpm

安装完成后,输入innob,按tab键,如果可以自动补全innobackupex,即说明安装成功。

2.进行全量备份

#innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 /mnt/bak

/mnt/bak为备份文件的目录

3.数据还原
通过nfs挂载或者直接拷贝的方式,将全量备份的数据从8拷贝到9的/mnt/bak目录下,然后做第一步还原预准备

#innobackupex --apply-log /mnt/bak/2021xxxxx

第二步开始全量备份还原

#innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /mnt/bak/2021xxxxx

4.配置数据库my.cnf,为数据库主从同步做主备
在[mysqld]下添加如下配置

log-bin=mysql-bin
server_id=74       #id值可自己定义,但是主从不能一样!

配置完成后启动B上数据库

#systemctl start mysql

5.配置主从同步
在A服务器上进入数据库,配置权限

GRANT REPLICATION SLAVE ON *.* TO 'backup9'@'192.168.10.9 IDENTIFIED BY '123456';          #用户名自己设定,密码可能提示复杂度
flush privileges;

在B服务器上进入数据库配置主从

change master to master_host='192.168.10.8',master_user='backup9',master_password='123456',master_log_file='mysql_bin.000001',master_log_pos=3892;
start slave;
show slave status\G;

master_log_file和master_log_pos的值在主数据库内查看,根据实际填写


image.png

查看主从状态,出现如下两个YES说明主从同步正常,如出现报错时可根据提示查找原因


image.png

6.安装并配置keepalived
本实验环境,服务器A之前是安装过keepalived的,且有虚拟机IP地址对外提供服务,因此只需对服务器B安装配置keepalived,两台服务器配置保持一致,服务器B配置如下

! Configuration File for keepalived
global_defs {
   router_id 33
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 37
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.10/24
    }
}
virtual_server 192.168.10.10 3306 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP
    real_server 192.168.10.9 3306 {
        weight 1
    TCP_CHECK {            
        connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

配置完成后启动服务器B的keepalived

#systemclt start keepalived

状态正常后,下一步关闭服务器A的keepalived

#systemctl stop keepalived

至此,完成数据库由A服务器到B服务器的整体迁移。

相关:
https://www.cnblogs.com/jimmyTang-J/p/11812461.html
https://blog.csdn.net/haoding205/article/details/81459153
https://blog.csdn.net/fly910905/article/details/93721561

你可能感兴趣的:(利用xtrabackup 主从同步 keepalived实现数据库整体迁移并切换)