A. 如何将mysql的一个完整数据库全部复制到另外一个数据库
如果从库上表 t 数据与主库不一致,导致复制错误,整个库的数据量很大,重做从库很慢,如何单独恢复这张表的数据?通常认为是不能修复单表数据的,因为涉及到各表状态不一致的问题。下面就列举备份单表恢复到从库会面临的问题以及解决办法:
场景 1
如果复制报错后,没有使用跳过错误、复制过滤等方法修复主从复制。主库数据一直在更新,从库数据停滞在报错状态(假设 GTID 为 aaaa:1-100)。
修复步骤:
在主库上备份表 t (假设备份快照 GTID 为 aaaa:1-10000);
恢复到从库;
启动复制。
- CHANGE REPLICATION FILTER REPLICATE_WILD_IGNORE_TABLE = ('db_name.t');
- START SLAVE UNTIL SQL_AFTER_GTIDS = 'aaaa:10000';
在主库上备份表 t (假设备份快照 GTID为 aaaa:1-10000);
停止从库复制,GTID为 aaaa:1-20000;
恢复表 t 到从库;
启动复制。
对表 t 加读锁;
在主库上备份表 t;
停止从库复制,恢复表 t;
启动复制;
解锁表 t。
这里的问题是复制起始位点是 aaaa:101,从库上表 t 的数据状态是领先其他表的。aaaa:101-10000 这些事务中只要有修改表 t 数据的事务,就会导致复制报错 ,比如主键冲突、记录不存在(而 aaaa:101 这个之前复制报错的事务必定是修改表 t 的事务)
解决办法:启动复制时跳过 aaaa:101-10000 这些事务中修改表 t 的事务。
正确的修复步骤:
1. 在主库上备份表 t (假设备份快照 GTID 为 aaaa:1-10000),恢复到从库;
2. 设置复制过滤,过滤表 t:
3. 启动复制,回放到 aaaa:10000 时停止复制(此时从库上所有表的数据都在同一状态,是一致的);
4. 删除复制过滤,正常启动复制。
注意事项:这里要用 mysqlmp --single-transaction --master-data=2,记录备份快照对应的 GTID
场景 2
如果复制报错后,使用跳过错误、复制过滤等办法修复了主从复制。主、从库数据一直在更新。
修复步骤:
这里的问题是复制起始位点是 aaaa:20001,aaaa:10000-20000 这些事务将不会在从库上回放,如果这里面有修改表 t 数据的事务,从库上将丢失这部分数据。
解决办法:从备份开始到启动复制,锁定表 t,保证 aaaa:10000-20000 中没有修改表 t 的事务。
正确修复步骤:
如果是大表,这里可以用可传输表空间方式备份、恢复表,减少锁表时间。
B. 怎样在MySQL数据库中导出整个数据库
1.导出整个数据库
mysqlmp
-u
用户名
-p
数据库名
>
导出的文件名
mysqlmp
-u
wcnc
-p
smgp_apps_wcnc
>
wcnc.sql
2.导出一个表
mysqlmp
-u
用户名
-p
数据库名
表名>
导出的文件名
mysqlmp
-u
wcnc
-p
smgp_apps_wcnc
users>
wcnc_users.sql
3.导出一个数据库结构
mysqlmp
-u
wcnc
-p
-d
--add-drop-table
smgp_apps_wcnc
>d:wcnc_db.sql
-d
没有数据
--add-drop-table
在每个create
语句之前增加一个drop
table
4.导入数据库
C. mysql如何导出整个数据库
mysql
的好用之处就是其命令行简单明了。
mysqlmp是最快的方法。你看不懂没关系,可以照着做。
1.打开DOS窗口
2.键入
mysqlmp
--user
root
--password=123456
mysql
>
d:\mysql.sql
--user
表示要你的mysql登陆用户名
超级用户默认为root
--password=123456
就是密码了,你的是多少就把123456换成你的。
mysql
是数据库名,你要导出的是什么,就换成什么名。
>
是重定向符
,把数据库的内容以sql代码的形式重定向到d:\mysql.sql文件。
知道了导出,肯定要导入:
导入方法:
1.打开DOS窗口。
2.键入mysql
-uroot
-p123456
mysql
<
d:\mysql.sql
就是上面的相反过程。只是形式有点差别。
很简单吧。
D. mysql导出数据库几种方法
1、确保我们的数据库已经正确的安装在电脑上了,首先打开命令行窗口,win+R快捷键打开运行窗口,输入cmd。
E. mysql如何导出数据库
可以下载个navicat工具,用工具连接数据库后有个导出功能,能直接导出数据库文件,后缀格式自己选择,一般是导出sql后缀的文本文件。
F. 怎么从mysql 导出整个数据
在命令行下mysql的数据导出有个很好用命令mysqlmp,它的参数有一大把,可以这样查看:
mysqlmp
最常用的:
mysqlmp -uroot -pmysql databasefoo table1 table2 > foo.sql
这样就可以将数据库databasefoo的表table1,table2以sql形式导入foo.sql中,其中-uroot参数表示访问数据库的用户名是root,如果有密码还需要加上-p参数
C:\Users\jack> mysqlmp -uroot -pmysql sva_rec date_drv > e:\date_drv.sql
mysql的数据导入也是相当便捷的,如:
mysql -uroot databasefoo < foo.sql
这样就可以将foo.sql的数据全部导入数据库databasefoo
1.导出整个数据库
mysqlmp -u用户名 -p密码 数据库名 > 导出的文件名
C:\Users\jack> mysqlmp -uroot -pmysql sva_rec > e:\sva_rec.sql
2.导出一个表,包括表结构和数据
mysqlmp -u用户名 -p 密码 数据库名 表名> 导出的文件名
C:\Users\jack> mysqlmp -uroot -pmysql sva_rec date_rec_drv> e:\date_rec_drv.sql
3.导出一个数据库结构
C:\Users\jack> mysqlmp -uroot -pmysql -d sva_rec > e:\sva_rec.sql
4.导出一个表,只有表结构
mysqlmp -u用户名 -p 密码 -d数据库名 表名> 导出的文件名
C:\Users\jack> mysqlmp -uroot -pmysql -d sva_rec date_rec_drv> e:\date_rec_drv.sql
5.导入数据库
常用source 命令
进入mysql数据库控制台,
如mysql -u root -p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:wcnc_db.sql
G. MySQL怎样导出数据库
打开Navicat ,在我们要到处的数据上面右击鼠标,然后弹出的快捷菜单上点击“转储SQL 文件”,在再次弹出的子菜单项中选择第一个“数据跟结构”。
H. 如何从mysql数据库导出所有数据
找到mysql文件夹,里面有个文件叫data,保存起来,到时候复盖在新的文件里面就行了,不要去弄什么输入命令,麻烦!如图:
I. mysql如何导出、导入数据库和表,详细一点
MySQL命令行导出数据库:
1,进入MySQL目录下的bin文件夹:cd
MySQL中到bin文件夹的目录
如我输入的命令行:cd
C:\Program
Files\MySQL\MySQL
Server
4.1\bin
(或者直接将windows的环境变量path中添加该目录)
2,导出数据库:mysqlmp
-u
用户名
-p
数据库名
>
导出的文件名
如我输入的命令行:mysqlmp
-u
root
-p
news
>
news.sql
(输入后会让你输入进入MySQL的密码)
(如果导出单张表的话在数据库名后面输入表名即可)
3、会看到文件news.sql自动生成到bin文件下
命令行导入数据库:
1,将要导入的.sql文件移至bin文件下,这样的路径比较方便
2,同上面导出的第1步
3,进入MySQL:mysql
-u
用户名
-p
如我输入的命令行:mysql
-u
root
-p
(输入同样后会让你输入MySQL的密码)
4,在MySQL-Front中新建你要建的数据库,这时是空数据库,如新建一个名为news的目标数据库
5,输入:mysql>use
目标数据库名
如我输入的命令行:mysql>use
news;
6,导入文件:mysql>source
导入的文件名;
如我输入的命令行:mysql>source
news.sql;
J. 命令行怎么导出mysql数据库
MySQL命令行导出数据库:
1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录如我输入的命令行:cd C:\Program Files\MySQL\MySQL Server 4.1\bin(或者直接将windows的环境变量path中添加该目录)2,导出数据库:mysqlmp -u 用户名 -p 数据库名 > 导出的文件名如我输入的命令行:mysqlmp -u root -p news > news.sql (输入后会让你输入进入MySQL的密码)(如果导出单张表的话在数据库名后面输入表名即可)3、会看到文件news.sql自动生成到bin文件下
命令行导入数据库:
1,将要导入的.sql文件移至bin文件下,这样的路径比较方便2,同上面导出的第1步
3,进入MySQL:mysql -u 用户名 -p
如我输入的命令行:mysql -u root -p (输入同样后会让你输入MySQL的密码)4,在MySQL-Front中新建你要建的数据库,这时是空数据库,如新建一个名为news的目标数据库5,输入:mysql>use 目标数据库名
如我输入的命令行:mysql>use news;
6,导入文件:mysql>source 导入的文件名;
如我输入的命令行:mysql>source news.sql;
MySQL备份和还原,都是利用mysqlmp、mysql和source命令来完成的。
1.Win32下MySQL的备份与还原
1.1 备份
开始菜单 | 运行 | cmd |利用“cd \Program Files\MySQL\MySQL Server 5.0\bin”命令进入bin文件夹 | 利用“mysqlmp -u 用户名 -p databasename >exportfilename”导出数据库到文件,如mysqlmp -u root -p voice>voice.sql,然后输入密码即可开始导出。
1.2 还原
进入MySQL Command Line Client,输入密码,进入到“mysql>”,输入命令"show databases;",回车,看看有些什么数据库;建立你要还原的数据库,输入"create database voice;",回车;切换到刚建立的数据库,输入"use voice;",回车;导入数据,输入"source voice.sql;",回车,开始导入,再次出现"mysql>"并且没有提示错误即还原成功。
2.Linux下MySQL的备份与还原
2.1 备份
[root@localhost ~]# cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录)[root@localhost mysql]# mysqlmp -u root -p voice>voice.sql,输入密码即可。
2.2 还原
法一:
[root@localhost ~]# mysql -u root -p 回车,输入密码,进入MySQL的控制台"mysql>",同1.2还原。
法二:
[root@localhost ~]# cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录)[root@localhost mysql]# mysql -u root -p voice<voice.sql,输入密码即可。