策略一:直接拷贝数据库文件
- 当你使用直接备份方法时,必须保证表不在被使用。如果服务器在你正在拷贝一个表时改变它,拷贝就失去意义。保证你的拷贝完整性的最好方法是关闭服务器,拷贝文件,然后重启服务器。
- 当你完成了备份时,需要重启服务器(如果关闭了它)或释放加在表上的锁定(如果你让服务器运行)。要用直接拷贝文件把一个数据库从一台机器拷贝到另一台机器上,只是将文件拷贝到另一台服务器主机的适当数据目录下即可。
- 要确保文件是MyIASM格式或两台机器有相同的硬件结构,否则你的数据库在另一台主机上有奇怪的内容。
- (文件系统备份工具 cp)(适合小型数据库,是最可靠的)
环境
两台基于Centos 系统的MySQL-7.5.14 服务器
ip分别为136和140
要求
将136的MySQL数据库所有数据备份到140的数据库服务器上,并能够确保备份数据在140服务器上的可用性
步骤:
1.停止MySQL服务
[root@localhost ~]# systemctl stop mysqld
2.直接复制整个数据库目录
- 注意:使用这种方法最好还原到相同版本服务器中,不同版本可能不兼容。
[root@localhost ~]# cd /var/lib/mysql
[root@localhost mysql]# tar czf /opt/all_db.tar.gz * //将MySQL的文件压缩打包
[root@localhost mysql]# tar tf /opt/all_db.tar.gz //列出信息
[root@localhost mysql]# scp /opt/all_db.tar.gz 192.168.242.140:/opt //将文件传送到目标服务器(这里是ip140)上
3.目标服务器上还原
- 140主机开启二进制日志
[root@localhost ~]# vim /etc/my.cnf
在[mysqld]下添加:
log_bin=mysql-bin
server_id=40 //需要配置server_id,这里取ip地址后两位,注意不要重复
- 140主机开始还原数据
[root@localhost mysql]# ll /opt/all_db.tar.gz //查看需要备份的数据包
-rw-r--r--. 1 root root 1417610 Jan 18 11:29 /opt/all_db.tar.gz
[root@localhost mysql]# systemctl stop mysqld //停止sql服务
[root@localhost mysql]# cd /var/lib/mysql //切换到data目录下
[root@localhost mysql]# tar xf /opt/all_db.tar.gz -C /var/lib/mysql //解压备份数据到mysqld服务数据存放目录
[root@localhost mysql]# systemctl start mysqld //启动mysql服务