02__mysql-数据库迁移

1、mysqldump

1>备份/导出数据

1<命令语法

格式:mysqldump -h主机ip -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql

例如: mysqldump -h 192.168.1.100 -p 3306 -uroot -p123456 --database cmdb > /data/backup/cmdb.sql

2<压缩备份

导出的数据有可能比较大,不好备份到远程,这时候就需要进行压缩

格式:mysqldump -h主机ip -P端口 -u用户名 -p密码 --database 数据库名 | gzip > 文件名.sql.gz

例如: mysqldump -h192.168.1.100 -p 3306 -uroot -ppassword --database cmdb | gzip > /data/backup/cmdb.sql.gz

3<备份同个库多个表

格式:mysqldump -h主机ip -P端口 -u用户名 -p密码 --database 数据库名 表1 表2 .... > 文件名.sql


例如 mysqldump -h192.168.1.100 -p3306 -uroot -ppassword cmdb t1 t2 > /data/backup/cmdb_t1_t2.sql

4<同时备份多个库

格式:mysqldump -h主机ip -P端口 -u用户名 -p密码 --databases 数据库名1 数据库名2 数据库名3 > 文件名.sql


例如:mysqldump -h192.168.1.100 -uroot -ppassword --databases cmdb bbs blog > /data/backup/mutil_db.sql

5<备份实例上所有的数据库

格式:mysqldump -h主机ip -P端口 -u用户名 -p密码 --all-databases > 文件名.sql


例如:mysqldump -h192.168.1.100 -p3306 -uroot -ppassword --all-databases > /data/backup/all_db.sql

6<备份数据出带删除数据库或者表的sql备份

格式:mysqldump -h主机ip -P端口 -u用户名 -p密码 --add-drop-table --add-drop-database 数据库名 > 文件名.sql


例如:mysqldump -uroot -ppassword --add-drop-table --add-drop-database cmdb > /data/backup/all_db.sql

7<备份数据库结构,不备份数据

格式:mysqldump -h主机ip -P端口 -u用户名 -p密码 --no-data 数据库名1 数据库名2 数据库名3 > 文件名.sql


例如:mysqldump --no-data –databases db1 db2 cmdb > /data/backup/structure.sql

2>恢复/导入数据

1<命令语法

语法:
mysql -h主机ip -P端口 -u用户名 -p密码 数据库名 < /opt/mytest_bak.sql   #库必须保留,空库也可
说明:指定dbname,相当于use <dbname>

2<使用 mysql 命令导入

使用 mysql 命令导入数据库格式如下:

mysql -u用户名 -p 数据库名 < 数据库名.sql

以下实例将备份的数据库 abc.sql 导入到数据库中:

# mysql -uroot -p123456 < abc.sql

3<恢复整个数据库


mysql -u  b_user -h 101.3.20.33 -p'H_password' -P3306   < all_database.sql

3<使用 source 命令导入

使用 source 命令需要我们先登录到 mysql 中,并创建一个空的数据库:

导入数据表
mysql> create database abc;      # 创建数据库
mysql> use abc;                  # 使用已创建的数据库 
mysql> set names utf8;           # 设置编码
mysql> source /home/abc/abc.sql  # 导入备份数据库

导入数据库
mysql> source /home/abc/abc.sql  # 导入备份数据库