备份策略一:直接拷贝数据库文件
当你使用直接备份方法时,必须保证表不在被使用。如果服务器在你正在拷贝一个表时改变它,拷贝就失去意义。保证你的拷贝完整性的最好方法是关闭服务器,拷贝文件,然后重启服务器。
当你完成了备份时,需要重启服务器(如果关闭了它)或释放加在表上的锁定(如果你让服务器运行)。要用直接拷贝文件把一个数据库从一台机器拷贝到另一台机器上,只是将文件拷贝到另一台服务器主机的适当数据目录下即可。
要确保文件是MyIASM格式或两台机器有相同的硬件结构,否则你的数据库在另一台主机上有奇怪的内容。
(文件系统备份工具 cp)(适合小型数据库,是最可靠的)
- 停止MySQL服务器
[root@localhost ~]# systemctl stop mysqld
- 直接复制整个数据库目录。注意:使用这种方法最好还原到相同版本服务器中,不同版本可能不兼容
[root@localhost ~]# cd /var/lib/mysql //切换到数据库目录
[root@localhost mysql]# ll
total 110684
-rw-r-----. 1 mysql mysql 56 Mar 26 14:37 auto.cnf
-rw-------. 1 mysql mysql 1680 Mar 26 14:37 ca-key.pem
-rw-r--r--. 1 mysql mysql 1112 Mar 26 14:37 ca.pem
-rw-r--r--. 1 mysql mysql 1112 Mar 26 14:37 client-cert.pem
-rw-------. 1 mysql mysql 1676 Mar 26 14:37 client-key.pem
drwxr-x---. 2 mysql mysql 94 Apr 22 14:40 db
-rw-r-----. 1 mysql mysql 326 Apr 22 15:05 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 Apr 22 15:05 ibdata1
-rw-r-----. 1 mysql mysql 50331648 Apr 22 15:05 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 Mar 26 14:37 ib_logfile1
-rw-r-----. 1 mysql mysql 262 Apr 22 10:15 localhost.log
-rw-r-----. 1 mysql mysql 903 Apr 22 14:03 localhost-slow.log
drwxr-x---. 2 mysql mysql 4096 Mar 26 14:37 mysql
-rw-r-----. 1 mysql mysql 2857 Apr 22 15:05 mysql-bin.000001
-rw-r-----. 1 mysql mysql 32 Apr 22 14:10 mysql-bin.index
-rw-r-----. 1 mysql mysql 7980 Apr 22 10:00 mysqld.log
drwxr-x---. 2 mysql mysql 8192 Mar 26 14:37 performance_schema
-rw-------. 1 mysql mysql 1680 Mar 26 14:37 private_key.pem
-rw-r--r--. 1 mysql mysql 452 Mar 26 14:37 public_key.pem
-rw-r--r--. 1 mysql mysql 1112 Mar 26 14:37 server-cert.pem
-rw-------. 1 mysql mysql 1676 Mar 26 14:37 server-key.pem
drwxr-x---. 2 mysql mysql 8192 Mar 26 14:37 sys
drwxr-x---. 2 mysql mysql 54 Apr 22 11:14 test
[root@localhost mysql]# tar czf ~/db.tar.gz * //将此目录的所有内容打包压缩到家目录
[root@localhost ~]# scp db.tar.gz 192.168.25.133:~ //复制到133服务器的家目录
root@192.168.25.133's password:
db.tar.gz 100% 9100 4.8MB/s 00:00
[root@localhost ~]# ll db.tar.gz //133服务器家目录内查看
-rw-r--r-- 1 root root 9100 Apr 22 15:29 db.tar.gz
- 目标服务器上还原。
[root@localhost ~]# rm -rf /var/lib/mysql/* //清空133服务器上原本数据库目录内的文件
[root@localhost ~]# tar xf db.tar.gz -C /var/lib/mysql //将打包压缩后的备份数据库文件解压到数据库目录仲
- 目标服务器数据库目录授权,重启服务器测试。
[root@localhost ~]# chown -R mysql:mysql /var/lib/mysql/ //将所属组所属用户改为mysql(授权)
[root@localhost ~]# systemctl start mysqld //启动MySQL服务器
#再次进入MySQL查询数据库和表,会发现全都在