本文目录一览:
- 1、mysql 数据备份
- 2、mysql备份方式有哪些
- 3、mysql备份问题,mysql版本5.7.2
- 4、详解Mysql自动备份与恢复的几种方法(图文教
- 5、mysql如何备份数据
- 6、Linux下安装Mysql多实例作为数据备份服务器实现多主到一从多实例的备份
mysql 数据备份
使用直接拷贝的方法备份时,尤其要注意表没有被使用,应该对表进行读锁定或停止MySQL服务。备份一个表,需要三个文件:
对于MyISAM表:
tbl_name.frm 表的描述文件
tbl_name.MYD 表的数据文件
tbl_name.MYI 表的索引文件
对于ISAM表:
tbl_name.frm 表的描述文件
tbl_name.ISD 表的数据文件
tbl_name.ISM 表的索引文件
对于MyISAM表,你可以从运行在不同硬件系统的服务器之间复制文件,例如,SUN服务器和INTEL PC机之间。
当 然,这只是备份一个数据表,在很多情况下我们需要备份完整的数据库,这个时候同样可以直接复制数据库文件夹即可完成备份;若想再省点儿事,把整个数据库目 录“data”复制也可以,但是在还原数据时要注意,只能一个一个地还原数据库,因为该目录下有mysql运行时的配置文件,若正在运行的mysql配置 信息遭到还原破坏,整个mysql服务就会无法启动。
SELECT INTO OUTFILE和MYSQLDUMP备份数据:
MySQLdump工具可以把整个数据库装载到一个单独的文本文件中。这个文件包含所有重建数据库和表的SQL命令。这个命令取得所有的模式 (Schema)并且将其转换成DDL语法(CREATE语句,即数据库定义语句),还取得所有的数据,并且为这些数据创建INSERT语句。所有的东西 都被包含到了一个文本文件中。这个文本文件可以用一个简单的批处理和一个合适SQL语句导回到MySQL中。这个工具令人难以置信地简单而快速。
有3种方式来调用mysqldump
选择一个数据库或一个数据表备份到一个文件:
/bin mysqldump [options] db_name [tables] filename.txt
选择多个数据库备份到一个文件:
/bin mysqldump [options] --database DB1 [DB2 DB3...] filename.txt
所有数据库备份到一个文件:
/bin mysqldump [options] --all--database filename.txt
Option选择:
--help,-?
显示帮助消息并退出。
--add-drop-table
这个选项将会在每一个表的前面加上DROP TABLE IF EXISTS语句,这样可以保证导回MySQL数据库的时候不会出错,因为每次导回的时候,都会首先检查表是否存在,存在就删除
--add-locks
这个选项会在INSERT语句中捆上一个LOCK TABLE和UNLOCK TABLE语句。这就防止在这些记录被再次导入数据库时其他用户对表进行的操作
-c or --complete_insert
这个选项使得MySQLdump命令给每一个产生INSERT语句加上列(field)的名字。当把数据导出导另外一个数据库时这个选项很有用。
--delayed-insert 在INSERT命令中加入DELAY选项
-F or --flush-logs 使用这个选项,在执行导出之前将会刷新MySQL服务器的log.
-f or --force 使用这个选项,即使有错误发生,仍然继续导出
--full 这个选项把附加信息也加到CREATE TABLE的语句中
-l or --lock-tables 使用这个选项,导出表的时候服务器将会给表加锁。
-t or --no-create- info
这个选项使的MySQLdump命令不创建CREATE TABLE语句,这个选项在您只需要数据而不需要DDL(数据库定义语句)时很方便。
-d or --no-data 这个选项使的MySQLdump命令不创建INSERT语句。
在您只需要DDL语句时,可以使用这个选项。
--opt 此选项将打开所有会提高文件导出速度和创造一个可以更快导入的文件的选项。
-q or --quick 这个选项使得MySQL不会把整个导出的内容读入内存再执行导出,而是在读到的时候就写入导文件中。
-T path or --tab = path
这 个选项将会将数据库中每一个表创建两个文件,一个文件包含DDL语句或者表创建语句,另一个文件包含数据。DDL文件被命名为 table_name.sql,数据文件被命名为table_name.txt。该参数的path为存放目录,而且该目录必须已经存在。 如:/binmysqldump –uroot –p --tab=d:\\ mydata
-w "WHERE Clause" or --where = "Where clause " 筛选将要放到导出文件的数据。
下面来看几组mysqldump命令案例:
将数据库mydata的内容备份到mydata.txt文件中:
/binMySQLdump –uroot -p mydata d:\\mydata.txt
将mydata数据库中的users表的内容备份到d:\\users.txt:
/binMySQLdump –uroot -p mydata users d:\\users.txt
将mydata数据库中的users表username值为“feihu”的数据备份到d:\\users.txt:
/binMySQLdump –uroot -p --where=”username=’feihu’” mydata users d:\\users.txt;
将mydata数据库以及内部表的创建结构(DDL)备份到d:\\users.txt:
/binMySQLdump –uroot –p -d mydata d:\\mydata.txt
将mydata和mydata2数据库同时备份到d:\\users.txt:
/bin MySQLdump –uroot –p -d mydata mydata2 d:\\mydata.txt
将所有数据备份到一个数据库,命令怎么写呢???
schema: 模式The set of statements, expressed in data definition language, that completely describe the structure of a data base.(一组以数据定义语言来表达的语句集,该语句集完整地描述了数据库的结构。)
当需要将还原备份数据时,使用如下语句:
/binmysql –uroot –p mydata d:\\mydata.txt;
注意使用“”符号,导入数据。还可以使用source命令执行文件中的脚本来还原数据,如:
Mysqlsource d:\mydata.txt;
LOAD DATA INFILE和MYSQLIMPORT恢复数据
关于load data infile语句的使用已经在别一节讲述过了,详细请参考“使用LOAD DATA和INSERT语句导入Mysql数据”。如果你仅仅恢复数据, mysqlimport完全是与LOAD DATA 语句对应的,读者可以任意选择一个去实现。
MySQLimport位于MySQL/bin目录中,是MySQL的一个载入(或者说导入)数据的一个非常有效的工具。这是一个命令行工具。有两个参数 以及大量的选项可供选择。这个工具把一个文本文件(textfile)导入到你指定的数据库和表中。比方说我们要从文件users.txt中把数据导入到 数据库mydata中的表users中:
/binmysqlimport –uroot –p mydata d:\users.txt
注意:这里users.txt是我们要导入数据的文本文件,而mydata是我们要操作的数据库,数据库中的表名是users,这里文本文件的数据格式必须与users表中的记录格式一致,否则MySQLimport命令将会出错。
其中表的名字是导入文件的第一个句号(.)前面文件字符串,另外一个例子:MySQLimport mydata users.2009.10.txt;那么我们将把文件中的内容导入到数据库mydata 中的users表中。
上面的例子中,都只用到两个参数,并没有用到更多的选项,下面介绍MySQLimport的选项
-d or --delete 新数据导入数据表中之前删除数据数据表中的所有信息
-f or --force 不管是否遇到错误,MySQLimport将强制继续插入数据
-i or --ignore MySQLimport跳过或者忽略那些有相同唯一关键字的行, 导入文件中的数据将被忽略。
-l or -lock-tables 数据被插入之前锁住表,这样就防止了,你在更新数据库时,用户的查询和更新受到影响。
-r or -replace 这个选项与-i选项的作用相反;此选项将替代表中有相同唯一关键字的记录。
--fields-enclosed-by= char 指定文本文件中数据的记录时以什么括起的, 很多情况下数据以双引号括起。 默认的情况下数据是没有被字符括起的。
--fields-terminated-by=char 指定各个数据的值之间的分隔符,在句号分隔的文件中,分隔符是句号。您可以用此选项指定数据之间的分隔符。默认的分隔符是跳格符(Tab)
--lines-terminated-by=str 此选项指定文本文件中行与行之间数据的分隔字符串或者字符。 默认的情况下MySQLimport以newline为行分隔符。您可以选择用一个字符串来替代一个单个的字符:一个新行或者一个回车。
MySQLimport命令常用的选项还有-v 显示版本(version),-p 提示输入密码(password)等。
如果,我们要导入一个文件(Orders.txt)中行的记录格式是这样的:
"1", "ORD89876", "1 Dozen Roses", "19991226"
我们的任务是要把这个文件里面的数据导入到数据库mydata中的表格Orders中,我们使用这个命令:
/BinMySQLimport -uroot–prl --fields-enclosed-by=" --fields-terminated-by=, mydata Orders.txt
比如我们要插入一些数据,使用包含下面文本的文件(文件名为New_Data.sql,当然我们也可以取名为New_Data.txt及任何其他的合法名字,并不一定要以后缀sql结尾):
USE mydata; INSERT INTO Orders (Orders_ID, username) VALUES(1, "Block"); INSERT INTO Orders (Orders_ID, username) VALUES(2, "Newton"); INSERT INTO Orders (Orders_ID, username) VALUES(3, "Simmons");
注意上面的这些句子的语法都必须是正确的,并且每个句子以分号结束。上面的USE命令选择数据库,INSERT命令插入数据。
然后运行下面的命令:
/binmysql –uroot –p mydata d:\New_Data.txt;
接着按提示输入密码,如果上面的文件中的语句没有错误,那么这些数据就被导入到了数据库中。
mysql备份方式有哪些
数据库最直接的备份方法就是使用自带的mysqldump命令进行备份。
1、 mysqldump命令备份数据
在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法:
#MySQLdump常用
mysqldump -u root -p --databases 数据库1 数据库2 xxx.sql
2、 mysqldump常用操作实例
2.1备份全部数据库的数据和结构
mysqldump -uroot -p123456 -A /data/mysqlDump/mydb.sql
2.2备份全部数据库的结构(加 -d 参数)
mysqldump -uroot -p123456 -A -d /data/mysqlDump/mydb.sql
2.3 备份全部数据库的数据(加 -t 参数)
mysqldump -uroot -p123456 -A -t /data/mysqlDump/mydb.sql
2.4 备份单个数据库的数据和结构(,数据库名mydb)
mysqldump -uroot-p123456 mydb /data/mysqlDump/mydb.sql
2.5 备份单个数据库的结构
mysqldump -uroot -p123456 mydb -d /data/mysqlDump/mydb.sql
2.6 备份单个数据库的数据
mysqldump -uroot -p123456 mydb -t /data/mysqlDump/mydb.sql2
2.7 备份多个表的数据和结构(数据,结构的单独备份方法与上同)
mysqldump -uroot -p123456 mydb t1 t2 /data/mysqlDump/mydb.sql
2.8 一次备份多个数据库
mysqldump -uroot -p123456 --databases db1 db2 /data/mysqlDump/mydb.sql
mysql备份问题,mysql版本5.7.2
1. mysqldump: 最早,也是最成熟的逻辑备份工具,是 MySQL 原生的用来备份整个数据库实例、单个数据库、单张表的逻辑备份工具, 上手简单,学习成本几乎为 0。备份简单,恢复也简单。
比如导出单个数据库 ytt: mysqldump ytt /tmp/ytt.sql;
恢复也非常简单:mysql /tmp/ytt.sql
缺点是备份速度慢。在整个备份过程中,是单线程运行;备份出来的数据集要恢复的话同样也是单线程运行,恢复速度也慢。除非对同一时刻的所有表单独备份出来,自己写额外脚本进行多线程恢复。
2. mysqlpump:MySQL 5.7 GA 后推出的 mysqldump工具的增强版。可以对同一个数据集多个线程并发备份,备份速度很快。
其他缺点和 mysqldump 一样。
3. MySQL Shell UTIL 对象附带的备份工具:随 MySQL 8.0.21 最新版本捆绑发布,自带多线程备份以及多线程恢复功能, 可以直接替代 mysqldump/mysqlpump。
dump_instance/dumpInstance 用来多线程备份 MySQL 整个单机实例
dump_schemas/dumpSchemas 用来多线程备份 MySQL 单个数据库
load_dump/loadDump 用来多线程恢复之前两个工具导出的数据集文件
详解Mysql自动备份与恢复的几种方法(图文教
备份方案一: 通过 mysqldump命令,直接生成一个完整的 .sql 文件
Step 1: 创建一个批处理
(说明:root 是mysql默认用户名, aaaaaa 是mysql密码, bugtracker 是数据库名)
------------mySql_backup.bat--------------------------------------------------------------------------------------
d:
cd D:/AppServ/MySQL/bin
mysqldump -uroot -paaaaaa bugtracker E:/DataBase/Mysql_bugtracker_backup/bugtracker_back.sql
exit
Step 2: 创建一个计划任务
"Start" -- "Control Panel" -- "Administrative Tools" -- "Task Scheduler"
"Create A Basic Task" -- --- "Daily" (注意设置后面的 时 分 秒) -- ---- "Start a Program" -- "Browser" (定位选择到你刚才创建的批处理mySql_backup.bat) -- --- "Finish"
对应的还原方法
创建一个处理:
----------mySql_restore.bat-------
d:
cd D:/AppServ/MySQL/bin
mysql -uroot -paaaaaa bugtracker E:/DataBase/Mysql_bugtracker_backup/bugtracker_back.sql
exit
双击它即可自动执行还原
备份方案二: 通过 xcopy 命令,直接把Mysql 的 data 目录下的对应的数据库全部的文件全部 copy 出来
创建批处理:
xcopy D:/AppServ/MySQL/data/bugtracker E:/DataBase/Mysql_bugtracker_backup/bugtracker/ /e /h /d /y /r /v /f /k
exit
对应的还原方法
把 E:/DataBase/Mysql_bugtracker_backup 目录下的 bugtracker文件夹 直接 copy 到 D:/AppServ/MySQL/data 目录下,把这个目录的bugtracker文件夹 全部履盖掉
备份方案三:安装Navicat For MySql 工具,通过它的 Schedule 功能设置自动备份
Schedule -- New Batch Job
在新弹出的页面中 选择你的 DB (eg: bugtracker ),然后在右边面板(Available Jobs)中你会看到“Backup bugtracker”,双击它,它会出现在下边面板---
对应的还原方法:
找到上述目录下对应的最新的 .psc 文件,然后通过Navicat For Mysql 工具还原
mysql如何备份数据
1.1、 mysqldump命令备份数据
在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法:
#MySQLdump常用
mysqldump -u root -p --databases 数据库1 数据库2 xxx.sql
1.2、 mysqldump常用操作实例
1.备份全部数据库的数据和结构
mysqldump -uroot -p123456 -A /data/mysqlDump/mydb.sql
2.备份全部数据库的结构(加 -d 参数)
mysqldump -uroot -p123456 -A -d /data/mysqlDump/mydb.sql
3.备份全部数据库的数据(加 -t 参数)
mysqldump -uroot -p123456 -A -t /data/mysqlDump/mydb.sql
4.备份单个数据库的数据和结构(,数据库名mydb)
mysqldump -uroot-p123456 mydb /data/mysqlDump/mydb.sql
5.备份单个数据库的结构
mysqldump -uroot -p123456 mydb -d /data/mysqlDump/mydb.sql
6.备份单个数据库的数据
mysqldump -uroot -p123456 mydb -t /data/mysqlDump/mydb.sql
7.备份多个表的数据和结构(数据,结构的单独备份方法与上同)
mysqldump -uroot -p123456 mydb t1 t2 /data/mysqlDump/mydb.sql
8.一次备份多个数据库
mysqldump -uroot -p123456 --databases db1 db2 /data/mysqlDump/mydb.sql
Linux下安装Mysql多实例作为数据备份服务器实现多主到一从多实例的备份
1、从MYSQL官方下载MYSQL的源码版本【一定要是源码版本】
2、按以下代码键入LINUX命令行
复制代码
代码如下:
[注]
添加mysql组和用户
#groupadd
mysql
#useradd
-g
mysql
mysql
[注]
解包到/usr/local
#
tar
-xzf
mysql-standard-4.1.9-pc-linux-gnu-i686.tar.gz
-C
/usr/local
[注]
建立软链接,方便操作(此处给此连接命名为mysql001,也可为其它的名字)
#cd
/usr/local
#ln
-s
mysql-standard-5.0.15-linux-i686-glibc23
mysql001
#cd
mysql001
#scripts/mysql_install_db
#chown
-R
root
.
#chown
-R
mysql
data
#chgrp
-R
mysql
.
[注]
复制data,以供单版本多实例分配
#cp
-a
data
data_1
#cp
-a
data
data_2
[注]
添加多实例配置文件
#cd
/usr/local/mysql001/bin
#cat
my_multi.cnf
[注]
以下是my_multi.cnf的配置信息,可依此复制
[mysqld_multi]
mysqld
=
/usr/local/mysql001/bin/mysqld_safe
mysqladmin
=
/usr/local/mysql001/bin/mysqladmin
user
=
root
password
=
root
[mysqld1]
socket
=
/tmp/mysql_001.sock
port
=
3301
pid-file
=
/usr/local/mysql001/data_1/hostname.pid
datadir
=
/usr/local/mysql001/data_1
log
=
/usr/local/mysql001/data_1/hostname.log
user
=
mysql
#
slave
setting
server-id
=
2
master-host
=
192.168.1.85
master-port
=
3306
master-user
=
backup
master-password
=
123456
replicate-do-db
=
gs_database
replicate-do-db
=
gs_log
master-connect-retry=30
[mysqld2]
socket
=
/tmp/mysql_5_2.sock
port
=
3302
pid-file
=
/usr/local/mysql001/data_2/hostname.pid
datadir
=
/usr/local/mysql001/data_2
log
=
/usr/local/mysql001/data_2/hostname.log
user
=
mysql
#
slave
setting
server-id
=
3
master-host
=
192.168.1.69
master-port
=
3306
master-user
=
backup
master-password
=
123
replicate-do-db
=
gs_databaes
replicate-do-db
=
gs_log
master-connect-retry=30
CTRL+D退出。
复制代码
代码如下:
#vi
/etc/profile
#
添加系统环境变量。
export
MYSQL_HOME=/usr/local/mysql001/bin
export
PATH=$PATH:$MYSQL_HOME
重启系统让环境变量生效。
添加至开机自动启动【此处可不添加,依个人情况决定是否需要设置开机自动启动】
复制代码
代码如下:
vi
/etc/rc.local
#
添加
mysqld_multi
--defaults-extra-file=/usr/local/src/mysql_dir/bin/my_multi.cnf
start
1,2
3、其它一些技巧
#
访问某个实例:
mysql
-u
root
-S
/tmp/mysql_5_1.sock
-p
#
设置各个实例密码:
mysqladmin
-u
root
password
'root'
-S
/tmp/mysql_5_1.sock
#
手动启动各个实例:
mysqld_multi
--defaults-extra-file=/usr/local/src/mysql_dir/bin/my_multi.cnf
start
1,2
#
停止各个实例:
mysqld_multi
--defaults-extra-file=/usr/local/src/mysql_dir/bin/my_multi.cnf
stop
1,2
#
参考文章
由于第一次接触LINUX,花了三天时间才算有所成就,发出来希望可以给大伙带来方便