MYSQL备份恢复
因为MySQL表保存为文件方式,很容易备份。要想保持备份的一致性,对相关表执行LOCK TABLES操作,然后对表执行FLUSH TABLES。你只需要读锁定;这样当你复制数据库目录中的文件时,允许其它客户继续查询表。需要FLUSH TABLES语句来确保开始备份前将所有激活的索引页写入硬盘。
备份方法:
A.备份的是SQL脚本
1.导出结构不导出数据
cmd>mysqldump -B repltest -d --opt > xxx.sql
2.导出数据不导出结构
cmd>mysqldump -B repltest -t --opt > xxx.sql
3.导出数据和表结构
cmd>mysqldump repltest --opt > xxx.sql
cmd>mysqldump -B repltest --opt > xxx.sql
cmd>mysqldump --databases repltest --opt > xxx.sql
4.导出特定表
cmd>mysqldump -B repltest --table t1 t2 --opt > xxx.sql
5.导出跳过特定表
cmd>mysqldump -B repltest --ignore-table=repltest.t1 --ignore-table=repltest.t2 --opt > xxx.sql
B.备份的是纯数据
6.导出数据,从特定表
mysql>select * into outfile 'xxx.txt' fields terminated by ',' from t1
7.导出表结构的SQL脚本及数据文件
cmd>mysqldump repltest --tab=q:\dbbackup
恢复方法:
A.针对SQL脚本类的备份执行恢复
1.恢复并覆盖现有数据库。针对完整的数据库备份(SQL脚本包含CREATE DATABASE)
CMD>mysql -u root -p <xxx.sql
2.恢复到新的数据库。针对完整的数据库备份(SQL脚本包含CREATE DATABASE)
首先,删除SQL脚本里CREATE DATABASE的部分
然后,CMD>mysql -u root -p newDB<xxx.sql
3.恢复特定的SQL脚本备份
CMD>mysql -u root -p <xxx.sql
B.针对纯数据类的备份执行恢复
4.导入数据到特定表(针对select into outfile)
mysql>load data infile 'xxx.txt' into table db.t1. fields terminated by ',';
5.导入数据到特定表(使用mysqlimport)
cmd>mysqlimport DB -u root -p -l -d 't1.txt'
MySQLimport的常用选项介绍:
相关文档:
Windows:
1. 用系统管理员登陆系统。
2. 停止MySQL的服务。
3. 进入命令窗口(cmd),然后进入MySQL的安装目录,比如我的安装目录是c:\mysql,进入C:\mysql\bin
4. 跳过权限检查启动MySQL,
c:\mysql\bin>mysqld-nt --skip-grant-tables
5. 重新打开一个cmd窗口,进入c:\mysql\b ......
ERROR 1005 (HY000): Can't create table ' ****.frm' (errno: 150)
我是从以下几个方面解决了此问题:
1、确保参照的表和字段是存在的;
2、组成外键的字段要求被索引(主要是外键那个字段要求在其他表中是主键);
3、外键关联的两表或多表要求都是INNODB类型的表;
4、字段类型(说明)要一样`itemId` varchar( ......
转载自:http://www.neatstudio.com/index-4.shtml
文章来自寂寞hacker,http://hi.baidu.com/isbx/blog/item
/08ef48547ef1ad58574e00bf.html:
当前的Web开发者中肯定有不少人没有注意到作者所提到的这两个问题的。
第一个问题是这样的,MySQL默认有一个配置参数
max_packet_size,这个参数是用于限制MySQL客户端和My ......
Can't open the mysql.plugin table. Please run mysql_upgrade to create it
当碰到这样的错误是没有初始化mysql数据库,可以运行如下脚本就可以解决
cd /opt/mysql-5.1.46
cd scripts/
./mysql_install_db --user=mysql --datadir=/usr/local/mysql/var/
运行如下的代码就可以解决上述问题 ......
MySQL手册中看到的,记录下。
MySQL可以为多个列创建索引。一个索引可以包括15个列。对于某些列类型,可以索引列的前缀(参见7.4.3节,“列索引”)。
多列索引可以视为包含通过连接索引列的值而创建的值的排序的数组。
MySQL按这样的方式使用多 ......