美文网首页
Xtrabackup 备份工具-----腾讯云MySQL

Xtrabackup 备份工具-----腾讯云MySQL

作者: 学有境 | 来源:发表于2021-01-02 14:29 被阅读0次

    1.概述

    由于业务需求,公司需要本地搭建自有MySQL数据库,然而数据需要使用线上数据库的数据作为数据基础,线上数据库是使用的腾讯云产品,所以需要从腾讯云MySQL上的数据导入至本地数据库。

    2.MySQL安装

    # yum  -y install gcc gcc-c++ autoconf bison  \

        cmake zlib* fiex* libxml* ncurses-devel \

       libmcrypt* libtool-ltdl-devel*  automake \

       openssl openssl-devel pcre pcre-devel

    # tar -xf mysql-5.6.50.tar.gz

    # cd mysql-5.6.50

    # cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

          -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1  \

         -DWITH_INNOBASE_STORAGE_ENGINE=1  \

        -DWITH_MEMORY_STORAGE_ENGINE=1  \

        -DWITH_FEDERATED_STORAGE_ENGINE=1  \

         -DWITH_READLINE=1 \

         -DENABLED_LOCAL_INFILE=1  \

         -DWITH_PARTITION_STORAGE_ENGINE=1 \

        -DEXTRA_CHARSETS=all  \

       -DDEFAULT_CHARSET=utf8 \

       -DDEFAULT_COLLATION=utf8_general_ci

    #  make

    #  make install

    #  echo 'export PATH=$PATH:/usr/local/mysql/bin' >>  /etc/profile

    #  source /etc/profile

    #  mkdir -p  /data/mysql/

    #  useradd mysql

    #  chown -R mysql:mysql /data/mysql/

    #  cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

    #  vim  /etc/my.cnf

      [client]

      port=3306

      socket=/tmp/mysql.sock

      datadir = /data/mysql

      skip-external-locking

      key_buffer_size = 32M

      [mysqld]

      skip-grant-tables    #第一次启动MySQL需要启动,免密登录修改root修改密码后注释点重启

      wait_timeout=3600

      max_allowed_packet = 200M

      table_open_cache = 128

      sort_buffer_size = 768K

      net_buffer_length = 8K

      read_buffer_size = 768K

      read_rnd_buffer_size = 512K

      myisam_sort_buffer_size = 8M

      thread_cache_size = 16

      query_cache_size = 16M

      tmp_table_size = 32M

      performance_schema_max_table_instances = 500

      explicit_defaults_for_timestamp = true

      max_connections = 1000

      max_connect_errors = 100

      open_files_limit = 65535

      log-bin=mysql-bin

      binlog_format=mixed

      server-id  = 1

      expire_logs_days = 10

      default_storage_engine = InnoDB

      innodb_file_per_table = 1

      innodb_data_home_dir = /data/mysql/

      innodb_data_file_path = ibdata1:10M:autoextend

      innodb_log_group_home_dir = /data/mysql/

      innodb_buffer_pool_size = 128M

      innodb_log_file_size = 32M

      innodb_log_buffer_size = 8M

      innodb_flush_log_at_trx_commit = 1

      innodb_lock_wait_timeout = 50

      [mysqldump]

      quick

      max_allowed_packet = 16M

      [mysql]

      no-auto-rehash

      [myisamchk]

      key_buffer_size = 32M

      sort_buffer_size = 768K

      read_buffer = 2M

      write_buffer = 2M

      [mysqlhotcopy]

      interactive-timeout

    # /usr/local/mysql/scripts/mysql_install_db  \

        --basedir=/usr/local/mysql/  \

        --datadir=/data/mysql/  \

        --defaults-file=/etc/my.cnf

        # cp /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysql

        # mysql -uroot  -p

        mysql> set password for root@'localhost'=password(******');

        Query OK, 0 rows affected (0.00 sec)

        mysql> flush privileges;

        Query OK, 0 rows affected (0.00 sec)

        mysql> exit

    数据库搭建基本完成。

    3.登录腾讯云MySQL

    登录腾讯云MySQL控制台,如下图:

    选择相应的数据库实例,选择备份恢复,如下图,然后进行数据下载,这个是一个漫长的下载过程,也是考验网速的时候,好在只有几十个G:

    下载完成就是把下载好的数据上传至相应的MySQL服务器上,这个也是一个考验网速的时刻,上传完成后,把这么大的数据上传至服务器,采用rz是无法上传的,我采用的是filezilla,注意线上服务器存放数据的权限。这个上传速度是贼慢的,40G大概上传了4个半小时,服务器的带宽开了20M。

    4.腾讯云自建数据库恢复数据

    需要如下工具进行数据解压:

    percona-xtrabackup-2.3.5-1.el7.x86_64.rpm  #这个对应的是mysql-5.6

    percona-toolkit-3.1.0-2.el7.x86_64.rpm

    qpress-11-linux-x64.tar  #qpress命令解压出 qpress 二进制文件

    # yum  -y install percona-xtrabackup-2.3.5-1.el7.x86_64.rpm

    # yum  -y install percona-toolkit-3.1.0-2.el7.x86_64.rpm

    # tar -xf qpress-11-linux-x64.tar -C /usr/local/bin

    # source /etc/profile

    使用 xbstream 命令将备份文件解包到目标目录

    # xbstream -x -C db1 < ****_backup_20201230000303.xb

    使用如下命令将目标目录下所有以.qp结尾的文件都解压出来

    # xtrabackup --decompress --target-dir=db1

    备份解压出来之后,执行如下命令进行 apply log 操作

    # xtrabackup --prepare  --target-dir=db1

    由于存在的版本问题,请将解压文件backup-my.cnf中如下参数进行注释

    # vim /data/db1/backup-my.cnf

    # This MySQL options file was generated by innobackupex.

    # The MySQL server

    [mysqld]

    #innodb_checksum_algorithm=innodb

    #innodb_log_checksum_algorithm=innodb

    innodb_data_file_path=ibdata1:12M:autoextend

    innodb_log_files_in_group=2

    innodb_log_file_size=1073741824

    #innodb_fast_checksum=false

    #innodb_page_size=16384

    #innodb_log_block_size=512

    innodb_undo_directory=.

    innodb_undo_tablespaces=0

    server_id=0

    #redo_log_version=0

    修改文件属性,并检查文件所属为 mysql 用户

    # chown -R mysql:mysql /data/db1

    启动 mysqld 进程

    # mysqld_safe --defaults-file=/data/db1/backup-my.cnf --user=mysql --datadir=/data/db1 &

    #将数据目录下的数据拷贝至数据库存放目录下:

    # mv  /data/db1  /data/mysql

    # chown -R mysql:mysql  /data/mysql

    重启数据库

    #  /etc/init.d/mysql start

    特别注意的点:

    由于这个三个库也是腾讯云MySQL中拷贝过来的,所以之前线上的数据库账号是可以直接使用的,但刚刚开始创建数据库的密码就无法使用。

    以上这种腾讯云MySQL数据导入自建腾讯云主机上MySQL的方式,是不怎么推荐使用的。

    相关文章

      网友评论

          本文标题:Xtrabackup 备份工具-----腾讯云MySQL

          本文链接:https://www.haomeiwen.com/subject/hbyeoktx.html