物理拷贝备份mysql到其他机器上恢复 经常会遇到mysql数据要迁徙的情况 ,逻辑导出是可以的 但是就是太慢 第三方工具也同样可以用 也是操作麻烦,最简单粗暴的方式就是直接拷贝物理文件来的最快 也很简单 当然 前提是远程服务器和目标服务器是相同的文件系统和mysql版本,不然还是没法这么干的 ,可以参考MySQL数据库迁移(直接复制文件),参考是参考,还是要动手实践。
1.拷贝目标数据库文件 拷贝方式也是很多,可以用ftp,scp,rcp,rsync 参考:linux服务器之间传输文件的四种方式,这里我采用rsync
[root@localhost mysql]# service mysqld stop
[root@localhost mysql]# cp -a/var/lib/mysql/home/mysql
*****记得把数据/home/mysql目录下的ib_logfile(这个有待进一步验证 最好是操作前做好备份)和.err文件删除
目标服务器的数据目录替换 首先停止mysql并对数据目录进行备份以防止操作失败能回滚
[root@localhost mysql]# service mysqld stop
[root@localhost mysql]# mv/var/lib/mysql/var/lib/mysql_bak
从源服务器上拷贝备份文件到目标服务器:
[root@localhost lib]# rsync -r /home/mysql root@192.168.153.44:/var/lib/
root@192.168.153.44's password:
skipping non-regular file "mysql/mysql.sock"
【mysql|物理拷贝备份mysql到其他机器上恢复】不要忘记参数 -r 需要输入一次拷贝文件的目标服务器密码 就是192.168.153.44的密码,拷贝结束去目标服务器上看下文件是不是缺少,查看/var/lib/mysql/文件夹
[root@localhost mysql]# ll -h
总用量 1.6G
-rw-rw---- 1 mysql mysql539 10月 25 16:18 122-55-slow.log
-rw-r----- 1 mysql mysql56 10月 25 16:16 auto.cnf
drwx------ 2 mysql mysql 4.0K 10月 25 16:16 cumcmtre
drwx------ 2 mysql mysql71 10月 25 16:16 es
-rw-r----- 1 mysql mysql 588M 10月 25 16:18 ibdata1
-rw-rw---- 1 mysql mysql6 10月 25 16:18 localhost.localdomain.pid
-rw-r----- 1 mysql mysql143 10月 25 16:17 localhost-relay-bin.000001
-rw-r----- 1 mysql mysql29 10月 25 16:17 localhost-relay-bin.index
drwx------ 2 mysql mysql 4.0K 10月 25 16:16 mysql
-rw-r----- 1 mysql mysql 270K 10月 25 16:17 mysql-bin.000004
-rw-r----- 1 mysql mysql214 10月 25 16:17 mysql-bin.000005
-rw-r----- 1 mysql mysql214 10月 25 16:17 mysql-bin.000006
-rw-r----- 1 mysql mysql365 10月 25 16:18 mysql-bin.000007
-rw-rw---- 1 mysql mysql191 10月 25 16:18 mysql-bin.000008
-rw-rw---- 1 mysql mysql95 10月 25 16:18 mysql-bin.index
srwxrwxrwx 1 mysql mysql0 10月 25 16:18 mysql.sock
drwx------ 2 mysql mysql 4.0K 10月 25 16:16 performance_schema
-rw-r--r-- 1 mysql mysql131 10月 25 16:16 RPM_UPGRADE_HISTORY
-rw-r--r-- 1 mysql mysql131 10月 25 16:16 RPM_UPGRADE_MARKER-LAST
我们看到数据文件已经都拷贝过来了
文件权限修改
[root@localhost mysql]#ll
总用量 602436
-rw-r----- 1 root root56 10月 25 16:16 auto.cnf
...
...
-rw-r--r-- 1 root root131 10月 25 16:16 RPM_UPGRADE_MARKER-LAST
我们看到权限是root组的root用户,这里我们要授权给MySQL组的mysql用户
[root@localhost mysql]# chown -R mysql.mysql /var/lib/mysql
[root@localhost mysql]# ll
总用量 602436
-rw-r----- 1 mysql mysql56 10月 25 16:16 auto.cnf
...
...
-rw-r--r-- 1 mysql mysql131 10月 25 16:16 RPM_UPGRADE_MARKER-LAST
修改auto.cnf的server_uuid后启动mysql 确认文件不缺失 修改auto.cnf的server_uuid 说明下这里是为了搭建主从配置的时候做准备的,如果这两个服务器以后也是独立运行 不会有任何主从这种关系可以不配置。
[root@localhost ~]# cd /var/lib/mysql
[root@localhost mysql]# ls
103-55.errcumcmib_logfile0localhost-relay-bin.000001mysql-bin.000004mysql-bin.000007mysql.sockRPM_UPGRADE_MARKER-LAST
103-55-slow.logesib_logfile1localhost-relay-bin.indexmysql-bin.000005mysql-bin.000008performance_schema
auto.cnfibdata1localhost.localdomain.pidmysqlmysql-bin.000006mysql-bin.indexRPM_UPGRADE_HISTORY
[root@localhost mysql]# vim auto.cnf
文件内容:
[auto]
server-uuid=00d7559a-121b-45cc-a124-5d77df0d46ca[root@localhost mysql]# service mysqld restart
Redirecting to /bin/systemctl restartmysqld.service
启动mysql
[root@localhost mysql]# service mysqld status
Redirecting to /bin/systemctl statusmysqld.service
mysqld.service - MySQL Percona Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service;
enabled)
Active: inactive (dead) since 四 2018-10-25 16:13:21 CST;
4min 46s ago
Process: 21358 ExecStartPost=/usr/bin/mysql-systemd post (code=exited, status=0/SUCCESS)
Process: 21357 ExecStart=/usr/bin/mysqld_safe (code=exited, status=0/SUCCESS)
Process: 21327 ExecStartPre=/usr/bin/mysql-systemd pre (code=exited, status=0/SUCCESS)
Main PID: 21357 (code=exited, status=0/SUCCESS)10月 25 16:12:36 localhost.localdomain systemd[1]: Starting MySQL Percona Server...
10月 25 16:12:37 localhost.localdomain mysqld_safe[21357]: 181025 16:12:37 mysqld_safe Logging to '/var/lib/mysql/103-55.err'.
10月 25 16:12:37 localhost.localdomain mysqld_safe[21357]: 181025 16:12:37 mysqld_safe Starting mysqld daemon with databases from /.../mysql
10月 25 16:12:44 localhost.localdomain systemd[1]: Started MySQL Percona Server.
10月 25 16:13:19 localhost.localdomain systemd[1]: Stopping MySQL Percona Server...
10月 25 16:13:21 localhost.localdomain mysqld_safe[21357]: 181025 16:13:21 mysqld_safe mysqld from pid file /var/lib/mysql/localhos... ended
10月 25 16:13:21 localhost.localdomain systemd[1]: Stopped MySQL Percona Server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost mysql]# service mysqld start
Redirecting to /bin/systemctl startmysqld.service
启动完毕 查看文件
[root@localhost mysql]# ll -h
总用量 1.6G
-rw-r----- 1 mysql root105K 10月 25 16:18 104443-55.err
...
...
-rw-r--r-- 1 mysql mysql131 10月 25 16:16 RPM_UPGRADE_MARKER-LAST
我们看到ib_logfile0和.err文件也有了 打开数据库 没有任何问题 用户账户就要用远程服务器的账户了 目标服务器的已经被覆盖。
推荐阅读
- mysql|InnoDB数据页结构
- javaweb|基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统
- mysql|一文深入理解mysql
- Java毕业设计项目实战篇|Java项目:在线嘿嘿网盘系统设计和实现(java+Springboot+ssm+mysql+maven)
- SQL|SQL基本功(五)--函数、谓词、CASE表达式
- vue|电商后台管理系统(vue+python|node.js)
- Java及基础算法及数据结构|旧笔记整理(MySQL)
- 企业实战|Linux 五种IO模型详细图解
- mysql|双非本211硕,无实习无项目,自学大数据开发,秋招上岸
- 数据库|Mysql--InnoDB存储引擎详解