back windows_system mysql database:
------------------use help --------------------------
mysql -? | mysql --help
mysqldump -? | mysql --help
------------------dump sql script -------------------
mysqldump -u root -p mydb --default-character-set=utf8 > mydb.sql
mysqldump -u root -p mydb > mydb.sql
------------------import sql script -------------------
mysql -u root -p mydb default-character-set=utf8 < mydb.sql
mysql -u root -p mydb < mydb.sql
========================================================================
我有台机器上跑的是suse 8,想升级一下整个系统,上面的mysql有超过3个G的东东,在重装系统时难免要把数据库备份。我使用的是备份mysql数据库的常见工具,mysqldump。在备份时,我使用的语法如:
mysqldump --opt DWBdatabase >; DWBdatabase.sql 。
阅读mysql的手册才知道,其实--opt在4.1版本以上是默认打开的(As of MySQL 4.1, --opt is on by default, but can be disabled with --skip-opt)。在导入数据时我先用create database DWBdatabase,然后用mysql DWBdatabase < DWBdatabase.sql 。这里有一点不方便的是,得先手工建立数据库然后才能导入,当有多个数据库要导入时比较麻烦。不过如果在导出时添加选项--database,即 mysqldump --opt --database DWBdatabase >; DWBdatabase.sql 就可以避免这样的麻烦而直接导入数据库。个人的感觉是,仔细阅读手册还是很有用的。总结一下常用用法:
mysqldump最常见的用法是:
shell>; mysqldump --opt -u user --password="password" db_name >; backup-file.sql
或者压缩备份文件:
#mysqldump --opt -u user --password="password" database | bzip2 -c >; database.sql.bz2
在dbname已经存在的情况下,读入备份文件恢复数据库,
shell>; mysql db_name < backup-file.sql (备注:建议使用--database选项)
或者
shell>; mysql -e "source /path-to-backup/backup-file.sql" db_name
mysqldump 还可以用于在两个mysql server之间复制数据:
shell>; mysqldump --opt db_name | mysql --host=remote_host -C db_name
也可以同时备份多个数据库:
shell>; mysqldump --databases db_name1 [db_name2 ...] >; my_databases.sql
如果想一次备份整个数据库使用 --all-databases 选项:
shell>; mysqldump --all-databases >; all_databases.sql
常见选项:
--add-drop-table:添加DROP TABLE语句
--add-locks:用LOCK TABLES 和 UNLOCK TABLES 语句封装插入每个表格的语句,能加速数据导入速度
--all-databases, -A: 备份所有数据库
--compress, -C:用于在两个server之间复制时压缩数据
--databases, -B: 用于备份多个数据库,如果没有该选项,mysqldump 把第一个名字参数作为数据库名,后面的作为表名。使用该选项,mysqldum把每个名字都当作为数据库名。CREATE DATABASE IF NOT EXISTS db_name and USE db_name 会被添加到导出文件里。
--force, -f:即使发现sql错误,仍然继续备份
--host=host_name, -h host_name:备份主机名,默认为localhost
--no-data, -d:只导出表结构
--opt:等同于激活--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset这些选项
--password[=password], -p[password]:密码
--port=port_num, -P port_num:制定TCP/IP连接时的端口号
--protocol={TCP | SOCKET | PIPE | MEMORY}:制定连接所用的协议
--quick, -q:快速导出
--socket=path, -S path:当连接至localhost时,制定socket文件
--tables:覆盖 --databases or -B选项,后面所跟参数被视作表名
--user=user_name, -u user_name:用户名
--xml, -X:导出为xml文件
=========================================================================
数据库备份是很重要的。如果定期做好备份,这样就可以在发生系统崩溃时恢复数据到最后一次正常的状态,把损失减小到最少。MySQLl提供了一个mysqldump命令,我们可以用它进行数据备份,下面假设要备份tm这个数据库:
#mysqldump -u root -p tm > tm_050519.sql
按提示输入密码,这就把tm数据库所有的表结构和数据备份到tm_050519.sql了,因为要总进行备份工作,如果数据量大会占用很大空间,这时可以利用gzip压缩数据,命令如下:
#mysqldump -u root -p tm | gzip > tm_050519.sql.gz
系统崩溃,重建系统时,可以这样恢复数据:
#mysql -u root -p tm < tm_050519.sql
从压缩文件直接恢复:
#gzip < tm_050519.sql.gz | mysql -u root -p tm
当然,有很多MySQL工具提供更直观的备份恢复功能,比如用phpMyAdmin就很方便。但我认为,mysqldump是最基本、最通用的。
========================================================================