一,数据备份
- 使用mysqldump命令备份
mysqldump是mysql提供的一个很有用的数据库备份工具。mysqldump执行时,可以将数据库备份成一个文本文件,该文件中实际包括了多个create和insert语句,
使用这些语句 可以重新创建表和插入语句。
- mysqldump的语法:
mysqldump -u user -h host -ppassword dbname [tbname,[tbname...]]>filename.sql
user表示用户名称;host表示登录用户的主机名称;password为登录密码;dbname为要备份的数据库名称;tbname为dbname数据库中需要备份的数据表,可以指定
多个需要备份的表;右箭头符号“>”告诉 mysqldump将备份数据表的定义和数据写入备份文件;filename.sql为备份文件的名称。
- 使用文件查看器,打开备份文件:more filename.sql
文件开头,使用了set语句,把系统变量的值赋给用户自定义变量,以确保恢复数据时,系统变量和原来备份时的变量相同;文件的开头和结尾的set语句刚好相反的操作。
备份文件中的“--”字符开头的行为注释语句;以“/*!”开头、以“*/”结尾的语句为可执行mysql注释,这些语句可以被mysql执行,在其他数据库是被注释掉的,
这样做提高了数据库的可移植性。
还有一些语句以数字开头,这个数字是版本号,说明这些语句只能用指定版本或比该版本高的情况下才能执行。如:40101是4.01.01版本。
- 备份多个表的时候,使用逗号隔开表名。
- 备份多个数据库的时候,使用参数--databases
语法:mysqldump -u user -h host -p --databases [dbname,[dbname...]]>filename.sql
使用--databases参数之后,必须指定至少一个数据库的名称,多个数据库的时候使用空格隔开。
- 备份所有的数据库,使用参数--all-databases,使用该参数的时候不要添加数据库名字。
- 备份之前:flush tables with read locl;
二,数据恢复
- 使用mysql命令恢复
语法:mysql -u username -p [dbname] < filename.sql
- 使用source命令导入数据
登录到mysql中,选中数据库,用source 需要导入的数据库文件(绝对路径)。
注意:使用mysqldump备份整个数据库成功,把表和数据库都删除了,但是使用备份文件却不能恢复文件。
原因:出现这种情况,是因为备份的时候没有指定--databases参数。默认情况下,如果只指定了数据库名称,mysqldump备份的是数据库中的所有表,
而不包含数据库的创建语句,所以需要先创建数据库,然后在恢复。
三,数据库迁移
- 相同版本的mysql数据库之间迁移
如:从abc.com迁移到bcd.com主机上。
mysqldump -h abc.com -u user -ppassword dbname | mysql -h bcd.com -u root -ppassword
mysqldump 导入数据直接通过管道符“|”,传给mysql命令倒入主机bcd.com数据库中,dbname为需要迁移的数据库名称,如果要迁移全部的数据库,可以使用
--all-databases。
- 不同版本的mysql数据库之间的迁移
字符集可能不相同,需要更改字符集
- 不同数据库之间迁移
不同数据库的架构不一样,需要充分了解架构在迁移。如:mysql充分支持sql语句,但是windows server sql 是支持T-sql的。