经常会遇到mysql数据要迁徙的情况 ,逻辑导出是可以的 但是就是太慢 第三方工具也同样可以用 也是操作麻烦,最简单粗暴的方式就是直接拷贝物理文件来的最快 也很简单 当然 前提是远程服务器和目标服务器是相同的文件系统和mysql版本,不然还是没法这么干的 ,可以参考MySQL数据库迁移(直接复制文件),参考是参考,还是要动手实践。
拷贝方式也是很多,可以用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文件删除
从源服务器上拷贝备份文件到目标服务器:
[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"不要忘记参数 -r 需要输入一次拷贝文件的目标服务器密码 就是192.168.153.44的密码,拷贝结束去目标服务器上看下文件是不是缺少,查看/var/lib/mysql/文件夹
[root@localhost mysql]# ll -h 总用量 1.6G -rw-rw---- 1 mysql mysql 539 10月 25 16:18 122-55-slow.log -rw-r----- 1 mysql mysql 56 10月 25 16:16 auto.cnf drwx------ 2 mysql mysql 4.0K 10月 25 16:16 cumcmtre drwx------ 2 mysql mysql 71 10月 25 16:16 es -rw-r----- 1 mysql mysql 588M 10月 25 16:18 ibdata1 -rw-rw---- 1 mysql mysql 6 10月 25 16:18 localhost.localdomain.pid -rw-r----- 1 mysql mysql 143 10月 25 16:17 localhost-relay-bin.000001 -rw-r----- 1 mysql mysql 29 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 mysql 214 10月 25 16:17 mysql-bin.000005 -rw-r----- 1 mysql mysql 214 10月 25 16:17 mysql-bin.000006 -rw-r----- 1 mysql mysql 365 10月 25 16:18 mysql-bin.000007 -rw-rw---- 1 mysql mysql 191 10月 25 16:18 mysql-bin.000008 -rw-rw---- 1 mysql mysql 95 10月 25 16:18 mysql-bin.index srwxrwxrwx 1 mysql mysql 0 10月 25 16:18 mysql.sock drwx------ 2 mysql mysql 4.0K 10月 25 16:16 performance_schema -rw-r--r-- 1 mysql mysql 131 10月 25 16:16 RPM_UPGRADE_HISTORY -rw-r--r-- 1 mysql mysql 131 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 mysql 56 10月 25 16:16 auto.cnf ... ... -rw-r--r-- 1 mysql mysql 131 10月 25 16:16 RPM_UPGRADE_MARKER-LAST说明下这里是为了搭建主从配置的时候做准备的,如果这两个服务器以后也是独立运行 不会有任何主从这种关系可以不配置。
[root@localhost ~]# cd /var/lib/mysql [root@localhost mysql]# ls 103-55.err cumcm ib_logfile0 localhost-relay-bin.000001 mysql-bin.000004 mysql-bin.000007 mysql.sock RPM_UPGRADE_MARKER-LAST 103-55-slow.log es ib_logfile1 localhost-relay-bin.index mysql-bin.000005 mysql-bin.000008 performance_schema auto.cnf ibdata1 localhost.localdomain.pid mysql mysql-bin.000006 mysql-bin.index RPM_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 restart mysqld.service启动完毕 查看文件
[root@localhost mysql]# ll -h 总用量 1.6G -rw-r----- 1 mysql root 105K 10月 25 16:18 104443-55.err ... ... -rw-r--r-- 1 mysql mysql 131 10月 25 16:16 RPM_UPGRADE_MARKER-LAST我们看到ib_logfile0和.err文件也有了 打开数据库 没有任何问题 用户账户就要用远程服务器的账户了 目标服务器的已经被覆盖。