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 ......
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/
运行如下的代码就可以解决上述问题 ......
配置:
binlog:用于增量备份
errorlog:监控错误信息
slow_query_log:监控查询超时的SQL语句
data directory:提高性能,便于管理
选择默认数据库引擎
INNODB数据库引擎的数据目录:提高性能,便于管理
log_bin_trust_routine_creators=1 如果复制系统里有使用到用户自定义函数或存储过程 ......