Ubuntu系统中对RDS MySQL物理备份文件进行恢复操作
更新时间:
概述
本文主要介绍在Ubuntu 16.04系统中,对RDS MySQL版物理备份文件进行恢复操作的方法。
详细信息
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
在进行恢复操作时,请检查数据目录是否为/var/lib/mysql
,以下是两种情况的恢复操作方法。
数据目录为“/var/lib/mysql”
以下是对备份文件进行恢复操作的具体步骤:
说明:在实例中执行命令前,请切换到root用户。
- 登录实例,执行以下命令,将您的个人软件包文档添加到源列表中。
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu trusty universe'
说明:也可以直接把
deb http://archive.ubuntu.com/ubuntu trusty universe
字段添加到/etc/apt/sources.list
文件中。 - 执行以下命令,更新apt-get数据库。
apt-get update
- 执行以下命令,卸载mysql-common软件包。
apt-get autoremove mysql-common
- 执行以下命令,确认系统不存在MySQL 5.6版本。
apt-cache search mysql | grep mysql-server
- 执行以下命令,安装mysql-server-5.6软件包。
apt-get install mysql-server-5.6
- 执行以下命令,检查系统是否存在MySQL进程,若存在则记录其进程PID。
ps -ef |grep mysql
- 执行以下命令,终止MySQL进程。
kill -9 [$MySQL_PID]
说明:[$MySQL_PID]为上一步获取的MySQL进程的PID。
- 执行以下命令,删除数据库的数据目录。
rm -rf /var/lib/mysql/*
注意:如果之前所在服务器已经使用此目录作为数据库数据目录,那么就不要用该服务器做恢复操作。
- 执行以下命令,下载安装包。
wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb
- 执行以下命令,安装percona-release。
sudo dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb
- 执行以下命令,安装percona-xtrabackup-24文件。
apt-get install percona-xtrabackup-24
- 执行以下命令,下载安装包。
wget -c '[$Bak_File]' -O [$Custom_File].tar.gz
说明:
- [$Bak_File]为数据备份文件外网下载地址。
- [$Custom_File]为自定义文件名称。
- 执行以下命令,以文本方式编辑
my5.6.cnf
文件。vi /etc/mysql/conf.d/my5.6.cnf
- 将以下内容添加到
my5.6.cnf
文件中。[mysqld]
innodb_checksum_algorithm=crc32
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=524288000
innodb_undo_directory=/var/lib/mysql/
basedir=/usr
datadir=/var/lib/mysql
innodb_undo_tablespaces=0
server_id=999098802
skip-grant-tables=1
sql_mode=''
socket=/var/lib/mysql/mysql.sock
log-error=/var/lib/mysql/error1.log
explicit_defaults_for_timestamp=true - 执行以下命令,解压文件包到指定目录。
tar -zxvf a.tar.gz -C /var/lib/mysql
说明:假设
a.tar.gz
文件包是被下载到/root
目录下的。 - 依次执行以下命令,恢复解压好的备份文件。
cd /var/lib/mysql
innobackupex --defaults-file=/etc/mysql/conf.d/my5.6.cnf --apply-log /var/lib/mysql - 执行以下命令,修改文件属主,并确定文件所属为MySQL用户。
chown -R mysql:mysql .
- 执行以下命令,确认可以启动MySQL进程。
mysqld --defaults-file=/etc/mysql/conf.d/my5.6.cnf --user=mysql
说明:
my5.6.cnf
配置文件中有skip-grant-tables=1
参数,所以启动MySQL进程不需要密码。 - 执行以下命令,进入MySQL交互页面。
mysql --socket=/var/lib/mysql/mysql.sock
- 执行以下SQL语句,刷新数据库权限表。
flush privileges;
- 执行以下SQL语句,设置用户名和密码。
set PASSWORD FOR 'root'@'127.0.0.1'=PASSWORD('[$Password]');
说明:[$Password]是您为root用户设置的密码。
- 执行以下SQL语句,退出数据库。
exit
- 执行以下命令,获取当前启动的MySQL进程信息。
ps -ef |grep mysql
- 执行以下命令,终止MySQL进程。
kill -9 [$PID]
说明:[$PID]为上一步获取的MySQL进程的PID。
- 执行以下命令,以文本方式编辑
my5.6.cnf
文件。vi /etc/mysql/conf.d/my5.6.cnf
- 在文本编辑页面中,注释掉
skip-grant-tables=1
字段。 - 执行以下命令,启动MySQL进程。
mysqld --defaults-file=/etc/mysql/conf.d/my5.6.cnf --user=mysql
- 执行以下命令,输入设定的密码和账号确认可以登录MySQL交互界面。
mysql -uroot -h127.0.0.1 -p[$Password] --socket=/var/lib/mysql/mysql.sock
数据目录不为“/var/lib/mysql”
以下是对备份文件进行恢复操作的具体步骤:
说明:在实例中执行命令前,请切换到root用户。
- 登录实例,执行以下命令,将您的个人软件包文档添加到源列表中。
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu trusty universe'
说明:也可以直接把
deb http://archive.ubuntu.com/ubuntu trusty universe
字段添加到/etc/apt/sources.list
文件中。 - 执行以下命令,更新apt-get数据库。
apt-get update
- 执行以下命令,卸载mysql-common软件包。
apt-get autoremove mysql-common
- 执行以下命令,确认系统不存在MySQL 5.6版本。
apt-cache search mysql | grep mysql-server
- 执行以下命令,安装mysql-server-5.6软件包。
apt-get install mysql-server-5.6
- 执行以下命令,检查系统是否存在MySQL进程,若存在则记录其进程PID。
ps -ef |grep mysql
- 执行以下命令,终止MySQL进程。
kill -9 [$MySQL_PID]
说明:[$MySQL_PID]为上一步获取的MySQL进程的PID。
- 执行以下命令,删除指定目录。
rm -rf /var/lib/mysql
- 执行以下命令,下载安装包。
wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb
- 执行以下命令,安装percona-release。
sudo dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb
- 执行以下命令,安装percona-xtrabackup-24文件。
apt-get install percona-xtrabackup-24
- 执行以下命令,下载安装包。
wget -c '[$Bak_File]' -O [$Custom_File].tar.gz
说明:
- [$Bak_File]为数据备份文件外网下载地址。
- [$Custom_File]为自定义文件名称。
- 执行以下命令,创建数据目录。
mkdir /data/mysql -p
- 执行以下命令,修改目录属主和属组。
chown -R mysql:mysql /data/mysql
- 执行以下命令,对数据目录进行授权。
chmod 700 /data/mysql
- 执行以下命令,以文本方式编辑
my5.6.cnf
文件。vi /etc/mysql/conf.d/my5.6.cnf
- 将以下内容添加到my5.6.cnf文件中。
[mysqld]
innodb_checksum_algorithm=crc32
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=524288000
innodb_undo_directory=/data/mysql/
basedir=/usr
datadir=/data/mysql
innodb_undo_tablespaces=0
server_id=999098802
skip-grant-tables=1
sql_mode=''
socket=/data/mysql/mysql.sock
log-error=/data/mysql/error1.log
explicit_defaults_for_timestamp=true - 执行以下命令,解压文件包到指定目录。
tar -zxvf a.tar.gz -C /data/mysql
说明:假设
a.tar.gz
文件包是被下载到/root
目录下的。 - 依次执行以下命令,恢复解压好的备份文件。
cd /data/mysql
innobackupex --defaults-file=/etc/mysql/conf.d/my5.6.cnf --apply-log /data/mysql - 执行以下命令,修改文件属主,并确定文件所属为MySQL用户。
chown -R mysql:mysql .
- 执行以下命令,创建短连接。
ln -s /data/mysql /var/lib/mysql
- 执行以下命令,编辑指定文件。
vi /etc/apparmor.d/tunables/alias
- 在编辑页面中,添加以下内容。
alias /var/lib/mysql/ -> /data/mysql/,
- 执行以下命令,重新加载配置文件。
sudo /etc/init.d/apparmor reload
- 执行以下命令,确认可以启动MySQL进程。
mysqld --defaults-file=/etc/mysql/conf.d/my5.6.cnf --user=mysql
说明:
my5.6.cnf
配置文件中有skip-grant-tables=1
参数,所以启动MySQL进程不需要密码。 - 执行以下命令,进入MySQL交互页面。
mysql --socket=/data/mysql/mysql.sock
- 执行以下SQL语句,刷新数据库权限表。
flush privileges;
- 执行以下SQL语句,设置用户名和密码。
set PASSWORD FOR 'root'@'127.0.0.1'=PASSWORD('[$Password]');
说明:[$Password]是您为root用户设置的密码。
- 执行以下SQL语句,退出数据库。
exit
- 执行以下命令,获取当前启动的MySQL进程信息。
ps -ef |grep mysql
- 执行以下命令,终止MySQL进程。
kill -9 [$PID]
说明:[$PID]为上一步获取的MySQL进程的PID。
- 执行以下命令,以文本方式编辑
my5.6.cnf
文件。vi /etc/mysql/conf.d/my5.6.cnf
- 在文本编辑页面中,注释掉
skip-grant-tables=1
字段。 - 执行以下命令,启动MySQL进程。
mysqld --defaults-file=/etc/mysql/conf.d/my5.6.cnf --user=mysql
- 执行以下命令,输入设定的密码和账号确认可以登录MySQL交互界面。
mysql -uroot -h127.0.0.1 -p[$Password] --/data/mysql/mysql.sock
适用于
- 云数据库RDS MySQL版
该文章对您有帮助吗?