服务器租用最新消息:腾讯云服务器授权代理商,腾讯云服务器大客户首选服务商,优惠购买腾讯云服务器、CDN加速、高防防御、短信接口、云数据库等折扣购买,公司购买开发票,可以通过代理代付、优惠返现两种方式进行优惠.【查源阁】

腾讯云将CDB实例的物理备份恢复到自建的mysql数据库

2018年10月23日18:49:45

背景描述

将CDB实例的物理备份恢复到自建的mysql数据库

实验环境

CDB实例:cdb-fopx6fXX

云服务器:用于恢复CDB的物理备份

如下是CDB控制台可以看到的实例中存在的数据库

1、首先建议先手动备份CDB或在控制台下载物理备份文件

【注意:CDB的默认备份方式为逻辑备份,但是如果数据量特别大,逻辑备份的恢复速度比较慢】

2、在云服务器上面创建数据库的存放目录

[root@VM_35_215_centos ~]# mkdir -p /data/mysql/mysql_3310/{data,log,tmp}

[root@VM_35_215_centos ~]# ll /data/mysql/mysql_3310/

total 12

drwxr-xr-x 2 root root 4096 Oct 30 18:18 data

drwxr-xr-x 2 root root 4096 Oct 30 18:18 log

drwxr-xr-x 2 root root 4096 Oct 30 18:18 tmp

3、在云服务器上面通过wget下载物理备份文件

[root@VM_35_215_centos xtrabackupfile]# wget ‘http://sh.dl.cdb.tencentyun.com:xxxxx/a789e231970810651239e2c2fd18b128?appid=1251123904&time=1540900309&sign=NRXQWiNJqtICXGlLpMR2w%2Fs7J5I%3D’

4、解压物理备份文件

[root@VM_35_215_centos xtrabackupfile]# tar xf a789e231970810651239e2c2fd18b128\?appid\=1251123904\&time\=1540900309\&sign\=NRXQWiNJqtICXGlLpMR2w%2Fs7J5I\=

5、解压后可以看到一个文件夹,该文件夹下面即是CDB数据库的物理文件

[root@VM_35_215_centos xtrabackupfile]# ll

drwxr-xr-x 40 root root 4096 Oct 30 19:49 cdb-fopx6fXX_20181030194849

[root@VM_35_215_centos cdb-fopx6f6v_20181030194849]# ll

total 124332

……..(此处省略N行)

drwxr-x— 2 root root 4096 Oct 30 19:48 along_bak

drwxr-x— 2 root root 12288 Oct 30 19:49 aws

-rw-r—– 1 root root 419 Oct 30 19:49 backup-my.cnf

drwxr-x— 2 root root 4096 Oct 30 19:49 ceshi

drwxr-x— 2 root root 4096 Oct 30 19:48 ceshi2

drwxr-x— 2 root root 4096 Oct 30 19:49 ceshi2_bak

drwxr-x— 2 root root 4096 Oct 30 19:49 ceshi_bak

drwxr-x— 2 root root 4096 Oct 30 19:49 congshao

drwxr-x— 2 root root 4096 Oct 30 19:49 daxie

drwxr-x— 2 root root 4096 Oct 30 19:48 DAXIE

……..(此处省略N行)

-rw-r—– 1 root root 79691776 Oct 30 19:49 ibdata1

-rw-r—– 1 root root 12582912 Oct 30 19:49 ibtmp1

drwxr-x— 2 root root 4096 Oct 30 19:49 liujian

drwxr-x— 2 root root 4096 Oct 30 19:48 mysql

drwxr-x— 2 root root 4096 Oct 30 19:49 performance_schema

drwxr-x— 2 root root 4096 Oct 30 19:49 shaocong

……..(此处省略N行)

-rw-r—– 1 root root 26214400 Oct 30 19:49 undo001

-rw-r—– 1 root root 118 Oct 30 19:49 xtrabackup_binlog_info

-rw-r–r– 1 root root 28 Oct 30 19:49 xtrabackup_binlog_pos_innodb

-rw-r—– 1 root root 376 Oct 30 19:49 xtrabackup_cdb_result

-rw-r—– 1 root root 121 Oct 30 19:49 xtrabackup_checkpoints

-rw-r—– 1 root root 810 Oct 30 19:49 xtrabackup_info

-rw-r—– 1 root root 8388608 Oct 30 19:49 xtrabackup_logfile

-rw-r—– 1 root root 156 Oct 30 19:49 xtrabackup_slave_info

从物理备份文件中可以看到有如上的一些以xtrabackup开头的一些文件

xtrabackup_checkpoints 记录备份完成时检查点的lsn号和该备份文件类型,full-backuped全量备份

xtrabackup_binlog_info 记录二进制日志和偏移量,若开启gtid,还会记录gtid位置,为在线搭建从库做准备

xtrabackup_info 记录备份详细信息,如备份命令、开始结束时间、版本等

6、将数据库的物理备份文件移动到步骤2创建的数据文件存放目录中

[root@VM_35_215_centos xtrabackupfile]# mv cdb-fopx6f6v_20181030194849/ /data/mysql/mysql_3310/data

由于是多实例部署,所以使用了mysqld_multi统一管理,如果是单实例的可忽略配置文件中[mysqld_multi]的设置

7、修改备份文件的属性

[root@VM_35_215_centos ~]# chown -R mysql:mysql /data/mysql/mysql_3310/

8、编辑mysql的配置文件,或者按照腾讯云官方文档修改备份文件中的backup-my.cnf配置文件

[root@VM_35_215_centos ~]# vim /etc/my.cnf

[mysqld_multi]

user=root

pass=XXXXXX

mysqld=/usr/local/mysql/bin/mysqld_safe

mysqladmin=/usr/local/mysql/bin/mysqladmin

log=/data/mysql/mysqld_multi.log

[mysqld]

#skip-grant-tables

user=mysql

basedir = /usr/local/mysql

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

max_allowed_packet = 16M

character_set_server = utf8mb4

[mysqld3310]

#skip-grant-tables

mysqld=mysqld

mysqladmin=mysqladmin

datadir=/data/mysql/mysql_3310/data/

socket=/tmp/mysql3310.sock

port=3310

server_id=3310

log-output=file

slow_query_log = 1

long_query_time = 1

slow_query_log_file = /data/mysql/mysql_3310/log/slow.log

log-error = /data/mysql/mysql_3310/log/error.log

binlog_format = mixed

log-bin = /data/mysql/mysql_3310/log/mysql3310.bin

secure_file_priv=/tmp

gtid-mode = ON

enforce-gtid-consistency = ON

log-slave-updates = ON

query_cache_size=0

query_cache_type=1

9、启动实例

[root@VM_35_215_centos ~]# mysqld_multi start 3310

[root@VM_35_215_centos ~]# mysqld_multi report 3310

Reporting MySQL servers

MySQL server from group: mysqld3310 is running

启动成功

10、登录实例,发现登录出现如下的报错,看样子是用户密码有问题

[root@VM_35_215_centos ~]# mysql -u root -p -S /tmp/mysql3310.sock

Enter password:

ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)

11、在配置文件中增加如下内容,登录的时候跳过user表检

[mysqld3310]

skip-grant-tables

12、然后重启一下实例即可登录成功

[root@VM_35_215_centos ~]# mysqld_multi start

[root@VM_35_215_centos ~]# mysqld_multi report 3310

Reporting MySQL servers

MySQL server from group: mysqld3310 is running

13、登录成功后,修改一下root用户的密码

root@ [(none)]>update mysql.user set password=password(‘qcloud@2018′) where user=’root’;

Query OK, 5 rows affected, 1 warning (0.05 sec)

Rows matched: 5 Changed: 5 Warnings: 1

14、关闭mysql服务,然后删掉配置文件中的skip-grant-tables重新进行登录

至此通过CDB物理备份恢复数据库全部完成;