介绍:
大家好,我是公众号“8:30科技站”的创建者——Bruce.D(姓:窦)。
感谢微信的个人认证,重点分享PHP和数据库技术领域的知识和经验。
技术交流不仅仅局限于阅读。 欢迎各界专家和新手来到“wx技术群”分享编程经验和技术实用知识。
概述:
本文讲解:如何快速导入逻辑备份生成的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,每秒会向日志文件写入一次log,同时会进行日志文件的flush(刷新到磁盘)操作。 该模式下,当事务提交时,不会主动触发对磁盘的写操作。
设置为1,MySQL会在每次提交事务时将日志数据写入日志文件,并刷新到磁盘。
设置为2,每次提交事务时MySQL都会将日志数据写入日志文件。 但flush(刷新到磁盘)操作不会同时进行。 在这种模式下,MySQL每秒都会执行一次flush(刷新到磁盘)操作。
参数二: sync_binlog默认值为1,可设置为[0,N)
当=0时,与操作系统刷新其他文件的机制一样,MySQL不会同步到磁盘而是依赖操作系统刷新日志。
当=N(N>0)时,MySQL每写入N次二进制日志log,就会使用()函数将其写入的二进制日志同步到磁盘。
注:这两个参数可以在线修改。 如果想快速导入,可以按照下面的命令行
set global innodb_flush_log_at_trx_commit = 2;
set global sync_binlog = 2000;
mysql -uroot -pxxxxxx testdb < testdb.sql
set global innodb_flush_log_at_trx_commit = 1;
set global sync_binlog = 1;
提示 - 选项 3
这个场景也很熟悉,就是新建一个从库,不需要生成日志。
解决办法很简单,在sql脚本开头添加:
set sql_log_bin=0;
然后继续执行导入,也会加快速度。 (如果没有启用MySQL则无需执行该语句)
到这里就结束了。 首先,恭喜您阅读了另一篇文章。 如果您觉得有用,请保存并转发以帮助有需要的朋友。
解决办法有很多,就看你是否更愿意去研究和发现。 欢迎在评论区留言~~~
向下滚动,有有用的信息
跟我再战n+1天
同时,为了方便大家学习,我会在微信群里存储一些源码和技术资料。 您可以随时在微信群中交流。 扫描下方二维码并备注“技术进群”即可通过审核。
进群的朋友请在右侧添加私人微信(注:技术人员进群)
----贡献分割线----
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。