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的常用选项介绍:
相关文档:
ERROR 1005 (HY000): Can't create table ' ****.frm' (errno: 150)
我是从以下几个方面解决了此问题:
1、确保参照的表和字段是存在的;
2、组成外键的字段要求被索引(主要是外键那个字段要求在其他表中是主键);
3、外键关联的两表或多表要求都是INNODB类型的表;
4、字段类型(说明)要一样`itemId` varchar( ......
文件php.ini放入windows下,将下面内容拷贝到记事本命名为php.ini放入c:/windows下,重启Apache server:
[PHP]
;;;;;;;;;;;
; WARNING ;
;;;;;;;;;;;
; This is the default settings file for new PHP installations.
; By default, PHP installs itself with a configuration suitable for
; development purposes ......
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/
运行如下的代码就可以解决上述问题 ......
使用临时表的好处:
使用临时表存放中间结果,加速查询,或存放临时结果.
(1)
创建临时表很容易,给正常的CREATE TABLE语句加上TEMPORARY关键字:
CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
)
(2)
临时表将在你连接MySQL期间存在。当你断开时,MySQL ......
注意:mysql中的用户变量的生命周期是会话级的,不是语句级的!
存储过程--------------------------------------------------
drop procedure if exists usp_simple;
delimiter //
create procedure usp_simple(in ip int, out op int, inout iop int)
begin
select count(*) into op from t1;
set op ......