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

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)