[18.242.143.31] ✅ Update Insert Success [18.242.143.30] ❌ Update Insert Error: (1213, 'Deadlock found when trying to get lock; try restarting transaction') [18.242.143.32] ❌ Update Insert Error: (1213, 'Deadlock found when trying to get lock; try restarting transaction')
MariaDB [test]> select * from tmp; +----+----------+---------------------+---------------+ | id | data | created_at | data_origin | +----+----------+---------------------+---------------+ | 3 | 04d2ec9a | 2025-08-11 13:58:07 | value_from_31 | +----+----------+---------------------+---------------+ 2 rows in set (0.001 sec)
或者其它结果:
[18.242.143.32] ✅ Update Insert Success [18.242.143.31] ❌ Update Insert Error: (1213, 'Deadlock found when trying to get lock; try restarting transaction') [18.242.143.30] ❌ Update Insert Error: (1213, 'Deadlock found when trying to get lock; try restarting transaction')
MariaDB [test]> select * from tmp; +----+----------+---------------------+---------------+ | id | data | created_at | data_origin | +----+----------+---------------------+---------------+ | 3 | f0d31a50 | 2025-08-11 13:58:07 | value_from_32 | +----+----------+---------------------+---------------+ 2 rows in set (0.001 sec)
MariaDB [test]> SHOW STATUS LIKE 'wsrep_cluster_size'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 3 | +--------------------+-------+ 1 row in set (0.001 sec)
# 连接到集群中的其它节点 2025-08-12 14:25:25 0 [Note] WSREP: (21b01b3d-a887, 'tcp://0.0.0.0:4567') connection established to 3afca15d-bd74 tcp://18.242.143.31:4567 2025-08-12 14:25:25 0 [Note] WSREP: (21b01b3d-a887, 'tcp://0.0.0.0:4567') connection established to 3cfa0384-b2c4 tcp://18.242.143.30:4567 2025-08-12 14:25:25 0 [Note] WSREP: (21b01b3d-a887, 'tcp://0.0.0.0:4567') connection established to 134e4245-aba6 tcp://18.242.143.32:4567 # 当前集群状态为 Primary,满足多数派规则 2025-08-12 14:25:26 0 [Note] WSREP: New COMPONENT: primary = yes, bootstrap = no, my_idx = 1, memb_num = 4 # SST同步成功。SST过程开销 14s 2025-08-12 14:25:26 2 [Note] WSREP: GCache history reset: 00000000-0000-0000-0000-000000000000:0 -> ec75dcca-711c-11f0-9611-ef90f88adb5e:918 WSREP_SST: [INFO] Proceeding with SST (20250812 14:25:27.481) 2025-08-12 14:25:39 0 [Note] WSREP: 0.0 (mariadb-3): State transfer to 1.0 (mariadb-4) complete. 2025-08-12 14:25:40 3 [Note] WSREP: SST received # IST补充未同步事务 2025-08-12 14:25:40 0 [Note] WSREP: ####### IST current seqno initialized to 874 2025-08-12 14:25:40 0 [Note] WSREP: Receiving IST... 0.0% (0/45 events) complete. 2025-08-12 14:25:40 2 [Note] WSREP: IST received: ec75dcca-711c-11f0-9611-ef90f88adb5e:918 # 集群加入成功,新加入节点后续可以参与多数派投票和接受读写 025-08-12 14:25:40 2 [Note] WSREP: Server status change joined -> synced
新节点成功加入集群后,集群扩容成功
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 4 | +--------------------+-------+ 1 row in set (0.002 sec)
mariadb节点正常退出
有当前 galera 集群信息:
MariaDB [test]> SHOW STATUS LIKE 'wsrep_cluster_size'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 3 | +--------------------+-------+ 1 row in set (0.002 sec) # 任意节点的集群状态都是 Primary,代表可读可写 MariaDB [test]> SHOW STATUS LIKE 'wsrep_cluster_status'; +----------------------+---------+ | Variable_name | Value | +----------------------+---------+ | wsrep_cluster_status | Primary | +----------------------+---------+ 1 row in set (0.002 sec)
任意节点通过:systemctl stop mariadb,逐步停止。
停止 18.242.143.30 节点
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 2 | +--------------------+-------+ 1 row in set (0.001 sec) MariaDB [(none)]> show status like 'wsrep_cluster_status'; +----------------------+---------+ | Variable_name | Value | +----------------------+---------+ | wsrep_cluster_status | Primary | +----------------------+---------+ 1 row in set (0.001 sec)
停止 18.242.143.31 节点
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 1 | +--------------------+-------+ 1 row in set (0.001 sec) MariaDB [(none)]> MariaDB [(none)]> show status like 'wsrep_cluster_status'; +----------------------+---------+ | Variable_name | Value | +----------------------+---------+ | wsrep_cluster_status | Primary | +----------------------+---------+ 1 row in set (0.001 sec)
MariaDB [(none)]> SHOW STATUS LIKE 'wsrep_cluster_size'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | wsrep_cluster_size | 1 | +--------------------+-------+ 1 row in set (0.002 sec) MariaDB [(none)]> MariaDB [(none)]> show status like 'wsrep_cluster_status'; +----------------------+-------------+ | Variable_name | Value | +----------------------+-------------+ | wsrep_cluster_status | non-Primary | +----------------------+-------------+ 1 row in set (0.002 sec)
$ cat keepalived/checks/check_alive_haproxy.sh #!/bin/bash # This will return 0 when it successfully talks to the haproxy daemon via the socket # Failures return 1 echo "show info" | socat unix-connect:/var/lib/kolla/haproxy/haproxy.sock stdio > /dev/null
MySQL [(none)]> SELECT hostgroup, username, count_star, SUBSTRING(digest_text, 1, 180) AS digest_text_short FROM stats_mysql_query_digest; +-----------+-----------+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | hostgroup | username | count_star | digest_text_short | +-----------+-----------+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 0 | manila | 8 | UPDATE reservations SET updated_at=reservations.updated_at,deleted_at=?,deleted=reservations.id WHERE reservations.deleted = ? AND reservations.expire < ? | | 0 | placement | 16 | SELECT rp.id,rp.uuid,rp.name,rp.generation,rp.updated_at,rp.created_at,root_rp.uuid AS root_provider_uuid,parent_rp.uuid AS parent_provider_uuid FROM resource_providers AS rp INNER | | 0 | placement | 16 | SELECT me.id,me.uuid,parent.id AS parent_id,parent.uuid AS parent_uuid,root.id AS root_id,root.uuid AS root_uuid FROM resource_providers AS me INNER JOIN resource_providers AS root | | 0 | nova | 16 | DELETE FROM console_auth_tokens WHERE console_auth_tokens.expires <= ? | | 0 | placement | 16 | SELECT placement_aggregates.id,placement_aggregates.uuid FROM placement_aggregates INNER JOIN resource_provider_aggregates ON placement_aggregates.id = resource_provider_aggregates | | | | 0 | neutron | 796 | SELECT agents.id AS agents_id,agents.agent_type AS agents_agent_type,agents.`binary` AS agents_binary,agents.topic AS agents_topic,agents.host AS agents_host,agents.availability_zo | | 0 | neutron | 130 | SELECT agents.id AS agents_id,agents.agent_type AS agents_agent_type,agents.`binary` AS agents_binary,agents.topic AS agents_topic,agents.host AS agents_host,agents.availability_zo | | 0 | neutron | 130 | SELECT networkdhcpagentbindings.network_id AS networkdhcpagentbindings_network_id,networkdhcpagentbindings.dhcp_agent_id AS networkdhcpagentbindings_dhcp_agent_id,networkdhcpagentb | | | 0 | neutron | 54 | SELECT subnetroutes.destination AS subnetroutes_destination,subnetroutes.nexthop AS subnetroutes_nexthop,subnetroutes.subnet_id AS subnetroutes_subnet_id,subnets_1.id AS subnets_1_ | | 0 | neutron | 54 | SELECT dnsnameservers.address AS dnsnameservers_address,dnsnameservers.subnet_id AS dnsnameservers_subnet_id,dnsnameservers.`order` AS dnsnameservers_order,subnets_1.id AS subnets_ | | 0 | neutron | 54 | SELECT tags.standard_attr_id AS tags_standard_attr_id,tags.tag AS tags_tag,standardattributes_1.id AS standardattributes_1_id FROM (SELECT networks.id AS networks_id FROM networks | | 0 | neutron | 54 | SELECT standardattributes.id AS standardattributes_id,standardattributes.resource_type AS standardattributes_resource_type,standardattributes.description AS standardattributes_desc | | 0 | neutron | 54 | SELECT subnet_service_types.subnet_id AS subnet_service_types_subnet_id,subnet_service_types.service_type AS subnet_service_types_service_type,subnets_1.id AS subnets_1_id FROM (SE | | 0 | neutron | 54 | SELECT subnets.project_id AS subnets_project_id,subnets.id AS subnets_id,subnets.name AS subnets_name,subnets.network_id AS subnets_network_id,subnets.segment_id AS subnets_segment | | 0 | neutron | 54 | SELECT segmenthostmappings.segment_id AS segmenthostmappings_segment_id,segmenthostmappings.host AS segmenthostmappings_host,networksegments_1.id AS networksegments_1_id FROM (SELE | | 0 | neutron | 54 | SELECT networksegments.id AS networksegments_id,networksegments.network_id AS networksegments_network_id,networksegments.network_type AS networksegments_network_type,networksegment | | 0 | neutron | 54 | SELECT agents.id AS agents_id,agents.agent_type AS agents_agent_type,agents.`binary` AS agents_binary,agents.topic AS agents_topic,agents.host AS agents_host,agents.availability_zo | | 0 | neutron | 27 | SELECT standardattributes.id AS standardattributes_id,standardattributes.resource_type AS standardattributes_resource_type,standardattributes.description AS standardattributes_desc | | 0 | neutron | 27 | SELECT extradhcpopts.id AS extradhcpopts_id,extradhcpopts.port_id AS extradhcpopts_port_id,extradhcpopts.opt_name AS extradhcpopts_opt_name,extradhcpopts.opt_value AS extradhcpopts | | 0 | neutron | 27 | SELECT ml2_port_binding_levels.port_id AS ml2_port_binding_levels_port_id,ml2_port_binding_levels.host AS ml2_port_binding_levels_host,ml2_port_binding_levels.level AS ml2_port_bin | | 0 | keystone | 9 | SELECT federated_user.id AS federated_user_id,federated_user.user_id AS federated_user_user_id,federated_user.idp_id AS federated_user_idp_id,federated_user.protocol_id AS federate | | 0 | neutron | 27 | SELECT subnetroutes.destination AS subnetroutes_destination,subnetroutes.nexthop AS subnetroutes_nexthop,subnetroutes.subnet_id AS subnetroutes_subnet_id,anon_1.subnets_id AS anon_ | | 0 | keystone | 24 | SELECT project_option.project_id AS project_option_project_id,project_option.option_id AS project_option_option_id,project_option.option_value AS project_option_option_value,anon_1 | | 0 | keystone | 24 | SELECT project_tag.project_id AS project_tag_project_id,project_tag.name AS project_tag_name,anon_1.project_id AS anon_1_project_id FROM (SELECT project.id AS project_id FROM proje | | 0 | keystone | 37 | SELECT revocation_event.id AS revocation_event_id,revocation_event.domain_id AS revocation_event_domain_id,revocation_event.project_id AS revocation_event_project_id,revocation_eve | | 0 | keystone | 175 | SELECT ? | ...... ...... ......
MySQL [(none)]> SELECT hostgroup, username, count_star, SUBSTRING(digest_text, 1, 180) AS digest_text_short FROM stats_mysql_query_digest; +-----------+-----------+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | hostgroup | username | count_star | digest_text_short | +-----------+-----------+------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 0 | manila | 3 | UPDATE reservations SET updated_at=reservations.updated_at,deleted_at=?,deleted=reservations.id WHERE reservations.deleted = ? AND reservations.expire < ? | | 2 | manila | 3 | SELECT reservations.created_at AS reservations_created_at,reservations.updated_at AS reservations_updated_at,reservations.deleted_at AS reservations_deleted_at,reservations.deleted | | 2 | keystone | 3 | SELECT project_endpoint_group.endpoint_group_id AS project_endpoint_group_endpoint_group_id,project_endpoint_group.project_id AS project_endpoint_group_project_id FROM project_endp | | 2 | keystone | 3 | SELECT assignment.type AS assignment_type,assignment.actor_id AS assignment_actor_id,assignment.target_id AS assignment_target_id,assignment.role_id AS assignment_role_id,assignmen | | 2 | keystone | 59 | SELECT ? | | 2 | nova | 6 | SELECT migrations.created_at AS migrations_created_at,migrations.updated_at AS migrations_updated_at,migrations.deleted_at AS migrations_deleted_at,migrations.deleted AS migrations | | 2 | neutron | 10 | SELECT tags.standard_attr_id AS tags_standard_attr_id,tags.tag AS tags_tag,anon_1.standardattributes_id AS anon_1_standardattributes_id FROM (SELECT standardattributes.id AS standa | | 2 | neutron | 10 | SELECT standardattributes.id AS standardattributes_id,standardattributes.resource_type AS standardattributes_resource_type,standardattributes.description AS standardattributes_desc | | 2 | neutron | 10 | SELECT dnsnameservers.address AS dnsnameservers_address,dnsnameservers.subnet_id AS dnsnameservers_subnet_id,dnsnameservers.`order` AS dnsnameservers_order,anon_1.subnets_id AS ano | | 2 | keystone | 3 | SELECT project_endpoint.endpoint_id AS project_endpoint_endpoint_id,project_endpoint.project_id AS project_endpoint_project_id FROM project_endpoint WHERE project_endpoint.project_ | | 2 | neutron | 10 | SELECT subnet_service_types.subnet_id AS subnet_service_types_subnet_id,subnet_service_types.service_type AS subnet_service_types_service_type,anon_1.subnets_id AS anon_1_subnets_i | | 2 | neutron | 10 | SELECT subnets.project_id AS subnets_project_id,subnets.id AS subnets_id,subnets.name AS subnets_name,subnets.network_id AS subnets_network_id,subnets.segment_id AS subnets_segment | | 2 | nova | 11 | SELECT block_device_mapping.created_at AS block_device_mapping_created_at,block_device_mapping.updated_at AS block_device_mapping_updated_at,block_device_mapping.deleted_at AS bloc | | 2 | keystone | 14 | SELECT implied_role.prior_role_id AS implied_role_prior_role_id,implied_role.implied_role_id AS implied_role_implied_role_id FROM implied_role WHERE implied_role.prior_role_id = ? | | 0 | nova | 418 | UPDATE services SET updated_at=?,report_count=?,last_seen_up=? WHERE services.id = ? | | 0 | cinder | 582 | UPDATE services SET updated_at=?,report_count=? WHERE services.deleted = false AND services.id = ? |
{"client":"18.242.143.61:46704","digest":"0x1C46AE529DD5A40E","duration_us":2100,"endtime":"2025-08-07 11:13:08.563790","endtime_timestamp_us":1754536388563790,"event":"COM_QUERY","hostgroup_id":2,"query":"SELECT 1","rows_sent":1,"schemaname":"nova","server":"18.242.143.61:3306","starttime":"2025-08-07 11:13:08.561690","starttime_timestamp_us":1754536388561690,"thread_id":654,"username":"nova"} {"client":"18.242.143.61:46704","digest":"0xCDFFE6B0A002A823","duration_us":684,"endtime":"2025-08-07 11:13:08.565868","endtime_timestamp_us":1754536388565868,"event":"COM_QUERY","hostgroup_id":2,"query":"SELECT services.created_at AS services_created_at, services.updated_at AS services_updated_at, services.deleted_at AS services_deleted_at, services.deleted AS services_deleted, services.id AS services_id, services.uuid AS services_uuid, services.host AS services_host, services.`binary` AS services_binary, services.topic AS services_topic, services.report_count AS services_report_count, services.disabled AS services_disabled, services.disabled_reason AS services_disabled_reason, services.last_seen_up AS services_last_seen_up, services.forced_down AS services_forced_down, services.version AS services_version nFROM services nWHERE services.deleted = 0 AND services.id = 15 n LIMIT 1","rows_sent":1,"schemaname":"nova","server":"18.242.143.62:3306","starttime":"2025-08-07 11:13:08.565184","starttime_timestamp_us":1754536388565184,"thread_id":654,"username":"nova"} {"client":"18.242.143.61:46636","digest":"0x1C46AE529DD5A40E","duration_us":965,"endtime":"2025-08-07 11:13:08.907899","endtime_timestamp_us":1754536388907899,"event":"COM_QUERY","hostgroup_id":0,"query":"SELECT 1","rows_sent":1,"schemaname":"nova_cell0","server":"18.242.143.62:3306","starttime":"2025-08-07 11:13:08.906934","starttime_timestamp_us":1754536388906934,"thread_id":616,"username":"nova"} {"client":"18.242.143.69:56760","digest":"0x1C46AE529DD5A40E","duration_us":846,"endtime":"2025-08-07 11:13:08.962562","endtime_timestamp_us":1754536388962562,"event":"COM_QUERY","hostgroup_id":2,"query":"SELECT 1","rows_sent":1,"schemaname":"nova","server":"18.242.143.60:3306","starttime":"2025-08-07 11:13:08.961716","starttime_timestamp_us":1754536388961716,"thread_id":617,"username":"nova"} {"client":"18.242.143.69:56760","digest":"0xCDFFE6B0A002A823","duration_us":1178,"endtime":"2025-08-07 11:13:08.964812","endtime_timestamp_us":1754536388964812,"event":"COM_QUERY","hostgroup_id":2,"query":"SELECT services.created_at AS services_created_at, services.updated_at AS services_updated_at, services.deleted_at AS services_deleted_at, services.deleted AS services_deleted, services.id AS services_id, services.uuid AS services_uuid, services.host AS services_host, services.`binary` AS services_binary, services.topic AS services_topic, services.report_count AS services_report_count, services.disabled AS services_disabled, services.disabled_reason AS services_disabled_reason, services.last_seen_up AS services_last_seen_up, services.forced_down AS services_forced_down, services.version AS services_version nFROM services nWHERE services.deleted = 0 AND services.id = 3 n LIMIT 1","rows_sent":1,"schemaname":"nova","server":"18.242.143.61:3306","starttime":"2025-08-07 11:13:08.963634","starttime_timestamp_us":1754536388963634,"thread_id":617,"username":"nova"} {"client":"18.242.143.69:60304","digest":"0x1C46AE529DD5A40E","duration_us":872,"endtime":"2025-08-07 11:13:09.026921","endtime_timestamp_us":1754536389026921,"event":"COM_QUERY","hostgroup_id":0,"query":"SELECT 1","rows_sent":1,"schemaname":"nova_cell0","server":"18.242.143.62:3306","starttime":"2025-08-07 11:13:09.026049","starttime_timestamp_us":1754536389026049,"thread_id":660,"username":"nova"} {"client":"18.242.143.69:60304","digest":"0xCDFFE6B0A002A823","duration_us":1326,"endtime":"2025-08-07 11:13:09.029245","endtime_timestamp_us":1754536389029245,"event":"COM_QUERY","hostgroup_id":0,"query":"SELECT services.created_at AS services_created_at, services.updated_at AS services_updated_at, services.deleted_at AS services_deleted_at, services.deleted AS services_deleted, services.id AS services_id, services.uuid AS services_uuid, services.host AS services_host, services.`binary` AS services_binary, services.topic AS services_topic, services.report_count AS services_report_count, services.disabled AS services_disabled, services.disabled_reason AS services_disabled_reason, services.last_seen_up AS services_last_seen_up, services.forced_down AS services_forced_down, services.version AS services_version nFROM services nWHERE services.deleted = 0 AND services.id = 15 n LIMIT 1","rows_sent":1,"schemaname":"nova_cell0","server":"18.242.143.62:3306","starttime":"2025-08-07 11:13:09.027919","starttime_timestamp_us":1754536389027919,"thread_id":660,"username":"nova"} {"client":"18.242.143.69:45330","digest":"0xA50E27CC84BD5D30","duration_us":2223,"endtime":"2025-08-07 11:13:12.083383","endtime_timestamp_us":1754536392083383,"event":"COM_QUERY","hostgroup_id":2,"query":"SELECT agents.id AS agents_id, agents.agent_type AS agents_agent_type, agents.`binary` AS agents_binary, agents.topic AS agents_topic, agents.host AS agents_host, agents.availability_zone AS agents_availability_zone, agents.admin_state_up AS agents_admin_state_up, agents.created_at AS agents_created_at, agents.started_at AS agents_started_at, agents.heartbeat_timestamp AS agents_heartbeat_timestamp, agents.description AS agents_description, agents.configurations AS agents_configurations, agents.resource_versions AS agents_resource_versions, agents.`load` AS agents_load, agents.resources_synced AS agents_resources_synced nFROM agents nWHERE agents.agent_type IN ('Open vSwitch agent') AND agents.host IN ('control-60')","rows_sent":1,"schemaname":"neutron","server":"18.242.143.60:3306","starttime":"2025-08-07 11:13:12.081160","starttime_timestamp_us":1754536392081160,"thread_id":666,"username":"neutron"}