MENU

【教程】HA更换数据库

December 4, 2018 • Read: 163 • 技术,安全,Home Assistant阅读设置

Home Assistant自带的数据库是SQLite,这个数据库时间越长home-assistant_v2.db文件越大从而拖慢系统的运行和历史查询速度,Home Assistant基本上是支持各种数据库的,于是我就打算在Ubuntu上安装MYSQL数据库来提升速度
安装MYSQL服务:

sudo apt-get install libmysqlclient-dev
sudo apt-get install python-dev python3-dev
sudo apt-get install mysql-server

安装过程中会提示设置密码什么的,安装完成之后可以使用如下命令来检查是否安装成功:

sudo netstat -tap | grep mysql

现在设置MYSQL允许远程访问,首先编辑文件:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉bind-address = 127.0.0.1

mysqlcnf.png

进入MYSQL开启远程访问和新建数据库:

mysql -u root -p
use mysql;
grant all privileges on homeassistant.* to 'root'@'%' identified by 'password';  #授权root用户,拥有homeassistant数据库的权限
flush privileges;  #刷新数据库权限
update user set host = '%' where user = 'root';  #第二种方法直接改表,这样在远端就可以通过root用户访问MYSQL了
CREATE DATABASE homeassistant DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;  #创建名为homeassistant的数据库

进入虚拟环境,安装MYSQL客户端:

sudo su -s /bin/bash homeassistant
source /srv/homeassistant/homeassistant_venv/bin/activate
pip3 install --upgrade mysqlclient

在configuration.yaml加入:

recorder: 
  purge_interval: 1   # 可选项,以下配置表示每2天进行一次数据库“事件表”和“状态表”的清理动作;缺省值为永不清理。
  purge_keep_days: 5  # 当配置了purge_interval后配置,以下配置表示在清理数据库历史记录时保留最近5天的记录。
  db_url: mysql://用户名:密码@地址/数据库名?charset=utf8

删除Home Assistant默认的home-assistant_v2.db数据库文件之后重启Ubuntu
如果没报错的话就会生成四张表:

biao.png