在deepin linux V20(相当于debain/ubuntu)或windows 10下,php5/php 7.3, mariadb 10+ /mysql 8下测试通过,使用中遇到的问题和需要修改的细节还有不少,特此总结。
1、下载
swanhart-tools/flexviews at master · greenlion/swanhart-tools · GitHub
2、根据需要下载更新代码,
根据需要,覆盖上述程序中相应的几个程序文件,以满足新环境的需要,尤其是UTF8和mysql 8等环境要求。
convert2.php经过修改可以正常使用,源程序convert.php不可以使用。
注意convert-i.php不能用于复杂物化视图的语句生成,是实验性的修改。
3、安装php,php-mysqli ,php-pear,配置 php.ini ,在windows下建议安装在C:\php下,这里不详述。
4、安装和配置MySQL服务器,修改配置参数,须支持binlog日志,这里不详述。
这里给出windows 下的MySQL基本配置情况
5、配置flexviews
(1)安装相应的flexviews数据库
cd flexviews
mysql -uroot -p 登录数据库
source ./install.sql
由于开发和配置是针对的MySQL版本较低,使用新版MySQL运行期间如果发生错误,则依据错误做相应的检查和调整,参照注意事项(1)(2)(3)。
(2)cd flexviews/consumer
php setup_flexcdc.php
(3)以上2步可能需要循环执行,会提示不存在对应的数据表等错误信息。
6、参照
Flexviews-MySQL物化视图 (linuxmysql.com)
注意以下有些方法已过时,没有更新,由于是作者亲自写的,仍是flexviews最好的讲解。
Using Flexviews - part one, introduction to materialized views (percona.com)
Using Flexviews - part two, change data capture (percona.com)
Flexviews - part 3 - improving query performance using materialized views (percona.com)
7、注意事项
(1)mariadb 不支持的参数,windows 下 MySQL 8支持,但是 flexcdc.php也不支持
[mysqld]
gtid-mode=on
enforce-gtid-consistency=true
(2)MySQL 8下 install_schema.sql 创建用户改为CREATE USER 'flexviews'@'localhost' IDENTIFIED BY 'flexdemo';
[mysqld]
default_authentication_plugin = mysql_native_password
(3)MySQL 8下,导入数据需要配置相应的参数
set global local_infile=1
或者在mysql 配置文件中增加:
[mysqld]
local_infile=ON
然后重新启动 mysql server。
在客户端启动时需加参数:
mysql --local-infile=1 -uroot -p
(4)生成物化视图的命令 convert.php在 Windows cmd下可以输出生成后的结果,必须是php 5.x支持;但是在 powershell下不行,powershell不支持“<”管道符;在windows下运行Git Bash 提示 stdout is not a tty 的解决办法,先进入 bash,再次运行相应的命令。
在linux下需要php 5.x支持;PHP 7或8语法发生变化,不支持。参照第二步,下载新程序将原对应程序覆盖,否则无输出。
(5)在windows下运行flexcdc.php,最好是php 5.x;MySQL server 只支持UTF8,不支持UTF8mb4。在linux下,PHP 7或8可以正常运行,MySQL server 也可以支持UTF8mb4。
(6)执行CALL flexviews.refresh(1,"BOTH",null)刷新物化视图时,报错:Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 1.484 sec
须要先执行SET SQL_SAFE_UPDATES = 0;
最好将”SET SQL_SAFE_UPDATES = 0;“加到 procedure refresh和refrsh_all中。
但是在linux下没有遇到。
在windows下配置可参照windows下使用flexviews创建物化视图基础配置详解 - 简书 (jianshu.com)