使用mysqldump进行数据库副本的备份
#基本语法格式
shell> mysqldump [options] db_name [tbl_name ...] 恢复需要手动CRATE DATABASES
shell> mysqldump [options] --databases db_name ... 恢复不需要手动创建数据库
shell> mysqldump [options] --all-databases 恢复不需要手动创建数据库
PS:第一个命令,需要自己建数据库,才能导入数据,下面的那两个不需要手动建数据库,数据库的创建代码在sql文件中
#实例 #
1.1.备份数据库
shell> mysqldump -uroot -p test > ~/test.sql
-uroot -p 与数据库用户建立连接, 回车后会要求输入密码, 将test数据库导出为根目录下的test.sql文件
这种方法在恢复的时候要手动建数据库,进入MySQL ,建数据库
mysql> create database test;
mysql>exit;
1.2 恢复数据库
shell> mysql -uroot -p test < ~/test.sql
如果不出现ERROR则导入成功.
2.1备份数据库
shell>mysqldump -uroot -p --databases test > ~/test.sql
2.2恢复数据库
进入mysql
mysql> source ~/test.sql
基本语法中的书写方式有很多,如:
1.导出所有数据库
该命令会导出包括系统数据库在内的所有数据库
mysqldump -uroot -proot --all-databases >/tmp/all.sql
2.导出db1、db2两个数据库的所有数据
mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql
3.导出db1中的a1、a2表
注意导出指定表只能针对一个数据库进行导出,且导出的内容中和导出数据库也不一样,导出指定表的导出文本中没有创建数据库的判断语句,只有删除表-创建表-导入数据
mysqldump -uroot -proot --databases db1 --tables a1 a2 >/tmp/db1.sql
4.条件导出,导出db1表a1中id=1的数据
如果多个表的条件相同可以一次性导出多个表
字段是整形
mysqldump -uroot -proot --databases db1 --tables a1 --where='id=1' >/tmp/a1.sql
使用gzip 备份及还原
mysqldump -hhostname -uusername -ppassword databasename | gzip > backupfile.sql.gz
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename
//此方法数据库要先存在
使用shell进行数据库的使用(不进入数据库)
mysql -hhostname -Pport -uusername -ppassword -e "SQL语句"
相关mysql的sql语句要用引号引起来,不用在mysql的提示符下运行mysql,即可以在shell中操作mysql的方法。
使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改、查)等各种操作