keepalived + mysql 双主

2023-11-04

在node2,node3上安装mysql并配置主主复制
初始化mysql
[root@node2 mysqlkeepalived]# mysqld --defaults-file=/home/mysqlkeepalived/my.cnf --basedir=/home/mysqldir --datadir=/home/mysqlkeepalived/data --user=mysql --initialize
[root@node2 mysqlkeepalived]# ls
data  my.cnf  mysql-bin.000001  mysql-bin.index  mysql-error.log  mysql-slow.log

[root@node2 mysqlkeepalived]# mysqld --defaults-file=/home/mysqlkeepalived/my.cnf --user=mysql --datadir=/home/mysqlkeepalived/data  &
[1] 3490
[root@node2 mysqlkeepalived]# 
复制配置省略


在node2,node3上安装keepalived
[root@node2 mysqlkeepalived]# yum install keepalived
已加载插件:fastestmirror
base                                                                                                                                                                                      | 3.6 kB  00:00:00     
extras                                                                                                                                                                                    | 3.4 kB  00:00:00     
updates                                                                                                                                                                                   | 3.4 kB  00:00:00     
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * extras: mirrors.163.com
 * updates: mirrors.163.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 keepalived.x86_64.0.1.3.5-6.el7 将被 安装
--> 正在处理依赖关系 ipset-libs,它被软件包 keepalived-1.3.5-6.el7.x86_64 需要
--> 正在处理依赖关系 libnetsnmpmibs.so.31()(64bit),它被软件包 keepalived-1.3.5-6.el7.x86_64 需要
--> 正在处理依赖关系 libnetsnmpagent.so.31()(64bit),它被软件包 keepalived-1.3.5-6.el7.x86_64 需要
--> 正在处理依赖关系 libnetsnmp.so.31()(64bit),它被软件包 keepalived-1.3.5-6.el7.x86_64 需要
--> 正在检查事务
---> 软件包 ipset-libs.x86_64.0.6.29-1.el7 将被 安装
---> 软件包 net-snmp-agent-libs.x86_64.1.5.7.2-33.el7_5.2 将被 安装
--> 正在处理依赖关系 libsensors.so.4()(64bit),它被软件包 1:net-snmp-agent-libs-5.7.2-33.el7_5.2.x86_64 需要
---> 软件包 net-snmp-libs.x86_64.1.5.7.2-33.el7_5.2 将被 安装
--> 正在检查事务
---> 软件包 lm_sensors-libs.x86_64.0.3.4.0-4.20160601gitf9185e5.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

=================================================================================================================================================================================================================
 Package                                               架构                                     版本                                                             源                                         大小
=================================================================================================================================================================================================================
正在安装:
 keepalived                                            x86_64                                   1.3.5-6.el7                                                      base                                      329 k
为依赖而安装:
 ipset-libs                                            x86_64                                   6.29-1.el7                                                       base                                       54 k
 lm_sensors-libs                                       x86_64                                   3.4.0-4.20160601gitf9185e5.el7                                   base                                       41 k
 net-snmp-agent-libs                                   x86_64                                   1:5.7.2-33.el7_5.2                                               updates                                   705 k
 net-snmp-libs                                         x86_64                                   1:5.7.2-33.el7_5.2                                               updates                                   749 k

事务概要
=================================================================================================================================================================================================================
安装  1 软件包 (+4 依赖软件包)

总下载量:1.8 M
安装大小:6.3 M
Is this ok [y/d/N]: y
Downloading packages:
(1/5): keepalived-1.3.5-6.el7.x86_64.rpm                                                                                                                                                  | 329 kB  00:00:00     
(2/5): lm_sensors-libs-3.4.0-4.20160601gitf9185e5.el7.x86_64.rpm                                                                                                                          |  41 kB  00:00:00     
(3/5): ipset-libs-6.29-1.el7.x86_64.rpm                                                                                                                                                   |  54 kB  00:00:00     
(4/5): net-snmp-agent-libs-5.7.2-33.el7_5.2.x86_64.rpm                                                                                                                                    | 705 kB  00:00:00     
(5/5): net-snmp-libs-5.7.2-33.el7_5.2.x86_64.rpm                                                                                                                                          | 749 kB  00:00:00     
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
总计                                                                                                                                                                             1.7 MB/s | 1.8 MB  00:00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : 1:net-snmp-libs-5.7.2-33.el7_5.2.x86_64                                                                                                                                                      1/5 
  正在安装    : lm_sensors-libs-3.4.0-4.20160601gitf9185e5.el7.x86_64                                                                                                                                        2/5 
  正在安装    : 1:net-snmp-agent-libs-5.7.2-33.el7_5.2.x86_64                                                                                                                                                3/5 
  正在安装    : ipset-libs-6.29-1.el7.x86_64                                                                                                                                                                 4/5 
  正在安装    : keepalived-1.3.5-6.el7.x86_64                                                                                                                                                                5/5 
  验证中      : 1:net-snmp-agent-libs-5.7.2-33.el7_5.2.x86_64                                                                                                                                                1/5 
  验证中      : ipset-libs-6.29-1.el7.x86_64                                                                                                                                                                 2/5 
  验证中      : lm_sensors-libs-3.4.0-4.20160601gitf9185e5.el7.x86_64                                                                                                                                        3/5 
  验证中      : keepalived-1.3.5-6.el7.x86_64                                                                                                                                                                4/5 
  验证中      : 1:net-snmp-libs-5.7.2-33.el7_5.2.x86_64                                                                                                                                                      5/5 

已安装:
  keepalived.x86_64 0:1.3.5-6.el7                                                                                                                                                                                

作为依赖被安装:
  ipset-libs.x86_64 0:6.29-1.el7         lm_sensors-libs.x86_64 0:3.4.0-4.20160601gitf9185e5.el7         net-snmp-agent-libs.x86_64 1:5.7.2-33.el7_5.2         net-snmp-libs.x86_64 1:5.7.2-33.el7_5.2        

完毕!
[root@node2 mysqlkeepalived]# rpm -qa |grep keepalived
keepalived-1.3.5-6.el7.x86_64
[root@node2 mysqlkeepalived]# 


mysql状态检测脚本:
[root@node2 keepalived]# cat checkmysql.sh 
#!/bin/bash
mysqlstr=/usr/bin/mysql
host=192.168.88.18
user=root
password=root001
port=3381
mysql_status=1
$mysqlstr -h $host -u $user -p$password -P$port -e "show status;" >/dev/null 2>&1
if [ $? = 0 ] ;then
    echo "mysql_status=1"
    exit 0
else
systemctl stop keepalived.service
fi


keepalived的配置文件
vrrp_script chk_mysql
{
        #执行脚本的路径
        script "/etc/keepalived/checkmysql.sh"
        #调用脚本两次之间的间隔,默认为1秒
        interval 10
}
vrrp_instance VI_1
{
    #状态只有MASTER和BACKUP两种,并且要大写,MASTER为工作状态,BACKUP是备用状态。
    state BACKUP
    nopreempt
    interface eth0
    #虚拟路由标识,同一个vrrp_instance的MASTER和BACKUP的vitrual_router_id 是一致的。
    virtual_router_id 110
    #优先级,同一个vrrp_instance的MASTER优先级必须比BACKUP高。
    priority 101 //backup比该值小
    #MASTER 与BACKUP 负载均衡器之间同步检查的时间间隔,单位为秒。
    advert_int 5
    #验证authentication。包含验证类型和验证密码。类型主要有PASS、AH 两种,通常使用的类型为PASS,
    #auth_pass 1111   据说AH 使用时有问题。验证密码为明文,同一vrrp 实例MASTER 与BACKUP 
    #使用相同的密码才能正常通信。
    #mcast_src_ip 192.168.80.110
    authentication
    {
        auth_type PASS
        auth_pass 1111
    }
    #虚拟ip地址,可以有多个地址,每个地址占一行,不需要子网掩码,同时这个ip 必须与我们在lvs 
    #客户端设定的vip 相一致!
    virtual_ipaddress
    {
        192.168.88.223
    }
    track_script
    {
        #调用检测脚本
        chk_mysql
        #chk_http_port
    }
}

vrrp_script chk_mysql
{
        script "/etc/keepalived/checkmysql.sh"
        interval 10
}
vrrp_instance VI_1
{

    state BACKUP
    nopreempt
    interface eth0

    virtual_router_id 110

    priority 90 
    advert_int 5
   
    authentication
    {
        auth_type PASS
        auth_pass 1111
    }
   
    virtual_ipaddress
    {
        192.168.88.223
    }
    track_script
    {
        
        chk_mysql
    }
}


在node2,node3上启动keepalived
[root@node2 keepalived]# systemctl start keepalived.service
[root@node2 keepalived]# systemctl status keepalived.service
● keepalived.service - LVS and VRRP High Availability Monitor
   Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
   Active: active (running) since 六 2018-08-18 00:11:15 CST; 2s ago
  Process: 3912 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 3913 (keepalived)
   CGroup: /system.slice/keepalived.service
           ├─3913 /usr/sbin/keepalived -D
           ├─3914 /usr/sbin/keepalived -D
           └─3915 /usr/sbin/keepalived -D

8月 18 00:11:15 node2 Keepalived_vrrp[3915]: Opening file '/etc/keepalived/keepalived.conf'.
8月 18 00:11:15 node2 Keepalived_vrrp[3915]: WARNING - default user 'keepalived_script' for script execution does not exist - please create.
8月 18 00:11:15 node2 Keepalived_vrrp[3915]: VRRP parsed invalid IP {. skipping IP...
8月 18 00:11:15 node2 Keepalived_vrrp[3915]:      { no match, ignoring...
8月 18 00:11:15 node2 Keepalived_vrrp[3915]: SECURITY VIOLATION - scripts are being executed but script_security not enabled.
8月 18 00:11:15 node2 Keepalived_vrrp[3915]: VRRP_Instance(VI_1) removing protocol VIPs.
8月 18 00:11:15 node2 Keepalived_vrrp[3915]: Using LinkWatch kernel netlink reflector...
8月 18 00:11:15 node2 Keepalived_vrrp[3915]: VRRP_Instance(VI_1) Entering BACKUP STATE
8月 18 00:11:15 node2 Keepalived_vrrp[3915]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
8月 18 00:11:15 node2 Keepalived_vrrp[3915]: VRRP_Script(chk_mysql) succeeded
[root@node2 keepalived]# 
[root@node3 keepalived]# systemctl status keepalived.service
* keepalived.service - LVS and VRRP High Availability Monitor
   Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
[root@node3 keepalived]# systemctl start keepalived.service
[root@node3 keepalived]# 
[root@node3 keepalived]# 
[root@node3 keepalived]# systemctl status keepalived.service
* keepalived.service - LVS and VRRP High Availability Monitor
   Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
   Active: active (running) since 1 2018-08-18 00:10:08 CST; 2s ago
  Process: 3665 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 3666 (keepalived)
   CGroup: /system.slice/keepalived.service
           |-3666 /usr/sbin/keepalived -D
           |-3667 /usr/sbin/keepalived -D
           `-3668 /usr/sbin/keepalived -D

日志
8? 18 00:10:08 node3 Keepalived_vrrp[3668]: WARNING - default user 'keepalived_script' for script execution does not exist - please create.
8? 18 00:10:08 node3 Keepalived_vrrp[3668]: VRRP parsed invalid IP {. skipping IP...
8? 18 00:10:08 node3 Keepalived_vrrp[3668]:      { no match, ignoring...
8? 18 00:10:08 node3 Keepalived_vrrp[3668]: SECURITY VIOLATION - scripts are being executed but script_security not enabled.
8? 18 00:10:08 node3 Keepalived_vrrp[3668]: VRRP_Instance(VI_1) removing protocol VIPs.
8? 18 00:10:08 node3 Keepalived_vrrp[3668]: Using LinkWatch kernel netlink reflector...
8? 18 00:10:08 node3 Keepalived_vrrp[3668]: VRRP_Instance(VI_1) Entering BACKUP STATE
8? 18 00:10:08 node3 Keepalived_vrrp[3668]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
8? 18 00:10:08 node3 Keepalived_vrrp[3668]: VRRP_Script(chk_mysql) succeeded
8? 18 00:10:08 node3 Keepalived_healthcheckers[3667]: Opening file '/etc/keepalived/keepalived.conf'.
vip已经挂载优先级高的节点上
[root@node3 keepalived]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:cd:d4:6d brd ff:ff:ff:ff:ff:ff
    inet 192.168.88.19/24 brd 192.168.88.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.88.223/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fecd:d46d/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether 02:42:b7:c9:1b:76 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever


测试从node2 切换到node3
[root@node2 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:82:9a:e9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.88.18/24 brd 192.168.88.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.88.223/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe82:9ae9/64 scope link 
       valid_lft forever preferred_lft forever
[root@node2 ~]# 
停止node2上的mysql
[root@node2 ~]# mysqladmin -uroot -proot001 -P3381 -S /home/mysqlkeepalived/mysql.sock shutdown
[root@node2 ~]# 
[root@node2 ~]# 
node2上的vip已经卸载
[root@node2 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:82:9a:e9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.88.18/24 brd 192.168.88.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe82:9ae9/64 scope link 
       valid_lft forever preferred_lft forever
[root@node2 ~]#

[root@node3 ~]# systemctl status keepalived
* keepalived.service - LVS and VRRP High Availability Monitor
   Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
   Active: active (running) since 1 2018-08-18 12:01:34 CST; 12min ago
  Process: 4877 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 4878 (keepalived)
   CGroup: /system.slice/keepalived.service
           |-4878 /usr/sbin/keepalived -D
           |-4879 /usr/sbin/keepalived -D
           `-4880 /usr/sbin/keepalived -D

8? 18 12:01:34 node3 Keepalived_vrrp[4880]: Opening file '/etc/keepalived/keepalived.conf'.
8? 18 12:01:34 node3 Keepalived_vrrp[4880]: WARNING - default user 'keepalived_script' for script execution does not exist - please create.
8? 18 12:01:34 node3 Keepalived_vrrp[4880]: VRRP parsed invalid IP {. skipping IP...
8? 18 12:01:34 node3 Keepalived_vrrp[4880]:      { no match, ignoring...
8? 18 12:01:34 node3 Keepalived_vrrp[4880]: SECURITY VIOLATION - scripts are being executed but script_security not enabled.
8? 18 12:01:34 node3 Keepalived_vrrp[4880]: VRRP_Instance(VI_1) removing protocol VIPs.
8? 18 12:01:34 node3 Keepalived_vrrp[4880]: Using LinkWatch kernel netlink reflector...
8? 18 12:01:34 node3 Keepalived_vrrp[4880]: VRRP_Instance(VI_1) Entering BACKUP STATE
8? 18 12:01:34 node3 Keepalived_vrrp[4880]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
8? 18 12:01:34 node3 Keepalived_vrrp[4880]: VRRP_Script(chk_mysql) succeeded
[root@node3 ~]# tail -f /var/log/messages
Aug 18 12:01:34 node3 Keepalived_vrrp[4880]: Opening file '/etc/keepalived/keepalived.conf'.
Aug 18 12:01:34 node3 Keepalived_vrrp[4880]: WARNING - default user 'keepalived_script' for script execution does not exist - please create.
Aug 18 12:01:34 node3 Keepalived_vrrp[4880]: VRRP parsed invalid IP {. skipping IP...
Aug 18 12:01:34 node3 Keepalived_vrrp[4880]:     { no match, ignoring...
Aug 18 12:01:34 node3 Keepalived_vrrp[4880]: SECURITY VIOLATION - scripts are being executed but script_security not enabled.
Aug 18 12:01:34 node3 Keepalived_vrrp[4880]: VRRP_Instance(VI_1) removing protocol VIPs.
Aug 18 12:01:34 node3 Keepalived_vrrp[4880]: Using LinkWatch kernel netlink reflector...
Aug 18 12:01:34 node3 Keepalived_vrrp[4880]: VRRP_Instance(VI_1) Entering BACKUP STATE
Aug 18 12:01:34 node3 Keepalived_vrrp[4880]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
Aug 18 12:01:34 node3 Keepalived_vrrp[4880]: VRRP_Script(chk_mysql) succeeded

keepalived的日志
Aug 18 12:14:38 node3 Keepalived_vrrp[4880]: VRRP_Instance(VI_1) Transition to MASTER STATE
Aug 18 12:14:43 node3 Keepalived_vrrp[4880]: VRRP_Instance(VI_1) Entering MASTER STATE
Aug 18 12:14:43 node3 Keepalived_vrrp[4880]: VRRP_Instance(VI_1) setting protocol VIPs.
Aug 18 12:14:43 node3 Keepalived_vrrp[4880]: Sending gratuitous ARP on eth0 for 192.168.88.223
Aug 18 12:14:43 node3 Keepalived_vrrp[4880]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on eth0 for 192.168.88.223
Aug 18 12:14:43 node3 Keepalived_vrrp[4880]: Sending gratuitous ARP on eth0 for 192.168.88.223
Aug 18 12:14:43 node3 Keepalived_vrrp[4880]: Sending gratuitous ARP on eth0 for 192.168.88.223
Aug 18 12:14:43 node3 Keepalived_vrrp[4880]: Sending gratuitous ARP on eth0 for 192.168.88.223
Aug 18 12:14:43 node3 Keepalived_vrrp[4880]: Sending gratuitous ARP on eth0 for 192.168.88.223
Aug 18 12:14:48 node3 Keepalived_vrrp[4880]: Sending gratuitous ARP on eth0 for 192.168.88.223
Aug 18 12:14:48 node3 Keepalived_vrrp[4880]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on eth0 for 192.168.88.223
Aug 18 12:14:48 node3 Keepalived_vrrp[4880]: Sending gratuitous ARP on eth0 for 192.168.88.223
Aug 18 12:14:48 node3 Keepalived_vrrp[4880]: Sending gratuitous ARP on eth0 for 192.168.88.223
Aug 18 12:14:48 node3 Keepalived_vrrp[4880]: Sending gratuitous ARP on eth0 for 192.168.88.223
Aug 18 12:14:48 node3 Keepalived_vrrp[4880]: Sending gratuitous ARP on eth0 for 192.168.88.223
vip已经挂载到node3上
[root@node3 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:cd:d4:6d brd ff:ff:ff:ff:ff:ff
    inet 192.168.88.19/24 brd 192.168.88.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.88.223/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fecd:d46d/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether 02:42:b7:c9:1b:76 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever
使用vip登入mysql
[root@node3 ~]#  mysql -uroot -p -P3381 -h 192.168.88.223
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 93
Server version: 5.7.22-log MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

keepalived + mysql 双主 的相关文章

  • MAMP Pro mysql 无法启动

    我遇到问题无法找到解决此问题的方法 我收到这个错误 2017 01 11 23 58 25 7fffbac563c0 InnoDB Operating system error number 2 in a file operation In
  • 将 Null 与 MySQL 触发器中的另一个值进行比较

    所以这是我的问题 我在更新表行时比较新值和旧值 但新值或旧值有时会为空 所以下面的代码不起作用 我可以解决这个问题吗 谢谢 BEFORE UPDATE ON mytable FOR EACH ROW BEGIN IF OLD assigne
  • 减少每日状态表以仅包含状态更改

    我有一个包含 10 万以上用户的大型每日状态表 5 7 亿行 目前它位于 MySQL 或 CSV 中 该表包含三列 user id status 和 date 理想情况下 我希望将表缩减为一个新表 其中包含每个状态期间的 user id s
  • 跨数据库管理系统检查字符串是否为数字的方法

    好的 我有这个字段 code varchar 255 它包含我们导出例程中使用的一些值 例如 DB84 DB34 3567 3568 我需要仅选择自动生成的 全数字 字段 WHERE is numeric table code is num
  • 为什么我的 php 代码无法连接到远程 MySql 数据库?

    我正在尝试连接到远程 MySql 数据库 但收到以下错误消息 警告 mysqli connect HY000 2002 连接尝试失败 因为连接方在一段时间后没有正确响应 或者由于连接的主机未能响应而建立的连接失败 在 C myLocalDi
  • 使用每个单独行的多个“where”子句更新多行

    我正在尝试像这样更新我的表 Update MyTable SET value 1 WHERE game id 1 x 4 y 8 SET value 2 WHERE game id 1 x 3 y 7 SET value 3 WHERE g
  • 使用 Coldfusion 分页

    是否可以仅使用一个查询在 Coldfusion 中分页并显示页数 我的理解是 您显然可以使用一个查询进行分页 但您需要一个额外的查询来创建页面 这是为了计算结果总数 currentPage 1 resultsPerPage Offset i
  • 为什么 MySQL 将 é 与 e 视为相同?

    我使用 Django Web 应用程序将 Unicode 字符串存储在 MySQL 数据库中 我可以很好地存储 Unicode 数据 但是在查询时 我发现 and e被视为好像它们是同一个角色 In 1 User objects filte
  • Hibernate、MySQL 视图和 hibernate.hbm2ddl.auto = 验证

    我可以在 Hibernate 中使用 MySQL 视图 将它们视为表 即 该实体与为表创建的实体没有什么不同 但是 当 Hibernate 设置为验证模型时 我的应用程序将不会部署 因为它找不到视图 因为它假设它是一个表 是否可以在启用部署
  • 在数据库中存储差异的最紧凑方式是什么?

    我想实现类似于维基媒体的修订历史的东西 最好使用的 PHP 函数 库 扩展 算法是什么 我希望差异尽可能紧凑 但我很高兴只能显示每个修订版与其同级修订版之间的差异 并且一次只能回滚一个修订版 在某些情况下 只有几个字符可能会发生变化 而在其
  • MAMP Python-MySQLdb 问题:调用 Python 文件后 libssl.1.0.0.dylib 的路径发生变化

    我正在尝试使用 python MySQLdb 访问 MAMP 服务器上的 MySQL 数据库 当我最初尝试使用 python sql 调用 Python 文件来访问 MAMP 上的数据库时 我得到了image not found关于错误li
  • REPLACE MYSql 中的新行字符不起作用

    我执行了以下查询 由于某种原因它没有替换数据库中的换行符 它说 Rows matches 1 但没有变化 有什么问题吗 mysql gt UPDATE aboutme SET abouttext REPLACE abouttext n WH
  • 将 php filter_var 与 mysql_real_escape_string 结合使用

    我想首先说 我意识到 PDO mysqli 是新标准 并且已被 SO 广泛覆盖 然而 在这种特殊情况下 我没有时间在启动客户端站点之前将所有查询转换为 PDO 以下内容已在网站上的大多数查询中使用 我可以补充一下 这不是我所使用的 user
  • MySQL 中有“connect by”替代方案吗?

    如果我使用 Oracle 有connect by可用于创建分层查询的关键字 目前我正在一个项目中使用MySQL 我想知道是否有替代方案connect by在 MySQL 中 我尝试过谷歌 但到目前为止还没有结果 我想要实现的是通过一个查询从
  • PHP 5.4 PDO 无法使用旧的不安全身份验证连接到 MySQL 4.1+

    我知道有很多类似的问题 事实上我已经阅读了所有 9 个问题 但是 他们都没有解决我的问题 我有一个共享托管包 最低限度 我的包中包含域名和托管 MySQL 服务器的单独 IP 地址 为了开发 我正在使用http localhost 与 PH
  • mysql 使用什么样的哈希?

    我正在编写类似于 phpMyAdmin 的自己的代码 但我需要用户能够使用 mysql 数据库中的用户名和密码登录 我需要知道mysql数据库使用什么样的哈希来存储每个用户的密码 我检查了 dev mysql com 寻找答案 但除了以 开
  • 找时间通过 PHP 执行 MySQL 查询

    我在互联网上看到过这个问题 here http www phpbuilder com board showthread php t 2100256 and here http answers yahoo com question index
  • 哈希密码字段使用什么数据类型以及长度?

    我不确定密码哈希是如何工作的 稍后将实现 但现在需要创建数据库模式 我正在考虑将密码限制为 4 20 个字符 但据我了解 加密后哈希字符串的长度将有所不同 那么 如何将这些密码存储在数据库中呢 更新 仅使用哈希函数不足以存储密码 你应该阅读
  • MySQL LAST_INSERT_ID() 和 FOUND_ROWS()

    当 PHP 脚本每秒有数百个查询时会发生什么 它会影响这些函数吗 是否保证它们会返回当前脚本中最后一个插入语句中最后插入的 id 它会返回当前脚本中最后一次选择的行数吗 如果同时从另一个脚本进行新的插入或选择 在 FOUND ROWS 的情
  • mysql 中 INSERT 语句的计算列

    假设我想要一个表来记录其他表中的日期和列数 或者任何类型的数学 字符串连接等 CREATE TABLE log id INTEGER NOT NULL AUTO INCREMENT date DATETIME NOT NULL count

随机推荐

  • MySQL 存储过程查询远程数据库的方法

    这几天有个任务 需要在存储过程中读取远程数据库一个表的数据存到本地表 然后进行计算 在网上查找了资料 Oracle和SQL Server查询远程数据库是比较方便的 MySQL麻烦一些 需要在本地建立一个需要查询的远程的表结构完全一样的表 并
  • Java单链表中的元素互换位置_java实现单链表及倒置单链表中的元素

    单链表的结构比较简单 图示如下 单链表有很多个节点构成 每个节点由指针域和数值域构成 指针指向下一个节点的数值域 最后一个节点的指针指向的是NULL java实现单链表的一些基本的操作 package test import javax x
  • RabbitMQ系列(二)VirtualHost作用及角色权限管理实战

    VirtualHost 作用及用法 Virtual Hosts的使用场景 多租户的使用场景 比如主机资源紧缺情况下开发和测试共用一个RabbitMQ 可以使用Virtual Hosts将开发和测试隔离开 1 管理界面 2 VirtualHo
  • rust学习网站

    https photino gitbooks io rust notes content programming paradigms html rutst学习网站 https kaisery gitbooks io rust book ch
  • 线性表定义--线性表的顺序存储结构+链式存储结构+循环链表+双向链表

    线性表 一 线性表定义 1 线性表的定义 通过一个例子来体验什么是线性表的定义 小朋友出游排队 谁在谁的前面 谁在谁的后面 保证不会有人丢失 定义 线性表 List 零个或多个数据元素的有限序列 注意 1 线性表是一个序列 也就是说 线性表
  • 【自然语言处理】关系抽取 —— SimpleRE 讲解

    SimpleRE 论文信息 标题 An Embarrassingly Simple Model for Dialogue Relation Extraction 作者 Fuzhao Xue 期刊 ICASSP 2022 发布时间与更新时间
  • 【Ubuntu】安装免费版Typora

    下载deb包 wget https file babudiu com f yXCL Typora Linux 0 11 18 amd64 deb 安装 sudo dpkg i Typora Linux 0 11 18 amd64 deb 参
  • 【蓝桥杯题解】特殊日期(判断合法日期模板)

    对于一个日期 我们可以计算出年份的各个数位上的数字之和 也可以分别计算月和日的各位数字之和 请问从 19001900 年 11 月 11 日至 99999999 年 1212 月 3131 日 总共有多少天 年份的数位数字之和等于月的数位数
  • centos 卸载程序

    1 查询软件列表 rpm qa grep 软件名 2 卸载软件 sudo yum remove 软件名
  • SQLite安装配置详细教程2023版

    前言 SQLite 是一款轻型的数据库 是遵守ACID的关系型数据库管理系统 它的设计目标是嵌入式的 而且已经在很多嵌入式产品中使用了它 它占用资源非常的低 它能够支持Windows Linux Unix等等主流的操作系统 同时能够跟很多程
  • 利用强化学习进行股票操作实战(三)

    与上一篇文章相同之处 对于交易策略 与上一篇文章相同 当发出买入指令时 一次性全部买入 当发出卖出指令时 一次性全部卖出 还没有添加加减仓操作 模型仍然用的是DQN模型 新增内容 在之前的基础上加入了交易手续费 印花税等 在强化学习这个领域
  • 基于FPGA驱动VGA显示图片的小问题

    学习VGA显示图片的过程中 遇到了一个小问题 我在显示屏上开了一个60x60的框 放了一张图片进去显示 但是最终的结果如下图所示 出现了一个竖黑边 看了看代码 分析了一下逻辑没问题 然而看这个显示那肯定是有问题的 然后仿真了一下看看 时序图
  • 在Vue2和Vue3中事件总线的使用与区别

    前提 在Vue升级到3 0版本后 事件总线使用的方式有些许改变 Vue2可以直接使用new Vue 在Vue3中 推荐使用mitt来帮助我们实现全局事件总线和局部事件总线 接下来让我们来对比2和3版本的使用和区别 Mitt是一个微型的 Ev
  • 可靠传输的运输层协议及编程实现

    在计算机网络中 运输层协议负责在通信实体之间提供可靠的数据传输 可靠传输意味着数据的发送方可以确保数据在传输过程中不会丢失 损坏 重复或无序到达接收方 本文将介绍一种常用的可靠传输协议 停等协议 并提供其简单的编程实现 停等协议 Stop
  • STM32 F103C8T6学习笔记4:时钟树、滴答计时器、定时器定时中断

    今日理解一下STM32F103 C8T6的时钟与时钟系统 滴答计时器 定时器计时中断的配置 文章提供原理 代码 测试工程下载 目录 时钟树与时钟系统 滴答计时器 定时器计时中断 测试结果 测试工程下载 时钟树与时钟系统 该系统介绍在 STM
  • “思维导图”常用的快捷键总结

    还记得老师上课说过 你们把那些贴来的东西放在自己的博客上就以为是自己的了吗 其实不然 我们有些时候过于追求是否做了 而没有考虑到做这个的意义何在 正如贾琳同学所说 不要为了做去做 而要将自己做过的东西变成自己所能够吸收的 变成自己前进的 汽
  • 面向组件编程之Unity 5.normalized不改变原向量,Normalize改变原向量

    using System Collections using System Collections Generic using UnityEngine public class TransformFeng2 MonoBehaviour Us
  • Android AlarmManager实现定时任务(也就是闹钟) 附Demo源码

    原文链接https www shanya world archives a7b639d4 html 创建定时任务 Android中的定时任务一般有两种实现方式 一种是使用 Java API 里提供的 Timer 类 一种是使用 Androi
  • 防恶意解析,禁止用IP访问网站的Apache设置+如何阻止网站被恶意反向代理访问

    一般来说 网站可以用域名和IP来访问 你的网站可以通过IP直接访问 本来这没什么问题 但是会有些隐患 由于搜索引擎也会收录你的IP地址的页面 所以同一个页面搜索引擎会重复收录 造成页面的权重不如单个收录高 域名恶意指向的可能 还记得去年还是
  • keepalived + mysql 双主

    在node2 node3上安装mysql并配置主主复制 初始化mysql root node2 mysqlkeepalived mysqld defaults file home mysqlkeepalived my cnf basedir