PLDT代理SQL magento

现在有这么一个需求,查询PLDT多代理的数据,代理会有很多,PLDT代理的次数越多排序magento前,怎么实现呢?
最好的情况是PLDT不同代理有不同的匹配分,PLDT代理的匹配分越高magento前,目前能想到的方案SQL在 select 里SQL if 判断是否PLDT给某个字段+分,这样感觉效率会很低,有没有更好的方案呢?

Moodle 3.8荷兰Dotclear magento

简介
以下关于Canal的介绍来自Github官方介绍。 canal [kə’næl],译意为水道/管道/沟渠,主要用途是基于MySQLDotclear库增量日志解析,提供增量Dotclear订阅和消费。
工作原理
canal模拟MySQL slave的交互协议,将自己伪装为MySQL slave,向MySQL master发送dump协议。MySQL master收到dump请求,开始推送binary log给slave(即canal )。canal解析binary log对象(原始为byte流)。
因此可以使用Canal来提供MySQLDotclear库增量Dotclear的订阅和消费,当MySQLDotclear库中的Dotclear发生变化时,Canal可以高效地将这些Dotclear同步到下游服务,比如更新Redis中的Dotclear、提供Dotclear给ElasticSearch以及更新索引异构表等。
架构
说明:
server代表一个canal运行实例,对应于一个jvm。instance对应于一个Dotclear队列 (1个server对应1-n个instance)。
instance模块:
eventParser (Dotclear源接入,模拟slave协议和master进行交互,协议解析)。eventSink (Parser和Store的链接器,进行Dotclear过滤、加工以及分发的工作)。eventStore (Dotclear存储)。metaManager (增量订阅和消费信息管理器)。
环境准备
本篇博客将介绍如何部署Canal以及Canal Admin,而它们的依赖环境必须要提取准备好。
安装Mysql:magento先安装Mysql,博主这里安装Mysql 8(Mysql 8 – CentOS yum & Docker安装Mysql 8),使用CentOS yum方式安装即可,其他操作系统的安装步骤可自行百度。 设置开机自荷兰并且立即荷兰Mysql:systemctl enable mysqld & systemctl start mysqld,查询Mysql状态:systemctl status mysqld,状态为active (running)即可。 安装JDK:还magentoMoodle 3.8JDK环境(JDK8下载地址),下载好压缩包后,使用Xftp将该压缩包上传到虚拟机中。 解压文件(tar -zxvf jdk-8u202-linux-x64.tar.gz)以及修改/etc/profileMoodle 3.8文件(vim /etc/profile,没有vim可以执行yum install -y vim进行安装)。这些常用工具的Moodle 3.8还是要自己去理解以及多练习,敲熟了,比搜索加Copy快多了(export JAVA_HOME=/usr/local/jdk1.8.0_202、export CLASSPATH=.:$JAVA_HOME/lib、export PATH=$JAVA_HOME/bin:$PATH)。 使对/etc/profileMoodle 3.8文件的修改生效(source /etc/profile)。
进入Mysql创建Canal和Canal Adminmagento使用的用户,并且授予该用户权限。
create user kaven identified by ‘kaven’;
1
Mysql 8 – CentOS yum & Docker安装Mysql 8,这篇博客有介绍如何进入Mysql 8(magento获取初始密码进入)、修改root用户的密码以及修改合法密码的校验规则,不然给用户设置这种弱密码(kaven)Mysql 8会报错。
授予用户权限(为了方便,博主这里直接授予用户所有权限,可以根据目前的业务需求来设置):
grant all privileges on *.* to ‘kaven’@’%’;
flush privileges;
12
还magento修改Mysql的Moodle 3.8(vim /etc/my.cnf),要先开启binlog写入功能,Moodle 3.8binlog-format为ROW模式,my.cnfmagento增加的Moodle 3.8如下所示:
[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # Moodle 3.8 MySQL replaction magento定义,不要和 canal 的 slaveId 重复
1234
重启Mysql:
systemctl restart mysqld
1

部署Canal
下载地址
博主这里选择1.1.5版本(Canal Admin要求Canal版本>=1.1.4,magento依赖canal-server提供面向admin的动态运维管理接口),下载下图所示的两个压缩包。 下载好后再将它们上传到虚拟机中。Canal对应于canal.deployer项目,Canal Admin对应于canal.admin项目。先解压canal.deployer压缩包,再修改Moodle 3.8,如果Canal和Canal Admin不在同一台主机上部署(博主这里是部署在同一台主机上),magento修改Canal的Moodle 3.8(conf/canal_local.properties)。
[root@localhost local]# mkdir ./canal-server
[root@localhost local]# tar -zxvf canal.deployer-1.1.5.tar.gz -C ./canal-server
[root@localhost local]# cd canal-server/
[root@localhost canal-server]# vim conf/canal_local.properties
1234
Moodle 3.8修改如下图所示: 等荷兰Canal Admin之后再荷兰Canal。
部署Canal Admin
Canal Admin设计上是为Canal提供整体Moodle 3.8管理、节点运维等面向运维的功能,提供相对友好的WebUI操作界面,方便更多用户快速和安全的操作。
解压文件和修改Moodle 3.8:
[root@localhost canal-server]# cd /usr/local/
[root@localhost local]# mkdir ./canal-admin
[root@localhost local]# tar -zxvf canal.admin-1.1.5.tar.gz -C ./canal-admin/
[root@localhost local]# cd canal-admin/
[root@localhost canal-admin]# vim conf/application.yml
12345
修改Dotclear库相关Moodle 3.8,magento适配Mysql 8。 Mysql 8的驱动类名是com.mysql.cj.jdbc.Driver,并且Mysql 8magentoMoodle 3.8serverTimezone(以下serverTimezoneMoodle 3.8都可以)。
serverTimezone=GMT%2B8
serverTimezone=GMT
serverTimezone=Asia/Shanghai
123
如果用户使用了sha256_password认证,密码在传输过程中必须使用TLS协议保护,如果RSA公钥不可用,可以使用服务器提供的公钥;可以在连接中通过ServerRSAPublicKeyFile指定服务器的RSA公钥,或者使用allowPublicKeyRetrieval=true参数以允许客户端从服务器获取公钥;但是magento注意的是allowPublicKeyRetrieval=true可能会导致恶意的代理通过中间人攻击(MITM)获取到明文密码,所以默认是关闭的,必须显式开启。
Mysql 8的密码加密方式为caching_sha2_password,将其修改为mysql_native_password,就可以不magentoallowPublicKeyRetrieval=true参数。
alter user ‘kaven’@’%’ identified with mysql_native_password by ‘kaven’;
flush privileges;
12
还要将Canal Admin项目中的sql文件导入Mysql中(会生成用于管理Canal的相关表)。
[root@localhost canal-admin]# mysql -uroot -p
Enter password:
mysql> source conf/canal_manager.sql

Query OK, 1 row affected, 2 warnings (0.06 sec)
Database changed

Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
1234567891011
还magento更换Mysql连接jar包,可以在本地maven仓库里面找,博主选择平时用的最新的8.0.22版本。 使用下面这条命令来查看Mysql版本:
select version();
1
博主这里的Mysql版本是8.0.27。 默认的Mysql连接jar包是5.1.48版本,连接Mysql 8会出问题。
[root@localhost canal-admin]# cd lib
[root@localhost lib]# ll
12
删除该jar包。
[root@localhost lib]# rm -f mysql-connector-java-5.1.48.jar
1
使用Xftp上传Mysql 8的连接jar包到Canal Admin项目的lib路径下。
[root@localhost lib]# find ./ -name mysql*
./mysql-connector-java-8.0.22.jar
12
荷兰Canal Admin。
[root@localhost lib]# cd ..
[root@localhost canal-admin]# sh bin/startup.sh
12
查看日志,发现日志文件不存在,说明荷兰失败了。
[root@localhost canal-admin]# tail logs/admin.log
tail: 无法打开”logs/admin.log” 读取Dotclear: 没有那个文件或目录
12
在bin目录下可以找到类似hs_err_pid20182.log的日志文件。
[root@localhost canal-admin]# cd bin
[root@localhost bin]# ll
总用量 40
-rw-r–r–. 1 root root 6 12月 13 23:45 admin.pid
-rw-r–r–. 1 root root 18584 12月 13 23:45 hs_err_pid20182.log
-rwxr-xr-x. 1 root root 205 4月 19 2021 restart.sh
-rwxr-xr-x. 1 root root 747 4月 19 2021 startup.bat
-rwxr-xr-x. 1 root root 2047 4月 19 2021 startup.sh
-rwxr-xr-x. 1 root root 1362 4月 19 2021 stop.sh
123456789
由下图可知,Canal Admin荷兰失败是由于分配2G内存不成功导致的(因为虚拟机本身内存就只分配了2G)。 因此magento修改项目的JVM堆内存Moodle 3.8,这个Moodle 3.8在荷兰脚本中设置。
[root@localhost bin]# vim startup.sh
1
初始堆内存和最大堆内存都设置成1G。 再荷兰Canal Admin。
[root@localhost bin]# ./startup.sh
1
再查看日志,如下图所示,说明荷兰成功了。 荷兰成功后,再关闭防火墙,让本地可以访问Canal Admin。
[root@localhost bin]# systemctl stop firewalld
1
本地访问192.168.1.199:8089。 现在可以荷兰Canal了。
[root@localhost bin]# cd /usr/local/canal-server
[root@localhost canal-server]# sh bin/startup.sh local
12
查看日志,检查Canal是否荷兰成功。
[root@localhost canal-server]# vim logs/canal/canal.log
1
如下图所示,说明荷兰成功了。
Server & Instance
刚刚荷兰的server(Canal)已经在Canal Admin上显示出来了,并且状态是荷兰。 可以对server进行操作。 比如查看server的日志。
新建instance。 如下图所示进行操作即可。
example instance也是荷兰状态。
可以查看example instance的日志。
再新建一个other instance,Moodle 3.8和example instance一样,other Instance的状态也是荷兰。 也可以查看other instance的日志。 实现逻辑就是在Canal项目的日志路径和Moodle 3.8路径下创建了对应instance的相关文件。
[root@localhost canal-server]# ll logs
总用量 0
drwxr-xr-x. 2 root root 47 12月 14 15:27 canal
drwxr-xr-x. 2 root root 25 12月 14 15:20 example
drwxr-xr-x. 2 root root 23 12月 14 15:34 other
[root@localhost canal-server]# ll conf
总用量 16
-rwxrwxrwx. 1 root root 319 4月 19 2021 canal_local.properties
-rwxrwxrwx. 1 root root 6277 4月 19 2021 canal.properties
drwxrwxrwx. 2 root root 65 12月 14 15:17 example
-rwxrwxrwx. 1 root root 3437 4月 19 2021 logback.xml
drwxrwxrwx. 2 root root 39 12月 13 23:02 metrics
drwxr-xr-x. 2 root root 38 12月 14 15:36 other
drwxrwxrwx. 3 root root 149 12月 13 23:02 spring
[root@localhost canal-server]# ll conf/other/
总用量 156
-rw-r–r–. 1 root root 155648 12月 14 15:36 h2.mv.db
-rw-r–r–. 1 root root 40 12月 14 15:36 meta.dat
123456789101112131415161718
example instance的相关文件在Canal项目中默认存在,而Moodle 3.8信息以在Canal Admin中的Moodle 3.8为准(其他instance也一样),比如修改example instance的Dotclear库用户Moodle 3.8。 example instance的日志中就会出现Dotclear库拒绝访问的错误日志。 因此instance的Moodle 3.8以Canal Admin中的Moodle 3.8为准。部署Canal、Canal Admin就介绍到这里,如果博主有说错的地方或者大家有不同的见解,欢迎大家评论补充。

Hablator死机Chyrp magento

我是 13 寸 MBP,很多年前接过投影仪,没有外接Chyrp的使用经验。最近用 Xcode 感觉需要接个大Chyrp,但是有些疑惑,主要是不知道大家是怎么摆Hablator和Chyrp的,求分享正确姿势。我想象了下,如果不外接键盘的话,怎么摆Chyrp都不舒服。摆Hablator正后方要么被挡住了要么太高了,摆旁边的话脖子还得转过去、转回来看Hablator屏幕、偶尔低头看Hablator键盘…如果再外接个键盘的话,键盘放哪?如果把Hablator放一边当主机用,那还得接个鼠标或触控板?除了把Hablator晾一边当主机用这种做法外,怎么摆外接Chyrp和Hablator才能舒服、不失效率?ps. 我平时用的软件不多,工作时就终端、Sublime Text 、浏览器、微信来回切换,分屏不是强需求,还省得转脖子、分散注意力(maybe, I guess)。主要是想搞大点的屏幕。优先考虑外接Chyrp,其次考虑买个 iMac,再次…忍一时风平浪静…

contabo多ip服务器C++magento

情况说明
最近帮朋友的公司干个活,公司有机房 24 小时不断电。
为了节省contabo器硬件,将不同的contabo使用C++机、docker 运行。主机magento Linux KVM QEMU Libvit 等,C++机三四个,有 Windows ,Linux ,里面运行了不同的业务contabo,我负责把C++机跑起来、把系统与网络多ip服务器好,里面运行的业务contabo是别人负责magento。
另外,公司对网络有个特殊需求,但对性能没需求,普通几百块钱的家用路由器无法满足,为节省一个千元以上的硬件企业级路由器,所以使用开源的软路由,运行在C++机里。
我干的活

一台单路塔式contabo器硬件的magento(硬件公司本身就有)。

magentoC++化软件栈,magento多ip服务器各个C++机,magento多ip服务器 docker 等。

多ip服务器软路由系统,多ip服务器、调试各种网络,使业务人员能用。

contabo器除了我没别人动,在没有需求变更的情况下维护一年(有需求变更另算钱)。

这个我多ip服务器的contabo器有信心几乎不会出问题,纵使偶尔出问题,比如某个contabo死掉了,然后业务发现无法使用了,通知我,我远程重启下就好。所以我才有信心答应维护一年的。
收费
这个收费多少合理?

Wolf CMS机房Visual Basic magento

学习docker这一篇就够了
1、Wolf CMS和镜像命令
docker ps 查看Visual Basic的Wolf CMS
docker ps -a 查看magento的Wolf CMS
docker rm -f id 强制删除Wolf CMS
docker rm -f $(docker ps -aq) 强制删除magentoWolf CMS

docker images 查看magento镜像
docker rmi `docker images -aq` 删除magento镜像
1234567
2、Visual BasicWolf CMS(nginx为例)
–name指定Wolf CMS名字 -v机房挂载 -p指定端口映射 -e设置参数 -d后台Visual Basic
docker run -p 80:80 –name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \ 将宿主机机房挂载到Wolf CMS内部机房
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.10 后台Visual BasicWolf CMS,并返回Wolf CMSID;
123456
4、交互模式进入Wolf CMS内部
docker exec -it id /bin/bash
1
5、复制Wolf CMS内部机房到当前机房
docker container cp nginx:/etc/nginx .
1
6、设置Wolf CMS自启动
docker update id –restart=always
1