本文最后更新于 3078 天前,其中的信息可能已经有所发展或是发生改变。
前言
AliSQL 出来也已经很久了,因为 AliSQL 比较重要的特性就是开启 TokuDB,也正好应了我之前一系列的文章了。
介绍
AliSQL 是基于 MySQL 官方版本的一个分支,由阿里云数据库团队维护,目前也应用于阿里巴巴集团业务以及阿里云数据库服务。该版本在 MySQL 社区版的基础上做了大量的性能与功能的优化改进。尤其适合电商、云计算以及金融等行业环境。
TokuDB 是一个支持事务的“新”引擎,有着出色的数据压缩功能,由美国 TokuTek 公司(现在已经被 Percona 公司收购)研发。拥有出色的数据压缩功能,如果您的数据写多读少,而且数据量比较大,强烈建议您使用TokuDB,以节省空间成本,并大幅度降低存储使用量和IOPS开销,不过相应的会增加 CPU 的压力。
安装
安装依赖库
RHEL/CentOS:
建议选择 7 或者以上版本
yum install epel-release -y
yum install gcc cmake gcc-c++ ncurses-devel bison git openssl-devel perl-Data-Dumper jemalloc
Debian/Ubuntu:
apt-get install git gcc g++ cmake bison libncurses5-dev zlib1g-dev libssl-dev build-essential libjemalloc1 libjemalloc-dev -y
关闭 THP
TokuDB 引擎的启动是不允许开启 THP(透明大页)的,否则就会启动失败,而且数据库类应用确实都不适合开启 THP。
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
运行上面的两个语句,并将他们写入 /etc/rc.local
,这样就算重启系统也会自动关闭 THP
编译
这里,我们将 AliSQL 安在 /usr/local/alisql
,数据文件和日志存在 /var/lib/alisql
并默认开启 TokuDB 数据引擎。
git clone https://github.com/alibaba/AliSQL.git //下载源码,国内可能会很慢
cd AliSQL
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/alisql \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_DATADIR=/var/lib/alisql \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_TOKUDB_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DWITH_EMBEDDED_SERVER=0 \
-DENABLE_DTRACE=0 \
-DENABLED_LOCAL_INFILE=1 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DCMAKE_EXE_LINKER_FLAGS="-ljemalloc" \
-DWITH_SAFEMALLOC=OFF \
-DEXTRA_CHARSETS=all
make && make install
注: 如果有多个cpu,可以 make -j
cpu数&& make install
例如: make -j4 && make install
设置权限
groupadd mysql
useradd -g mysql mysql
mkdir -p /usr/local/alisql
mkdir -p /var/lib/alisql
chown mysql.mysql -R /var/lib/alisql
chmod +w /usr/local/alisql
chown -R mysql:mysql /usr/local/alisql
ln -s /usr/local/alisql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
cp support-files/my-default.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod a+x /etc/init.d/mysqld
开机启动
RHEL/CentOS:
chkconfig --add mysqld; chkconfig mysqld on;
Debian/Ubuntu:
update-rc.d mysqld defaults
初始化
/usr/local/alisql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/alisql --datadir=/var/lib/alisql --user=mysql
启动
service mysqld start
设置变量
[ -z "$(grep ^'export PATH=' /etc/profile)" ] && echo "export PATH=/usr/local/alisql/bin:\$PATH" >> /etc/profile
. /etc/profile
设置 root 密码
方法一:
mysqladmin -u root password '你的密码' //设置密码
mysql -uroot -p '你的密码' //登入
方法二(强制修改):
service mysqld stop //暂停 alisql
mysqld_safe --skip-grant-table & // 跳过授权表启动 Mysql
mysql //无密码登入 root 了~
update mysql.user set password=password('你的密码') where user='root';
flush privileges; //刷新以生效
TokuDB
如何在建表的时候使用 TokuDB:
create table `表名称` ENGINE=TokuDB
如何在修改表使用 TokuDB:
ALTER TABLE `表名称` ENGINE=TokuDB
不错,很好,我们的zabbix现在跑在alisql上面了,总体来说很稳定
不过 AliSQL 更新略不及时啊
alisql直接装tokudb不行吧,不信你测试一下,需要先安装好mysql 再去安装tokudb引擎
另外 jemalloc yum安装的,在编译alisql的时候肯定会报错的
完全没问题啊