我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

概述:

本文讲解:如何快速导入逻辑备份生成的SQL脚本。其他文件格式暂时不讲解。

在日常开发中大家肯定都遇到过这些需求:“数据迁移,数据恢复,新建从库”等任务,因为我们肯定知道做这些需求会涉及到大量数据的处理。

大量的数据有时候会导致我们的数据处理进度非常缓慢,所以我们总是要想一些办法去解决它,对吧?

其实有一些小技巧可以大大提高我们数据的处理速度,快来吧~~~

提示 - 解决方案 1

开始说明一下:在导出或者导入数据的时候,尽量使用MySQL自带的命令工具,不要用一些图形化工具(……),因为MySQL的命令行工具比图形化工具至少快2倍。

命令行模式:

代码语言:

复制

# 导出整个实例
mysqldump -u用户名 -p密码 --all-databases > all_database.sql
# 导出指定库
mysqldump -u用户名 -p密码 --databases testdb > testdb.sql
# 导出指定表
mysqldump -u用户名 -p密码 testdb test_tb > test_tb.sql
# 导入指定SQL文件 (指定导入testdb库中)
mysql -u用户名 -p密码 testdb < testdb.sql

提示 - 解决方案 2

修改参数:

在MySQL中,有一对有趣的参数:

代码语言:

复制

“ innodb_flush_log_at_trx_commit ” 
      与
“ sync_binlog ”

为了安全起见,该参数默认为1,为了快速导入SQL数据,可以临时修改默认参数值。

代码语言:

复制

参数一: innodb_flush_log_at_trx_commit默认值为1,可设置为0、1、2

如果设置为0,那么每秒会将日志写入日志文件一次,同时会进行日志文件的flush操作,该模式下,当事务提交时,不会主动触发写入磁盘的操作。

如果设置为 1,每次提交事务时,MySQL 都会将日志数据写入日志文件并将其刷新到磁盘。

如果设置为2,MySQL每次提交事务时都会将日志数据写入日志文件。但是不会同时执行flush操作。在此模式下,MySQL每秒执行一次flush操作。

代码语言:

复制

参数二: sync_binlog默认值为1,可设置为[0,N)

当=0时,和操作系统刷新其他文件的机制一样,MySQL不会同步到磁盘而是依靠操作系统来刷新日志。

当=N(N>0)时,MySQL每写入二进制日志N次就会使用()函数将其二进制日志同步到磁盘。

注:这两个参数可以在线修改,如果想快速导入,可以按照以下命令行

代码语言:

复制

# 1.进入MySQL命令行 临时修改这两个参数
set global innodb_flush_log_at_trx_commit = 2;
set global sync_binlog = 2000;
# 2.执行SQL脚本导入
mysql -uroot -pxxxxxx testdb < testdb.sql
# 3.导入完成 再把参数改回来
set global innodb_flush_log_at_trx_commit = 1;
set global sync_binlog = 1;

提示 - 选项 3

这个场景也很熟悉,就是创建新的从库,并且不产生日志。

解决办法很简单,在sql脚本开头添加:

代码语言:

复制

set sql_log_bin=0;

然后继续执行导入,这样也会加快进程。(如果没有启用MySQL,则不需要执行此语句)

就到此结束。首先恭喜你又读完了一篇文章。

二维码
扫一扫在手机端查看

本文链接:https://by928.com/2320.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线