本系列文章均为实际工作中遇到的场景,以此记录下来,共同进步,更愉悦的工作。
作为数据分析师很多时候由于各种原因无法直接连接到数据库上进行sql操作。
尤其是需要大量数据计算的时候,虽然只是查询操作,但是不小心会产生非常大的CPU消耗,影响正常业务。
这个时候我们需要将线上的数据库导入到本地的mysql进行离线分析。
步骤如下:
本地安装好mysql数据库,如果需要导入的文件比较大,需要修改mysql数据库的配置文件my.cnf中的max-allowed-packet 选项,否则导入的过程中会产生如下错误:
ERROR 2006 (HY000) at line 1: MySQL server has gone away
查找my.cnf
通过下面的命令得知配置文件的几个可能位置和优先级。
mysqld --help --verbose | more
...
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
...
修改max-allowed-packet
Mac下通过brew 安装后配置文件位置 /usr/local/etc/my.cnf
参考官方文档 https://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_max_allowed_packet
修改后的配置文件如下:
# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
bind-address = 127.0.0.1
max-allowed-packet = 1073741824
修改后重新启动mysql服务,mac下命令如下:
mysql.server restart
导入sql文件
# 创建一个数据库,假设名字为demo,这里可以随便起名。
mysql> drop database demo;
mysql> create database demo;
mysql> use demo;
# 导入sql文件
mysql> source /path/to/data.sql
导入完成后就可以在本地肆无忌惮的进行各种各样的数据分析了。