『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 27424|回复: 39

[进阶教程] 记录一下,用mysql替代默认的SQLite

  [复制链接]

5

主题

72

帖子

864

积分

高级会员

Rank: 4

积分
864
金钱
787
HASS币
0
发表于 2017-9-11 21:40:39 | 显示全部楼层 |阅读模式
本帖最后由 Jxjhheric 于 2017-9-15 09:20 编辑

默认的SQLite会在默认的配置文件夹下产生home-assistant_v2.db文件,随着使用容量会越来越大,现在通过mysql来替代它:
在debian下测试:
$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt install mysql-server mysql-client libmysqlclient-dev python-dev python3-dev
$ mysql -u root -p
$ CREATE DATABASE dbname;
$ CREATE USER 'dbuser'@'localhost' IDENTIFIED BY 'password';
$ GRANT ALL PRIVILEGES ON *.* TO 'dbuser'@'localhost';
$ FLUSH PRIVILEGES;

测试是否成功:
$ mysql -u dbuser dbname -p

env安装的需要先进入环境:
$ ssh pi@your_raspberry_pi_ip
$ sudo su -s /bin/bash hass
$ source /srv/hass/hass_venv/bin/activate
$ pip3 install --upgrade mysqlclient

查看Mysql 是否运行:
sudo service mysql status
sudo service mysql start

最后在 configuration.yaml中加入

recorder:
  db_url: mysql://dbuser:password@localhost/dbname?charset=utf8


除此之外,还可以在configuration.yaml中加入purge_days参数(多久清理一次),exclude(排除),include(包含)等:

recorder:
  purge_days: 5
  db_url: mysql://dbuser:password@localhost/dbname?charset=utf8
  exclude:
    domains:
      - automation
      - weblink
      - updater
    entities:
      - sun.sun   # Don't record sun data
      - sensor.last_boot
      - sensor.date
  include:
    domains:
      - sensor
      - switch
      - media_player
  exclude:
    entities:
     - sensor.last_boot
     - sensor.date


评分

参与人数 2金钱 +12 收起 理由
lidicn + 8 严重支持!
luzai + 4 666!

查看全部评分

回复

使用道具 举报

38

主题

405

帖子

4324

积分

元老级技术达人

积分
4324
金钱
3864
HASS币
250
发表于 2017-9-11 22:04:46 | 显示全部楼层
这个好。早就想用mysql了。sqlite太慢了。历史曲线根本加载不出来
回复

使用道具 举报

1

主题

170

帖子

1161

积分

金牌会员

Rank: 6Rank: 6

积分
1161
金钱
991
HASS币
0
发表于 2017-9-11 22:08:54 | 显示全部楼层
不知道速度能提升多少
嗯哼,有论坛签名了
回复

使用道具 举报

20

主题

700

帖子

3106

积分

论坛元老

Rank: 8Rank: 8

积分
3106
金钱
2406
HASS币
0
发表于 2017-9-12 12:55:38 | 显示全部楼层
不管怎么样,先标记
回复

使用道具 举报

11

主题

337

帖子

1390

积分

金牌会员

iLee

Rank: 6Rank: 6

积分
1390
金钱
1052
HASS币
0
发表于 2017-9-12 14:00:42 | 显示全部楼层
E: Package 'libmysqlclient-dev' has no installation candidate

没有这个包。。。
回复

使用道具 举报

11

主题

337

帖子

1390

积分

金牌会员

iLee

Rank: 6Rank: 6

积分
1390
金钱
1052
HASS币
0
发表于 2017-9-12 14:35:30 | 显示全部楼层
树莓派在安装client-dev的包时候 是libmariadbclient-dev而不是libmysqlclient-dev,因为树莓派在安装mysql-server的时候 安装的是mysql的分支Mariadb并不是mysqldb 所以对应的client-dev也不同
回复

使用道具 举报

1

主题

78

帖子

241

积分

中级会员

Rank: 3Rank: 3

积分
241
金钱
163
HASS币
0
发表于 2017-9-12 16:33:51 | 显示全部楼层
mark下,以后用的上
回复

使用道具 举报

2

主题

129

帖子

1924

积分

金牌会员

Rank: 6Rank: 6

积分
1924
金钱
1794
HASS币
0
发表于 2017-9-12 22:19:49 | 显示全部楼层
谢谢分享,留着备用
回复

使用道具 举报

1

主题

170

帖子

1161

积分

金牌会员

Rank: 6Rank: 6

积分
1161
金钱
991
HASS币
0
发表于 2017-9-15 18:39:33 | 显示全部楼层
树莓派之类的硬件,用TF卡做储存,不管是sqlite还是mysql,都是一样慢,瓶颈在TF卡

我暂时把sqlite数据库放到tmpfs的/tmp里去了,效果还不错,只是↓↓↓↓

关机重启会丢失数据库

解决方案如下:
定时复制数据库到TF卡,开机后自动复制回去
嗯哼,有论坛签名了
回复

使用道具 举报

5

主题

37

帖子

369

积分

论坛分享达人

积分
369
金钱
327
HASS币
0
发表于 2017-9-16 15:45:30 | 显示全部楼层
https://github.com/btotharye/ha-mysql-docker-compose This is a docker compose file for running home assistant with mysql db as recorder.
用 docker 的可以试试这个。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-23 21:46 , Processed in 0.253989 second(s), 33 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表