(一)备份
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| mzl |
+--------------------+
(1) 执行全库备份
mysqldump -uroot -p123456 -h192.168.210.85 -P3306 --all-databases --single-transaction --force > all_db.sql
注:information_schema是特殊的数据库,即使全备,也不会备份该数据库。
(2) 备份多个数据库
备份多个数据库:mysql和mzl
mysqldump -uroot -p123456 -h192.168.210.85 -P3306 --databases mysql mzl --single-transaction --force > mzl_mysql_db.sql
(3) 备份单个数据库
根据是否使用“--databases”参数,单个数据库的备份有2种方法。
方法1:备份单个数据库:mzl,使用--databases参数
mysqldump -uroot -p123456 -h192.168.210.85 -P3306 --databases mzl --single-transaction --force > mzl.sql
方法2:备份单个数据库:mzl,不使用--databases参数
mysqldump -uroot -p123456 -h192.168.210.15 -P3306 mzl --single-transaction --force > mzl01.sql
两者的区别在于添加“--database”参数,则会在导出语句中包含建库语句。
[root@k8s-master mysqlbackup]# cat mzl.sql |grep "CREATE DATABASE"
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `testdb` /*!40100 DEFAULT CHARACTER SET utf8 */;
[root@k8s-masterr mysqlbackup]# cat mzl01.sql |grep "CREATE DATABASE"
(4)导出数据库的某些表
导出mzl的表class01,class02,目前来看,只能针对单个数据库的表进行导出
mysqldump -uroot -p123456 -h192.168.210.85 -P3306 --tables mzl class01 class02 --single-transaction --force > mzlall.sql
(二)还原
执行还原操作
[root@k8s-master mysqlbackup]# mysql -uroot -p123456 -h192.168.210.85 -P3306 < all_db.sql
查看还原结果:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| mzl |
+--------------------+
使用“--databases”参数创建的备份,必须先创建数据库,再执行导入,导入时须指定数据库名称。
如果没有创建数据库 或者 不指定数据库名称,则还原报错
[root@k8s-master mysqlbackup]# mysql -uroot -p123456 -h192.168.210.85 -P3306 < mzl.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1046 (3D000) at line 22: No database selected
指定数据库名称,还原正常
[root@k8s-master mysqlbackup]# mysql -uroot -p123456 -h192.168.210.85 -P3306 mzl< mzl.sql
mysql: [Warning] Using a password on the command line interface can be insecure.