Ubuntu系统中对RDS MySQL物理备份文件进行恢复操作

Ubuntu系统中对RDS MySQL物理备份文件进行恢复操作

更新时间:2020-08-03 19:51:29

概述

本文主要介绍在Ubuntu 16.04系统中,对RDS MySQL版物理备份文件进行恢复操作的方法。

详细信息

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

在进行恢复操作时,请检查数据目录是否为/var/lib/mysql,以下是两种情况的恢复操作方法。

数据目录为“/var/lib/mysql”

以下是对备份文件进行恢复操作的具体步骤:

说明:在实例中执行命令前,请切换到root用户。

  1. 登录实例,执行以下命令,将您的个人软件包文档添加到源列表中。
    sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu trusty universe'
    说明:也可以直接把deb http://archive.ubuntu.com/ubuntu trusty universe字段添加到/etc/apt/sources.list文件中。
  2. 执行以下命令,更新apt-get数据库。
    apt-get update
  3. 执行以下命令,卸载mysql-common软件包。
    apt-get autoremove mysql-common
  4. 执行以下命令,确认系统不存在MySQL 5.6版本。
    apt-cache search mysql | grep mysql-server
  5. 执行以下命令,安装mysql-server-5.6软件包。
    apt-get install mysql-server-5.6
  6. 执行以下命令,检查系统是否存在MySQL进程,若存在则记录其进程PID。
    ps -ef |grep mysql
  7. 执行以下命令,终止MySQL进程。
    kill -9 [$MySQL_PID]
    说明:[$MySQL_PID]为上一步获取的MySQL进程的PID。
  8. 执行以下命令,删除数据库的数据目录。
    rm -rf /var/lib/mysql/*
    注意:如果之前所在服务器已经使用此目录作为数据库数据目录,那么就不要用该服务器做恢复操作。
  9. 执行以下命令,下载安装包。
    wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb
  10. 执行以下命令,安装安装包。
    sudo dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb
  11. 执行以下命令,安装percona-xtrabackup-24文件。
    apt-get install percona-xtrabackup-24
  12. 执行以下命令,下载安装包。
    wget -c '[$Bak_File]' -O [$Custom_File].tar.gz
    说明
    • [$Bak_File]为数据备份文件外网下载地址。
    • [$Custom_File]为自定义文件名称。
  13. 执行以下命令,以文本方式编辑my5.6.cnf文件。
    vi /etc/mysql/conf.d/my5.6.cnf
  14. 将以下内容添加到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
  15. 执行以下命令,解压文件包到指定目录。
    tar -zxvf a.tar.gz -C /var/lib/mysql
    说明:假设a.tar.gz文件包是被下载到/root目录下的。
  16. 依次执行以下命令,恢复解压好的备份文件。
    cd /var/lib/mysql   
    innobackupex --defaults-file=/etc/mysql/conf.d/my5.6.cnf --apply-log /var/lib/mysql
  17. 执行以下命令,修改文件属主,并确定文件所属为MySQL用户。
    chown -R mysql:mysql .
  18. 执行以下命令,确认可以启动MySQL进程。
    mysqld --defaults-file=/etc/mysql/conf.d/my5.6.cnf --user=mysql
    说明my5.6.cnf配置文件中有skip-grant-tables=1参数,所以启动MySQL进程不需要密码。
  19. 执行以下命令,进入MySQL交互页面。
    mysql --socket=/var/lib/mysql/mysql.sock
  20. 执行以下SQL语句,刷新数据库权限表。
    flush privileges;
  21. 执行以下SQL语句,设置用户名和密码。
    set PASSWORD FOR 'root'@'127.0.0.1'=PASSWORD('[$Password]');
    说明:[$Password]是您为root用户设置的密码。
  22. 执行以下SQL语句,退出数据库。
    exit
  23. 执行以下命令,获取当前启动的MySQL进程信息。
    ps -ef |grep mysql
  24. 执行以下命令,终止MySQL进程。
    kill -9 [$PID]
    说明:[$PID]为上一步获取的MySQL进程的PID。
  25. 执行以下命令,以文本方式编辑my5.6.cnf文件。
    vi /etc/mysql/conf.d/my5.6.cnf
  26. 在文本编辑页面中,注释掉skip-grant-tables=1字段。
  27. 执行以下命令,启动MySQL进程。
    mysqld --defaults-file=/etc/mysql/conf.d/my5.6.cnf --user=mysql
  28. 执行以下命令,输入设定的密码和账号确认可以登录MySQL交互界面。
    mysql -uroot -h127.0.0.1 -p[$Password] --socket=/var/lib/mysql/mysql.sock

数据目录不为“/var/lib/mysql”

以下是对备份文件进行恢复操作的具体步骤:

说明:在实例中执行命令前,请切换到root用户。

  1. 登录实例,执行以下命令,将您的个人软件包文档添加到源列表中。
    sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu trusty universe'
    说明:也可以直接把deb http://archive.ubuntu.com/ubuntu trusty universe字段添加到/etc/apt/sources.list文件中。
  2. 执行以下命令,更新apt-get数据库。
    apt-get update
  3. 执行以下命令,卸载mysql-common软件包。
    apt-get autoremove mysql-common
  4. 执行以下命令,确认系统不存在MySQL 5.6版本。
    apt-cache search mysql | grep mysql-server
  5. 执行以下命令,安装mysql-server-5.6软件包。
    apt-get install mysql-server-5.6
  6. 执行以下命令,检查系统是否存在MySQL进程,若存在则记录其进程PID。
    ps -ef |grep mysql
  7. 执行以下命令,终止MySQL进程。
    kill -9 [$MySQL_PID]
    说明:[$MySQL_PID]为上一步获取的MySQL进程的PID。
  8. 执行以下命令,删除指定目录。
    rm -rf /var/lib/mysql
  9. 执行以下命令,下载安装包。
    wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb
  10. 执行以下命令,安装安装包。
    sudo dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb
  11. 执行以下命令,安装percona-xtrabackup-24文件。
    apt-get install percona-xtrabackup-24
  12. 执行以下命令,下载安装包。
    wget -c '[$Bak_File]' -O [$Custom_File].tar.gz
    说明
    • [$Bak_File]为数据备份文件外网下载地址。
    • [$Custom_File]为自定义文件名称。
  13. 执行以下命令,创建数据目录。
    mkdir /data/mysql -p
  14. 执行以下命令,修改目录属主和属组。
    chown -R mysql:mysql /data/mysql
  15. 执行以下命令,对数据目录进行授权。
    chmod 700 /data/mysql
  16. 执行以下命令,以文本方式编辑my5.6.cnf文件。
    vi /etc/mysql/conf.d/my5.6.cnf
  17. 将以下内容添加到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
  18. 执行以下命令,解压文件包到指定目录。
    tar -zxvf a.tar.gz -C /data/mysql
    说明:假设a.tar.gz文件包是被下载到/root目录下的。
  19. 依次执行以下命令,恢复解压好的备份文件。
    cd /data/mysql   
    innobackupex --defaults-file=/etc/mysql/conf.d/my5.6.cnf --apply-log /data/mysql
  20. 执行以下命令,修改文件属主,并确定文件所属为MySQL用户。
    chown -R mysql:mysql .
  21. 执行以下命令,创建短连接。
    ln -s /data/mysql /var/lib/mysql
  22. 执行以下命令,编辑指定文件。
    vi /etc/apparmor.d/tunables/alias
  23. 在编辑页面中,添加以下内容。
    alias /var/lib/mysql/ -> /data/mysql/,
  24. 执行以下命令,重新加载配置文件。
    sudo /etc/init.d/apparmor reload
  25. 执行以下命令,确认可以启动MySQL进程。
    mysqld --defaults-file=/etc/mysql/conf.d/my5.6.cnf --user=mysql
    说明my5.6.cnf配置文件中有skip-grant-tables=1参数,所以启动MySQL进程不需要密码。
  26. 执行以下命令,进入MySQL交互页面。
    mysql --socket=/data/mysql/mysql.sock
  27. 执行以下SQL语句,刷新数据库权限表。
    flush privileges;
  28. 执行以下SQL语句,设置用户名和密码。
    set PASSWORD FOR 'root'@'127.0.0.1'=PASSWORD('[$Password]');
    说明:[$Password]是您为root用户设置的密码。
  29. 执行以下SQL语句,退出数据库。
    exit
  30. 执行以下命令,获取当前启动的MySQL进程信息。
    ps -ef |grep mysql
  31. 执行以下命令,终止MySQL进程。
    kill -9 [$PID]
    说明:[$PID]为上一步获取的MySQL进程的PID。
  32. 执行以下命令,以文本方式编辑my5.6.cnf文件。
    vi /etc/mysql/conf.d/my5.6.cnf
  33. 在文本编辑页面中,注释掉skip-grant-tables=1字段。
  34. 执行以下命令,启动MySQL进程。
    mysqld --defaults-file=/etc/mysql/conf.d/my5.6.cnf --user=mysql
  35. 执行以下命令,输入设定的密码和账号确认可以登录MySQL交互界面。
    mysql -uroot -h127.0.0.1 -p[$Password] --/data/mysql/mysql.sock

适用于

  • 云数据库RDS MySQL版