安装memsql与将数据库从 MySQL 移植到 MemSQL

安装memsql

安装挺简单的,所谓的安装其实就是解压缩二进制包,然后检查下环境就o了,步骤如官网页面所示:

  • $ wget http://download.memsql.com/814d3816f4084953833243fbf6c40d37/memsqlbin_amd64.tar.gz

    $ tar xvfz memsqlbin_amd64.tar.gz

    $ cd memsqlbin

    $ ./check_system

    $ ./memsqld --port 3307

这下不仅安装完了,连服务都启动好了。说明一下,这是官方的步骤,如果我指定的话,最后一步会加个&符号,将任务放在后台执行。

注意看这里指定了--port选项值为3307,这是避免与MySQL数据库服务默认的3306端口冲突,memsqld启动时如果不指定--port选项,那么默认服务端口也是3306。

  • 提示:

    MemSQL也有选项文件,跟MySQL挺像,就位于memsqlbin目录下,名为memsql.cnf。

然后就可以拿标准的mysql命令行工具连接该MemSQL服务:

  • $ mysql -u root -h 127.0.0.1 -P 3307 --prompt="MemSQL> " 

    Welcome to the MySQL monitor.  Commands end with ; or \g.

    Your MySQL connection id is 253

    Server version: 5.5.8 MemSQL source distribution

    Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

    This software comes with ABSOLUTELY NO WARRANTY. This is free software,

    and you are welcome to modify and redistribute it under the GPL v2 license

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    MemSQL> show databases;

    +--------------------+

    | Database           |

    +--------------------+

    | information_schema |

    | memsql             |

    +--------------------+

    2 rows in set (0.00 sec)

绳命,处处都充满着井棋,居然连information_schema都有,还真跟MySQL一样。

 

安装挺简单的,所谓的安装其实就是解压缩二进制包,然后检查下环境就o了,步骤如官网页面所示:

  • $ wget http://download.memsql.com/814d3816f4084953833243fbf6c40d37/memsqlbin_amd64.tar.gz

    $ tar xvfz memsqlbin_amd64.tar.gz

    $ cd memsqlbin

    $ ./check_system

    $ ./memsqld --port 3307

这下不仅安装完了,连服务都启动好了。说明一下,这是官方的步骤,如果我指定的话,最后一步会加个&符号,将任务放在后台执行。

注意看这里指定了--port选项值为3307,这是避免与MySQL数据库服务默认的3306端口冲突,memsqld启动时如果不指定--port选项,那么默认服务端口也是3306。

  • 提示:

    MemSQL也有选项文件,跟MySQL挺像,就位于memsqlbin目录下,名为memsql.cnf。

然后就可以拿标准的mysql命令行工具连接该MemSQL服务:

  • $ mysql -u root -h 127.0.0.1 -P 3307 --prompt="MemSQL> " 

    Welcome to the MySQL monitor.  Commands end with ; or \g.

    Your MySQL connection id is 253

    Server version: 5.5.8 MemSQL source distribution

    Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

    This software comes with ABSOLUTELY NO WARRANTY. This is free software,

    and you are welcome to modify and redistribute it under the GPL v2 license

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    MemSQL> show databases;

    +--------------------+

    | Database           |

    +--------------------+

    | information_schema |

    | memsql             |

    +--------------------+

    2 rows in set (0.00 sec)

绳命,处处都充满着井棋,居然连information_schema都有,还真跟MySQL一样。

 

将数据库从 MySQL 移植到 MemSQL

 
因为 MemSQL 完全兼容 MySQL,因此将数据从 MySQL 迁移到 MemSQL 上是非常直接的,你可以使用标准的 MySQL 工具来迁移。
本例子假设你的 MySQL 和 MemSQL 都跑在同一台机器上,MySQL 在 3306 端口,而 MemSQL 在 3307 端口,同时假设二者都可以通过 root 账号无需密码访问。
 
使用 mysqldump 工具移植
mysqldump 是 MySQL 客户端最常用的数据备份工具之一,它会生成一些列创建表和插入数据的SQL语句,因此用来恢复一个数据库是最方便的。
当你确定要将数据迁移到 MemSQL 之前,有几个注意事项:
•大多数 MySQL 存储引擎都是使用 B-tree 来存储索引的,而 MemSQL 是使用单向无锁的 skip 列表或者无锁的哈希表。选择正确的索引数据结构对应用程序的性能会有显著的提升。其中哈希表主要适合 key-value 的查找,而 skip 列表特别适合用于复杂范围的扫描和排序(ORDER BY)。因此在进行迁移之前,你得重新审视你得表定义并确定是否能使用 MemSQL 专有的优化。默认的 BTREE 符号将被转成升序的 skip 列表。如果你需要对某个列做双向的范围扫描,你可以考虑同时增加升序和降序的索引,更多 MemSQL 的索引信息请看 indexes
•因为 code generation 的缘故,  MemSQL 首次加载数据库结构的速度要比 MySQL 慢,因为 MemSQL 首次加载表结构时,会生成并编译代码来实现这个表的架构,包括内存分配、插入、删除和迭代方法等等。一旦表被编译完成,MemSQL 将在整个运行期间直接使用编译好的代码。而 mysqldump 生成的 INSERT 语句也将特别编译一次。
•mysqldump 会生成一些 MemSQL 不支持的 SQL 语句,例如不支持 UNIQUE_CHECKS,为了更好的支持 mysqldump,MemSQL 对这些不支持的语句只是予以警告,可通过调整warn_level 变量来控制错误的级别,详情请看 Unsupported Features . 某些 CREATE TABLE 语句可能被完全阻止执行,如果你遇见这种问题,只能手工去修改表的定义SQL。
•如果你运行 MemSQL 的机器没有足够的内存来加载数据,服务器将会对 INSERT 语句执行报 out-of-memory 的错误信息,这种情况你只能安装更多的内存。如果你将已有的 memsqlbin 目录复制到新的机器上,那么MemSQL 会继续沿用已编译的表定义和 INSERT 语句。如果你使用的是 MemSQL 开发版,而且超过了10G 的限制,那你可以参考 memsql.com/next 来了解如何升级。
建议你将数据库结构定义和数据分开独立文件存放,这样就可以在需要的时候来调整表结构,你可以使用下面命令来分别导出数据库结构和数据文件:
$ mysqldump -h 127.0.0.1 -u root -B [database name] --no-data > schema.sql
$ mysqldump -h 127.0.0.1 -u root -B [database name] --no-create-info > data.sql
然后通过下面方法导入:
$ mysql -h 127.0.0.1 -u root -P 3307 < schema.sql
$ mysql -h 127.0.0.1 -u root -P 3307 < data.sql
运行这些步骤时,你可以观察 memsql_tracelog (同时也输出到 stderr)  来查看执行过程中被忽略的不被支持的特性。一旦导入完成后,你可以连接到 MemSQL 并查询结果。
转换你的应用程序
让应用程序支持 MemSQL 非常简单,只需要改连接配置即可。
注意
如果你要连接到本机的 MemSQL 应该使用 127.0.0.1 而不是 localhost,多数 MySQL 客户端可将 localhost 解析并使用 MySQL 的 socket 文件进行连接而忽略端口设置,一旦你开始运行程序,可监控 memsql_tracelog. 一些不支持的SQL语法会在这里显示。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值