1linux下mysql导出文件
备份mysql数据库的命令
mysqldump -h主机名 -u用户名 -p密码 数据库名字 > 备份的数据库名字.sql
|
例如:mysqldump -uroot -p1234 springboot >/tmp/springboot.sql
仅仅备份数据库结构(不带表数据)
mysqldump --no-data -h主机名 -u用户名 -p密码 数据库名字 > 备份数据库名字.sql
|
直接将mysql数据库压缩备份
mysqldump -h主机名 -u用户名 -p密码 数据库名字 | gzip >备份的数据库名字.sql.gz
|
只备份某些表
mysqldump -h主机名 -u用户名 -p密码 数据库名字 数据库表名1 数据库其余表名2 > 备份数据库名字.sql
|
同时备份多个mysql数据库
mysqldump -h主机名 -u用户名 -p密码 --databases 须要备份的数据库名字1 须要备份的数据库名字2 > 备份数据库名字.sql
|
备份服务器上全部数据库
mysqldump --all-databases -h主机名 -u用户名 -p密码 > 备份数据库名字.sql
|
跨主机备份
mysqldump备份 -u帐号 -p密码 须要恢复的数据库名字 | mysql还原 -u帐号 -p密码 --host=192.168.199.100 -C 须要恢复的数据库名字
|
mysqldump -uroot -p1234 springboot |mysql -uroot -proot --host=192.168.196.133 -C springboot #将当前环境的springboot库备份到133机器上
mysqldump全量备份+mysqlbinlog二进制日志增量备份
从mysqldump备份文件恢复数据会丢失掉从备份点开始的更新数据,因此还须要结合mysqlbinlog二进制日志增量备份。确保my.ini或者my.cnf中包含下面的配置以启用二进制日志,或者mysqld ---log-bin:
[mysqld]
log-bin=mysql-bin
mysqldump命令必须带上--flush-logs选项以生成新的二进制日志文件:mysql
mysqldump --single-transaction --flush-logs --master-data=2 > backup.sql |
--single-transaction :表示支持事务,可是只针对Inodb
--flush-logs:刷新日志
-- master-data
mysqldump导出数据时,当这个参数的值为1的时候,mysqldump出来的文件就会包括CHANGE MASTER TO这个语句,CHANGE MASTER TO后面紧接着就是file和position的记录,在slave上导入数据时就会执行这
个语句,salve就会根据指定这个文件位置从master端复制binlog。默认状况下这个值是1
当这个值是2的时候,chang master to也是会写到dump文件里面去的,可是这个语句是被注释的状态。
这样生成的增量二进制日志文件好比为mysql-bin.000003,那么恢复数据时以下:
linux
shell> mysql -uroot -pPwd < backup_sunday_1_PM.sql
shell> mysqlbinlog mysql-bin.000003 | mysql -uroot -pPwd
|
2linux下msyql还原文件
数据库还原方式1
mysql -h主机名 -u用户名 -p密码 须要恢复的数据库名字 < 已备份的数据库名字(见上).sql
|
例子:mysql -uroot -proot springboot < springboot.sqlspring
注意:须要回复的数据库名字,必须保证在须要恢复的数据库主机上面有个空库或者库名。sql
优化方式:(因为导出的sql文件,含数据库建立语句)shell
mysql -h主机名 -u用户名 -p密码 < 已备份的数据库名字(见上).sql
|
数据库还原方式2
mysql -uroot -proot mysql>source /tmp/springboot.sql |
注意:生成的sql文件中有,建库语句,因此能够直接导入
还原压缩的mysql数据库
gunzip < 刚开始备份集中的数据库名字.sql.gz | mysql -u用户名字 -p用户密码 须要恢复的数据库名字
|
3其余
在执行mysqldump命令时候报以下错误:
[root@localhost ~]# mysqldump -uroot -p -d test> test.sql
mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect
找到正确的套接字的路径:
[root@localhost ~]# netstat -ln | grep mysql
unix 2 [ ACC ] STREAM LISTENING 70442911 /MysqlData/base/mysql/mysql.sock
再运行dump命令:
[root@localhost ~]# mysqldump --sock=/MysqlData/base/mysql/mysql.sock -uroot -p -d test> test.sql
Warning: Using unique option prefix sock instead of socket is deprecated and will be removed in a future release. Please use the full name instead.
Enter password: 数据库
执行成功,但有警告信息,提示使用sock前辍将在后继版本中可能再也不支持,请使用全名springboot
将--sock 换成--socket将再也不有问题:服务器
[root@localhost ~]# mysqldump --socket=/MysqlData/base/mysql/mysql.sock -uroot -p -d test> test.sql socket
4参考:mysqldump参数大全: