在我们使用yum或者官方包安装clickhouse时,数据会默认放在/var/lib/clickhouse文件夹中,但在实际开发中一般会把数据存储在另外一个分区中,这时我们就要修改数据目录的路径了。
一、复制数据目录到指定的文件夹并建立软连接。
1.把/var/lib/clickhouse下的文件复制到指定的目录并建立软连接到原目录
这种方法不需要修改配置文件,数据实际存储在你修改的目录中,只是建立了一个软连接供clickhouse调用。具体脚本如下
data_dir=/usr/local/data/clickhouse
mkdir -p $data_dir
####复制数据目录到新的路径
cp /var/lib/clickhouse/data -r $data_dir
cp /var/lib/clickhouse/flags -r $data_dir
cp /var/lib/clickhouse/format_schemas -r $data_dir
cp /var/lib/clickhouse/metadata -r $data_dir
cp /var/lib/clickhouse/preprocessed_configs -r $data_dir
cp /var/lib/clickhouse/tmp -r $data_dir
cp /var/lib/clickhouse/user_files -r $data_dir
####删除原来文件夹的文件
rm -rf /var/lib/clickhouse/data
rm -rf /var/lib/clickhouse/flags
rm -rf /var/lib/clickhouse/format_schemas
rm -rf /var/lib/clickhouse/metadata
rm -rf /var/lib/clickhouse/preprocessed_configs
rm -rf /var/lib/clickhouse/tmp
rm -rf /var/lib/clickhouse/user_files
####建立软连接
ln -s $data_dir/data /var/lib/clickhouse
ln -s $data_dir/flags /var/lib/clickhouse
ln -s $data_dir/format_schemas /var/lib/clickhouse
ln -s $data_dir/metadata /var/lib/clickhouse
ln -s $data_dir/preprocessed_configs /var/lib/clickhouse
ln -s $data_dir/tmp /var/lib/clickhouse
ln -s $data_dir/user_files /var/lib/clickhouse
####给新的路径添加权限
chown -R clickhouse.clickhouse $data_dir
####重启clickhouse
sudo /etc/init.d/clickhouse-server restart
二、移动原始数据目录并修改配置文件
这种方法先将数据目录移动到指定路径并修改/etc/clickhouse-server/config.xml文件中的配置路径具体参考我的上一篇文章,这种方式可能会出现问题。
在data文件夹下的数据文件是以软连接的方式连接到原来的store目录下的,当你把原来的数据移动到新的目录,原文件已经不在,有可能会找不到文件而不错,所以这种方式谨慎使用。
三、直接修改配置文件(未测试)
这种方法只是我的新想法,还没有测试过。
在安装clickhouse的时候它会自动创建目录并建立系统表,那么我们修改路径配置后重新启动clickhouse会不会自动创建目录并生成新的库呢?如果可以我们就可以放弃以软连接的方式修改数据库了。如果可以,就是第二种方式的升级版,不需要担心原来的软连接找不到文件的问题了。
最后就是配置文件配置监听IP和登录密码的问题
配置监听IP在/etc/clickhouse/config.xml文件中
如果只允许本机访问的话就设置为127.0.0.1
如说允许外部访问可以配置成本机IP或0.0.0.0
修改密码在/etc/clickhouse/user.xml文件中