zoukankan      html  css  js  c++  java
  • MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录1

    一个5.7版本的MySQL单点数据库,版本信息是:
    Server version: 5.7.31-log MySQL Community Server (GPL)
    数据量已达到760G,日常存在性能问题,需迁移到PXC集群,由于之前几年实施使用的都是8.0版本PXC集群,这次也想当然的想直接迁移到PXC8.0。

    鉴于数据量比较巨大,采用mysqldump的方式显然是不可行的,实际上项目反馈也是无法用mysqldump备份成功,mysqldump备份几百兆、几个G还是可行的,但是面对上百G的数据量已经无能为力。好在percona有XtraBackup这个备份工具,给我们做MySQL的大数据量迁移创造了便利条件。

    ■ 安装xtrabackup
    注意:xtrabackup8.0只支持mysql8.0以上的版本,mysql5.7或以下需要使用xtrabackup8.0以下的版本
    XtraBackup各版本之间的区别如下:
    8.0仅支持mysql8.0
    2.4专针对5.7开发,兼容5.6,5.5
    2.3针对5.6开发,兼容5.5
    2.2针对5.5开发

    在percona官网可以方便的找到PXC以及xtrabackup各个版本的介质,xtrabackup位于:
    https://www.percona.com/downloads/Percona-XtraBackup-2.4/LATEST/
    可以直接下载bundle版本的介质,离线安装:
    yum install percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
    安装报错缺少libev,如下安装libev即可
    yum install libev-4.15-7.el7.x86_64.rpm
    本次还遇见如下错误:

    Error: Package: perl-DBD-MySQL-4.023-5.el7.x86_64 (centos7)
               Requires: libmysqlclient.so.18()(64bit)
    Error: Package: perl-DBD-MySQL-4.023-5.el7.x86_64 (centos7)
               Requires: libmysqlclient.so.18(libmysqlclient_18)(64bit)
    Error: Package: 2:postfix-2.10.1-6.el7.x86_64 (@anaconda)
               Requires: libmysqlclient.so.18(libmysqlclient_18)(64bit)
    Error: Package: 2:postfix-2.10.1-6.el7.x86_64 (@anaconda)
               Requires: libmysqlclient.so.18()(64bit)
    

    查询libmysqlclient.so,维度确实缺少libmysqlclient.so.18
    [root@localhost soft]# find / -name libmysqlclient.so*
    /usr/lib64/mysql/libmysqlclient.so.20
    /usr/lib64/mysql/libmysqlclient.so.20.3.18
    因此需确认这个lib库来自哪里,网搜查到的原因在于没有安装mysql-community-libs-compat包
    到mysql官网下载:https://downloads.mysql.com/archives/community/
    https://downloads.mysql.com/archives/get/p/23/file/mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm
    安装上这个lib包:
    yum install mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm
    之后再次安装xtrabackup就可以了

    ■ 以下开始备份
    mkdir -p /u01/xtrabackup
    xtrabackup --user=root --password='passwd' --backup --target-dir=/u01/xtrabackup > xtrabackup.log 2>&1 &

    211119 17:35:56 开始备份
    211119 21:33:33 completed OK!
    备份数据总计:
    759G xtrabackup
    第一次备份未开并发,耗时接近4个小时
    后续开多并发备份,直接写到较快的nfs上,耗时大幅减少!

    注:可新增一个复制权限的用户用于备份

    create user 'backup'@'localhost' identified by 'backup';
    grant reload, lock tables, process, replication client on *.* to 'backup'@'localhost';
    flush privileges;
    

    ■ 在PXC 8.0.23集群还原数据库
    这是一个3节点集群,计划还原在节点1。
    先停掉节点1的PXC服务,包括keepalived、proxysql、mysql@bootstrap
    根据源库的my.cnf配置文件,建立新的my.cnf配置文件
    之后根据文档“异机恢复”(本站网搜可得)操作,准备全备份的日志时,报错如下:

    [root@mysqldb1:0 /u01/mysql]# xtrabackup --prepare --apply-log-only --target-dir=/u01/nfs18/xtrabackup
    xtrabackup: [Warning] option 'innodb_undo_tablespaces': unsigned value 0 adjusted to 2.
    xtrabackup: recognized server arguments: --innodb_checksum_algorithm=crc32 --innodb_data_file_path=ibdata1:12M:autoextend --innodb_log_files_in_group=2 --innodb_log_file_size=50331648 --innodb_page_size=16384 --innodb_log_block_size=512 --innodb_undo_directory=./ --innodb_undo_tablespaces=0 --server-id=1 
    xtrabackup: recognized client arguments: --prepare=1 --apply-log-only=1 --target-dir=/u01/nfs18/xtrabackup 
    xtrabackup version 8.0.23-16 based on MySQL server 8.0.23 Linux (x86_64) (revision id: 934bc8f)
    xtrabackup: cd to /u01/nfs18/xtrabackup/
    xtrabackup: This target seems to be not prepared yet.
    Number of pools: 1
    xtrabackup: error: Unsupported redo log format 1
    This version of Percona XtraBackup can only perform backups and restores against MySQL 8.0 and Percona Server 8.0, please use Percona Xtrabackup 2.4 for this database.
    

    可见,没法使用8.0版本的XtraBackup恢复24版本的备份!
    看来只能降级PXC集群版本到5.7了。

    ■ 卸载已有的PXC8版本,安装PXC57
    从percona官网下载对应版本的cluster介质、xtrabackup介质
    https://www.percona.com/downloads/Percona-XtraDB-Cluster-57/LATEST/
    安装比较简单。

    ■ 根据源库配置修改新的配置文件
    注意新的配置涉及多个配置文件,为避免可能的错误,需要全部确认所有的配置参数没有问题,否则可能会有意想不到的惊喜(错误)
    这里涉及到一个MySQL数据库及集群的理解过程,边学习边实践也是挺有意思的,无知者无畏嘛,真是越学习越发现自己的肤浅啊。

    之后就是正常的恢复、启动过程,由于本机硬盘IO性能达到800MB/s的写入速度,恢复仅用时半个多小时。
    但启动时遭遇pid文件不存在、文件权限、log文件不存在等问题,逐一破解即可,最后成功启动了。
    下一步就是集群构建、数据重新全迁移、增量同步、短时间割接的问题了,后文再叙。

  • 相关阅读:
    const关键字在C和C++区别
    配置Office DOM组件权限
    SQL-Server新建表,当前日期为表名
    通过css样式给表格tbody加垂直滚动条
    Linq 左连接 left join
    如何在SVN服务器上创建项目
    C# 实现实体类和Xml转换
    C# 导出Excel表格
    SQL语句和EF Group by 用法
    C# fileUpload视频上传
  • 原文地址:https://www.cnblogs.com/likingzi/p/15722051.html
Copyright © 2011-2022 走看看