mysql完全备份分为两种:
1、物理备份:通过cp,tar等命令拷贝数据库的所有文件,然后把这些文件转移到另一台数据库备份服务器上(使用scp),修改这些文件的所有者以及所有组(chown -R mysql:mysql /xxx/),把文件放到对应的目录下,然后重启mysql服务。(转移文件之前注意停止mysql服务)
linux和windows所使用的的文件系统不一样,因此这种方式的备份跨平台性不太好。如果备份的数据量很大,不仅数据的传输很慢,还需要在备份服务器留有足够大的空间。
cp -r /var/lib/mysql / #复制数据库下的所有文件
scp -r /mysql root@192.168.4.10:/var/lib/mysql #把文件复制到备份服务器4.10上
chown -R mysql:mysql /var/lib/mysql #在4.10上操作,修改mysql文件及子文件的所有者
systemctl restart mysqld #在4.10上操作,重启mysql服务
2、逻辑备份:使用mysql提供的命令进行备份。
逻辑备份不仅提供完全备份,还提供了增量备份,以及差异备份。
完全备份/恢复命令:
备份:
mysqldump -uroot -p密码 库名 > xxx.sql
库名的表示:
-A:代表所有数据库
mysqldump -uroot -p123456 -A > /root/all_db.sql
-B 数据库名1 数据库名2 ... 数据库n:多个数据库之间使用空格隔开
mysqldump -uroot -p123456 -B mysql user test > many_db.sql
单个数据库名:
mysqldump -uroot -p123456 mysql > one_db.sql
数据库中的某个表:数据库名 和 表名之间使用空格隔开
mysqldump -uroot -p123456 test goods > one_table.sql
恢复:
mysql -uroot -p密码 [库名] < xxx.sql
多个库的时候可以不写库名
mysql -uroot -p123456 test < one_table.sql #恢复一个表的数据
mysql -uroot -p123456 mysql < one_db.sql #恢复一个数据库的数据
mysql -uroot -p123456 < all_db.sql #恢复所有数据库的数据
写总结的第三十四天!!!