阿里云
向代码致敬,寻找你的第83行
发表主题 回复主题
  • 1743阅读
  • 0回复

[教程]编译安装 AliSQL 并启用 TokuDB

级别: 论坛版主
发帖
9333
云币
14093
— 本帖被 不靠谱贝贝 设置为精华(2017-03-31) —
前言 $9*Xfb/  
E'Egc4Z2=l  
AliSQL 出来也已经很久了,因为 AliSQL 比较重要的特性就是开启 TokuDB,也正好应了我之前一系列的文章了。 H*yX Iq:  
*8js{G0h  
介绍 D4n ~ 2]  
   2#6yO`?uo  
AliSQL 是基于 MySQL 官方版本的一个分支,由阿里数据库团队维护,目前也应用于阿里巴巴集团业务以及阿里云数据库服务。该版本在 MySQL 社区版的基础上做了大量的性能与功能的优化改进。尤其适合电商、云计算以及金融等行业环境。 E[2c`XFd8  
athU  
7u\^$25+h  
TokuDB 是一个支持事务的“新”引擎,有着出色的数据压缩功能,由美国 TokuTek 公司(现在已经被 Percona 公司收购)研发。拥有出色的数据压缩功能,如果您的数据写多读少,而且数据量比较大,强烈建议您使用TokuDB,以节省空间成本,并大幅度降低存储使用量和IOPS开销,不过相应的会增加 CPU 的压力。 5x4JDaG2  
/$WEO[o  
安装 Q?7U iTZ  
 $C(}  
"-A@>*g  
'(&.[Pk:"  
安装依赖库 GJ ZT~  
t%q@W,2J  
RHEL/CentOS: M<~z=B#  
建议选择 7 或者以上版本
  1. yum install epel-release -yyum install gcc cmake gcc-c++ ncurses-devel bison git openssl-devel perl-Data-Dumper jemalloc
J03yFT,dF  
&'c1"%*%8>  
Debian/Ubuntu:
  1. apt-get install git gcc g++ cmake bison libncurses5-dev zlib1g-dev libssl-dev build-essential libjemalloc1 libjemalloc-dev -y
l>7`D3  
PRWS[2[yk  
关闭 THP g G~UsA  
TokuDB 引擎的启动是不允许开启 THP(透明大页)的,否则就会启动失败,而且数据库类应用确实都不适合开启 THP。
  1. echo never > /sys/kernel/mm/transparent_hugepage/enabledecho never > /sys/kernel/mm/transparent_hugepage/defrag
qL,!  
ISa2|v;M  
运行上面的两个语句,并将他们写入 /etc/rc.local ,这样就算重启系统也会动关闭 THP )g9Zw_3  
F^3Q0KsT  
编译 L @t<%fy@  
   qx5.LiF  
这里,我们将 AliSQL 安在 /usr/local/alisql,数据文件和日志存在 /var/lib/alisql 并默认开启 TokuDB 数据引擎。 ,g 6w2y7 ]  
  1. git clone https://github.com/alibaba/AliSQL.git  //下载源码,国内可能会很慢
  2. cd AliSQL
  3. cmake . \
  4. -DCMAKE_INSTALL_PREFIX=/usr/local/alisql \
  5. -DMYSQL_TCP_PORT=3306 \
  6. -DMYSQL_DATADIR=/var/lib/alisql \
  7. -DSYSCONFDIR=/etc \
  8. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  9. -DWITH_PARTITION_STORAGE_ENGINE=1 \
  10. -DWITH_FEDERATED_STORAGE_ENGINE=1 \
  11. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  12. -DWITH_TOKUDB_STORAGE_ENGINE=1 \
  13. -DWITH_MYISAM_STORAGE_ENGINE=1 \
  14. -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
  15. -DWITH_EMBEDDED_SERVER=0 \
  16. -DENABLE_DTRACE=0 \
  17. -DENABLED_LOCAL_INFILE=1 \
  18. -DDEFAULT_CHARSET=utf8mb4 \
  19. -DDEFAULT_COLLATION=utf8mb4_general_ci \
  20. -DCMAKE_EXE_LINKER_FLAGS="-ljemalloc" \
  21. -DWITH_SAFEMALLOC=OFF \
  22. -DEXTRA_CHARSETS=all
  23. make && make install
tO)mKN+ (  
|.)oV;9  
M@E*_U!U  
"qIO,\3T  
注: 如果有多个cpu,可以 make -jcpu数&& make install 例如: make -j4 && make install iaLsIy#h  
t(/e~w  
设置权限 r|{h7'  
#K"jtAm  
  1. groupadd mysql
  2. useradd -g mysql mysql
  3. mkdir -p /usr/local/alisql
  4. mkdir -p /var/lib/alisql
  5. chown mysql.mysql -R /var/lib/alisql
  6. chmod +w /usr/local/alisql
  7. chown -R mysql:mysql /usr/local/alisql
  8. ln -s /usr/local/alisql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
  9. cp support-files/my-default.cnf /etc/my.cnf
  10. cp support-files/mysql.server /etc/init.d/mysqld
  11. chmod a+x /etc/init.d/mysqld
# ~} 26  
SZzS$6 t  
^j0Mu.+_  
开机启动 (lTM5qC  
[YpSmEn}Y  
kBS;SDl)  
RHEL/CentOS:
  1. chkconfig --add mysqld; chkconfig mysqld on;
=%%\b_\L  
| Z0?  
Debian/Ubuntu:
  1. update-rc.d mysqld defaults
<_dyUiT$J  
p&>*bF,  
初始化 <IC=x(T  
[}9sq+##  
  1. /usr/local/alisql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/alisql --datadir=/var/lib/alisql --user=mysql
+\fr3@Yc  
>8"oO[U5>  
启动 +?w 7Nm`  
1`^l8V(  
  1. service mysqld start
o+4/L)h  
X|TEeE c[L  
设置变量 pEuZsQ  
'_lyoVP  
  1. [ -z "$(grep ^'export PATH=' /etc/profile)" ] && echo "export PATH=/usr/local/alisql/bin:\$PATH" >> /etc/profile. /etc/profile
5bYU(]  
Z3g6 ?2w6  
设置 root 密码 GpMKOjVm|  
HgvgO\`]  
g{.>nE^Sc5  
方法一: I= G%r/3  
  1. mysqladmin -u root password '你的密码' //设置密码
  2. mysql -uroot -p '你的密码' //登入
MUhC6s\F  
nm'sub  
Y9Q-<~\z  
方法二(强制修改): x#-uf  
  1. service mysqld stop //暂停 alisql
  2. mysqld_safe --skip-grant-table & // 跳过授权表启动 Mysql
  3. mysql //无密码登入 root 了~
  4. update mysql.user set password=password('你的密码') where user='root';
  5. flush privileges; //刷新以生效
MqGF~h|+  
1P#bR`I >  
}S<2({GI  
|R8=yO%(  
TokuDB Gtd!Y x  
x%23oPM  
\(Dq=UzQI  
如何在建表的时候使用 TokuDB:
  1. create table `表名称` ENGINE=TokuDB
Q/m))!ikMt  
M lgE-Lm  
如何在修改表使用 TokuDB:
  1. ALTER TABLE `表名称` ENGINE=TokuDB
>!s =f  
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
验证问题: ECS是阿里云提供的什么服务? 正确答案:云服务器
上一个 下一个