设为首页 收藏本站
查看: 468|回复: 0

[经验分享] 迁移 RDS for MySQL 数据到本地 MySQL-jin204

[复制链接]

尚未签到

发表于 2018-9-30 13:23:22 | 显示全部楼层 |阅读模式
  近期领导要求创建一个灰度环境,做一个预发布数据库的环境。
  因为我公司用的数据库是线上阿里云RDS数据库,要把线上的数据弄到线下数据库中来,根据阿里云给出的文档进行操作,但是老是在最后一步的时候报错,老是弄不成功,所以才有了我这份文档的由来。
  首先需要下载跟线上阿里云的数据库同样版本的数据库安装包或者说二进制编码包(已编译,可以直接使用)
  链接如下:
  http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
  解压缩:
  root@ubuntu:/data#tar  -xzvf  mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
  root@ubuntu:/data# mv  mysql-5.6.36-linux-glibc2.5-x86_64  mysql
  root@ubuntu:/data#cd  mysql
  root@ubuntu:/data/mysql#
  root@ubuntu:/data/mysql# ls  //解压缩出来的文件如下所示,不用源码编译安装,直接使用即可;
  bin  COPYING  data  docs  include  lib  man  my.cnf  my-new.cnf  mysql-test  README  scripts  share  sql-bench  support-files
  接下来就是解压缩线上数据库的备份文件:
  root@ubuntu:/data/mysql#cd  ../
  root@ubuntu:/data# tar -xzvf h7351_data_20170804032.tar.gz  -C /data/mariadb/
  待得解压缩完成后,恢复数据文件:
  首先需要安装innobackupex命令,所以要安装这个包文件:
  root@ubuntu:/data#apt-get install percona-xtrabackup
  root@ubuntu:/data#innobackupex --defaults-file=./backup-my.cnf --apply-log --ibbackup xtrabackup_56  ./      //必须要加上后面的--ibbackup  xtrabackup_56,我这里是56,因为我的数据库版本是5.6版本的;
  最后系统显示 innobackupex: completed OK!,则数据恢复成功。
  数据恢复成功之后,修改恢复数据mariadb目录下文件(包含mariadb目录)的属主和属组:
  新建mysql用户:
  root@ubuntu:/data#useradd  mysql
  root@ubuntu:/data# chown -R mysql.mysql mariadb/   //修改解压缩后的数据文件的属主和属组,以级联的方式,把mariadb目录下的所有文件修改属主和属组为mysql
  初始化之前需要修改配置文件;
  root@ubuntu:~#cd /data/mariadb  //数据库的数据文件解压缩的目录
  root@ubuntu:/data/mysql/scripts# cd /data/mariadb/
  root@ubuntu:/data/mariadb# vi backup-my.cnf   //我的配置文件如下:
  把将解压文件 backup-my.cnf 中的 innodb_fast_checksum、innodb_page_size、innodb_log_block_size 注释掉,并且添加 datadir=/data/mariadb
  # 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:200M:autoextend
  innodb_log_files_in_group=2
  innodb_log_file_size=1572864000
  #innodb_fast_checksum=false
  #innodb_page_size=16384
  #innodb_log_block_size=512
  innodb_undo_directory=.
  innodb_undo_tablespaces=0
  datadir=/data/mariadb
  #rds_encrypt_data=false
  #innodb_encrypt_algorithm=aes_128_ecb
  初始化操作:
  进入刚解压的mysql安装的位置/data/mysql
  root@ubuntu:~# cd /data/mysql/
  root@ubuntu:/data/mysql# ls
  bin  COPYING  data  docs  include  lib  man  my.cnf  my-new.cnf  mysql-test  README  scripts  share  sql-bench  support-files
  root@ubuntu:/data/mysql# cd scripts/
  root@ubuntu:/data/mysql/scripts#
  root@ubuntu:/data/mysql/scripts# ./mysql_install_db --user=mysql --datadir=/data/mariadb --basedir=/data/mysql --defaults-file=/data/mariadb/backup-my.cnf   //这里需要指定配置文件,不然它会在初始化的时候去到/etc/目录下查找
  出现OK即表示初始化成功;
  接下来就是创建快捷方式啦:
  root@ubuntu:/data/mariadb# cd /data/mysql/support-files/   //进入mysql安装位置的这个目录
  root@ubuntu:/data/mysql/support-files# ls
  binary-configure  magic  my-default.cnf  mysqld_multi.server  mysql-log-rotate  mysql.server
  root@ubuntu:/data/mysql/support-files# cp mysql.server /etc/init.d/mysqld   //复制启动文件到/etc/init.d/目录下
  root@ubuntu:/data/mysql/support-files#vi  /etc/init.d/mysqld  //做一下修改,具体修改的位置如下:
  basedir=/data/mysql
  datadir=/data/mariadb
  修改完成后保存退出,还需要注意一个地方,就是配置文件,如果启动的时候不指定配置文件,那么它就会调用/etc/my.cnf文件,所以需要指定,有两种方法,一种是直接在/etc/init.d/mysqld中修改,如:
  #conf=/etc/my.cnf
  conf=/data/mariadb/backup-my.cnf
  另一种方法就是:直接复制解压文件mariadb目录下的backup-my.cnf文件到/etc/my.cnf,如
  root@ubuntu:/data/mariadb# cp backup-my.cnf /etc/my.cnf   //这样就可以不用修改/etc/init.d/mysqld文件中的conf
  启动mysql:
  root@ubuntu:/data/mariadb#/etc/init.d/mysqld start  //未报错,即表示是正常的
  root@ubuntu:/data/mariadb#ps aux | grep mysql  //查看是否有mysql进程
  root      5706  0.0  0.0   4464  1624 pts/0    S    09:53   0:00 /bin/sh /data/mysql/bin/mysqld_safe --datadir=/data/mariadb --pid-file=/data/mariadb/ubuntu.pid
  mysql     5900  0.3  7.2 1572664 586972 pts/0  Sl   09:53   0:08 /data/mysql/bin/mysqld --basedir=/data/mysql --datadir=/data/mariadb --plugin-dir=/data/mysql/lib/plugin --user=mysql --log-error=/data/mariadb/ubuntu.err --pid-file=/data/mariadb/ubuntu.pid
  root      6009  0.0  0.0  13464  2124 pts/1    S+   10:29   0:00 grep --color=auto mysql
  root@ubuntu:/data/mariadb#
  附上阿里云文档上的操作:
  操作步骤
  本例以本地服务器为 RHEL6/x64 系统,备份文件存储路径为 /home/mysql/ 为例。

  •   下载云数据库 物理备份文件 并上传至目标服务器。备份文件获取方法请参见 下载备份数据。如果目标服务器可以访问源实例,您也可以使用 wegt "url" 下载备份文件。其中 url 为备份文件下载地址。
  •   切换路径到备份文件所在路径。

  •   cd /home/mysql/

  •   解压备份文件。

  •   tar vizxf filename.tar.gz
  其中,filename.tar.gz 为备份文件名。

  •   检查解压后文件包含的数据库是否正确。

  •   cd filename/
  •   ll
  系统显示如下,其中 db0dz1rv11f44yg2、mysql 和 test 为云数据库中存在的数据库。

  •   -rw-r--r-- 1 root root       269 Aug 19 18:15 backup-my.cnf
  •   drwxr-xr-x 2 root root      4096 Aug 21 10:31 db0dz1rv11f44yg2
  •   -rw-rw---- 1 root root 209715200 Aug  7 10:44 ibdata1
  •   drwxr-xr-x 2 root root      4096 Aug 21 10:31 mysql
  •   drwxr-xr-x 2 root root      4096 Aug 21 10:31 test
  •   -rw-r--r-- 1 root root        10 Aug 19 18:15 xtrabackup_binary
  •   -rw-r--r-- 1 root root        23 Aug 19 18:15 xtrabackup_binlog_info
  •   -rw-r--r-- 1 root root        77 Aug 19 18:15 xtrabackup_checkpoints
  •   -rw-r--r-- 1 root root      2560 Aug 19 18:15 xtrabackup_logfile
  •   -rw-r--r-- 1 root root        72 Aug 19 18:15 xtrabackup_slave_info

  •   恢复数据文件。

  •   innobackupex --defaults-file=./backup-my.cnf --apply-log ./
  系统显示 innobackupex: completed OK!,则数据恢复成功。

  •   修改配置文件。将解压文件 backup-my.cnf 中的 innodb_fast_checksum、innodb_page_size、innodb_log_block_size 注释掉,并且添加 datadir=/home/mysql,如下所示。

  •   # This MySQL options file was generated by innobackupex-1.5.1.
  •   # The MySQL Server
  •   [mysqld]
  •   innodb_data_file_path=ibdata1:200M:autoextend
  •   innodb_log_files_in_group=2
  •   innodb_log_file_size=524288000
  •   #innodb_fast_checksum=0
  •   #innodb_page_size=16364
  •   #innodb_log_block_size=512
  •   datadir=/home/mysql/

  •   重装 MySQL 系统库,取得数据库的 root 权限。

  •   rm -rf mysql
  •   mysql_install_db --user=mysql --datadir=/home/mysql/
  系统显示如下,则 mysql 系统库重装成功。

  •   Installing MySQL system table...
  •   OK
  •   Filling help table...
  •   OK

  •   修改文件属主。

  •   chown -R mysql:mysql /home/mysql/

  •   启动 mysqld 进程。

  •   mysqld_safe --defaults-file=/home/mysql/backup-my.cnf &

  •   使用客户端登录数据库。

  •   mysql –u root –p

  •   验证数据库是否完整。

  •   show databases;
  系统显示入选,则数据库恢复成功。

  •   +--------------------+
  •   | Database           |
  •   +--------------------+
  •   | information_schema |
  •   | db0dz1rv11f44yg2   |
  •   | mysql              |
  •   | performance_schema |
  •   | test               |
  •   +--------------------+
  利用逻辑备份文件导出
  本例以本地服务器为 RHEL6/x64 系统,备份文件存储路径为 /home/mysql/ 为例。
  操作步骤

  •   下载云数据库 逻辑备份文件 并上传至目标服务器。备份文件获取方法请参见 下载备份数据。如果目标服务器可以访问源实例,您也可以使用 wegt "url" 下载备份文件。其中 url 为备份文件下载地址。
  •   切换路径到备份文件所在路径。

  •   cd /home/mysql/

  •   解压备份文件。

  •   tar vizxf filename.tar.gz
  其中,filename.tar.gz 为备份文件名。

  •   解压 sql 压缩文件。

  •   gunzip filename.sql.gz
  其中,filename.sql.gz 为 sql 压缩文件名。

  •   执行逻辑导入操作,将数据导入目标数据库。

  •   mysql -u userName -p -h hostName -P port dbName < filename.sql
  其中,filename.sql 为解压后的 sql 文件。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-606787-1-1.html 上篇帖子: Mysql show index解释 下篇帖子: apache+php+mysql+phpadmin 服务环境搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表