前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >InnoDB Cluster 和 consul 碰撞出什么火花?

InnoDB Cluster 和 consul 碰撞出什么火花?

作者头像
田帅萌
发布于 2020-04-30 10:37:01
发布于 2020-04-30 10:37:01
1K00
代码可运行
举报
文章被收录于专栏:「3306 Pai」社区「3306 Pai」社区
运行总次数:0
代码可运行

InnoDB Cluster安装

3节点安装MySQL

创建所需目录与用户

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

groupadd mysql
 
useradd -g mysql mysql -s /sbin/nologin
 
mkdir -p /service/logs/software/mysql_3306/
 
mkdir -p /service/databases/mysql_3306/data/
 
chown -R mysql. /service/logs/software/mysql_3306/
 
chown -R mysql. /service/databases/mysql_3306/data/
 
chown -R mysql. /service/software/mysql_3306/
 

配置文件

配置文件中需要注意的部分
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

disabled_storage_engines        = "MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
 
log_bin                        = /service/databases/mysql_3306/data/mysql-bin
 
master_info_repository            = table
 
binlog_checksum                    = NONE
 
relay_log_info_repository        = table
 
gtid_mode                        = ON
 
enforce_gtid_consistency        = ON
 
binlog_checksum                    = NONE
 
log_slave_updates                = ON
 
binlog_format                    = ROW
 
transaction_write_set_extraction = XXHASH64
 
binlog_transaction_dependency_tracking = WRITESET_SESSION
 
slave_parallel_workers             = 4
 
slave_preserve_commit_order        = 1
 
slave_parallel_type            = LOGICAL_CLOCK
 
完整版示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

[client]
 
port    = 3306
 
socket    = /service/databases/mysql_3306/data/mysql_3306.sock
 


 
[mysql]
 
prompt="\\u@\\h \R:\m:\s [\\d]>"
 
no-auto-rehash
 
port                           = 3306
 
socket                         = /service/databases/mysql_3306/data/mysql_3306.sock
 
default_character_set          = utf8mb4
 


 
[mysqladmin]
 
port                           = 3306
 
socket                         = /service/databases/mysql_3306/data/mysql_3306.sock
 


 
[mysqldump]
 
port                           = 3306
 
socket                         = /service/databases/mysql_3306/data/mysql_3306.sock
 


 
[xtrabackup]
 
port                           = 3306
 
socket                         = /service/databases/mysql_3306/data/mysql_3306.sock
 


 
[mysqlbackup]
 
port                           = 3306
 
socket                         = /service/databases/mysql_3306/data/mysql_3306.sock
 
safe_slave_backup_timeout      = 0
 


 
[mysqld]
 
# basic settings #
 
user                           = mysql
 
default_storage_engine         = InnoDB
 
server_id                      = 1901123306
 
sql_mode                       = STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
 
socket                         = /service/databases/mysql_3306/data/mysql_3306.sock
 
pid_file                       = /service/databases/mysql_3306/data/mysql_3306.pid
 
basedir                        = /service/software/mysql_3306
 
datadir                        = /service/databases/mysql_3306/data
 
character_set_server           = utf8mb4
 
default_time_zone = +08:00
 
back_log = 1024
 
thread_stack = 512K
 
external_locking = FALSE
 
open_files_limit               = 65535
 
max_allowed_packet             = 128M
 
lower_case_table_names         = 1
 
explicit_defaults_for_timestamp = 1
 
read_only                       = 0
 
super_read_only                 = 0
 


 
# connection #
 
lock_wait_timeout = 3600
 
skip_name_resolve              = 1
 
max_connect_errors             = 1000000
 
max_connections                = 5000
 


 
# table cache performance settings#
 
table_open_cache               = 4096
 
table_open_cache_instances     = 64
 
table_definition_cache         = 4096
 


 
# CACHES AND LIMITS #
 
tmp_table_size                 = 32M
 
max_heap_table_size            = 32M
 
bulk_insert_buffer_size        = 64M
 


 
# session memory settings #
 
sort_buffer_size               = 4M
 
join_buffer_size = 4M
 
read_buffer_size = 8M
 
read_rnd_buffer_size = 4M
 
thread_cache_size              = 3000
 


 
# log settings #
 
log_error_verbosity = 3
 
min_examined_row_limit = 100
 
log_slow_admin_statements = 1
 
log_slow_slave_statements = 1
 
log_error                      = /service/logs/software/mysql_3306/mysql-error.log
 
log_timestamps                 = SYSTEM
 
log_queries_not_using_indexes  = 1
 
slow_query_log                 = 1
 
slow_query_log_file            = /service/logs/software/mysql_3306/mysql-slow.log
 
long_query_time = 0.5
 


 
# innodb settings #
 
innodb_buffer_pool_load_at_startup = 1
 
innodb_buffer_pool_dump_at_shutdown = 1
 
innodb_data_file_path = ibdata1:1G:autoextend
 
innodb_log_buffer_size = 32M
 
innodb_thread_concurrency = 0
 
innodb_sync_spin_loops = 100
 
innodb_spin_wait_delay = 30
 
##机械盘设置为500,SSD盘设置为10000-20000##
 
innodb_io_capacity = 500
 
##机械盘设置为2000,SSD盘设置为10000-20000##
 
innodb_io_capacity_max = 1000
 
##机械盘设置为1,SSD盘设置为0##
 
innodb_flush_neighbors = 1
 
innodb_write_io_threads = 16
 
innodb_read_io_threads = 16
 
innodb_purge_threads = 4
 
innodb_page_cleaners = 16
 
innodb_open_files = 65535
 
innodb_max_dirty_pages_pct = 50
 
innodb_lru_scan_depth = 4096
 
innodb_lock_wait_timeout = 10
 
innodb_checksum_algorithm = crc32
 
innodb_rollback_on_timeout = 1
 
innodb_print_all_deadlocks = 1
 
innodb_online_alter_log_max_size = 4G
 
innodb_stats_on_metadata = 0
 
innodb_flush_method            = O_DIRECT
 
innodb_log_files_in_group      = 3
 
innodb_log_file_size           = 1G
 
innodb_flush_log_at_trx_commit = 1
 
innodb_file_per_table          = 1
 
innodb_buffer_pool_size        = 4G
 
innodb_buffer_pool_instances   = 4
 


 
# undo settings #
 
innodb_undo_directory           = /service/databases/mysql_3306/data
 
innodb_undo_tablespaces         = 95
 
innodb_undo_log_truncate        = 1
 
innodb_purge_rseg_truncate_frequency = 128
 
innodb_max_undo_log_size = 4G
 


 
innodb_status_file = 1
 
innodb_status_output = 0
 
innodb_status_output_locks = 0
 


 
# performance_schema #
 
performance_schema = 1
 
performance_schema_instrument = '%=on'
 


 
# innodb monitor #
 
innodb_monitor_enable=module_innodb,module_server,module_dml,module_ddl,module_trx,module_os,module_purge,module_log,module_lock,module_buffer,module_index,module_ibuf_system,module_buffer_page,module_adaptive_hash
 


 
# safe #
 
secure_file_priv              = /service/databases/mysql_3306
 
default_password_lifetime     = 0
 


 
# replication settings #
 
skip_slave_start               = 1
 
relay_log                      = /service/databases/mysql_3306/data/relay-bin
 
slave_pending_jobs_size_max    = 128M
 
log_slave_updates = 1
 
log_bin                        = /service/databases/mysql_3306/data/mysql-bin
 
expire_logs_days               = 7
 
sync_binlog                    = 1
 
gtid_mode                      = ON
 
enforce_gtid_consistency       = 1
 
binlog_cache_size              = 4M
 
max_binlog_size                = 512M
 
max_binlog_cache_size          = 2G
 
slave_preserve_commit_order= 1
 
binlog_format = row
 
relay_log_purge = 1
 
slave_parallel_type            = LOGICAL_CLOCK
 
slave_parallel_workers         = 16
 
master_info_repository         = TABLE
 
relay_log_info_repository      = TABLE
 
relay_log_recovery             = ON
 
binlog_gtid_simple_recovery     = 1
 


 
# group replication & innodb cluster #
 
disabled_storage_engines        = "MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY"
 
master_info_repository            = table
 
binlog_checksum                    = NONE
 
relay_log_info_repository        = table
 
gtid_mode                        = ON
 
enforce_gtid_consistency        = ON
 
binlog_checksum                    = NONE
 
log_slave_updates                = ON
 
binlog_format                    = ROW
 
transaction_write_set_extraction = XXHASH64
 
slave_parallel_workers             = 4
 
slave_preserve_commit_order        = 1
 
slave_parallel_type            = LOGICAL_CLOCK
 
binlog_transaction_dependency_tracking = WRITESET_SESSION
 


 
# clone #
 

系统 HOSTS 配置

修改/etc/hosts

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vi /etc/hosts
 


 
10.101.190.112 kh-oms4-sit-innodbcluster-db01
 
10.101.190.13  kh-oms4-sit-innodbcluster-db02
 
10.101.190.179 kh-oms4-sit-innodbcluster-db03
 

三节点验证report-host是否设置正确

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

root@localhost 08:25: [(none)]>SELECT coalesce(@@report_host, @@hostname) as r;
 
+--------------------------------+
 
| r                              |
 
+--------------------------------+
 
| kh-oms4-sit-innodbcluster-db01 |
 
+--------------------------------+
 
1 row in set (0.00 sec)
 

三节点创建用户

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

create user root identified by 'C******';
 
grant all on *.* to root with grant option;
 
create user u_autodba@'%' identified  WITH mysql_native_password by 'lx*********';
 
grant all on *.* to u_autodba@'%' with grant option;
 
安装mysqlshell

wget https://dev.mysql.com/get/Downloads/MySQL-Shell/mysql-shell-8.0.19-linux-glibc2.12-x86-64bit.tar.gz
 
tar xvf mysql-shell-8.0.19-linux-glibc2.12-x86-64bit.tar.gz
 
mv mysql-shell-8.0.19-linux-glibc2.12-x86-64bit mysqlshell
 
chown -R mysql. mysqlshell/
 
vim /root/.bash_profile
 


 
PATH=PATH:HOME/bin:/service/software/mysql_3306/bin:/service/software/mysqlshell/bin 

mysqlshell连接一节点检查配置

连接节点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

[root@kh-oms4-sit-innodbcluster-db01 software]# mysqlsh root@kh-oms4-sit-innodbcluster-db01:3306
 
## 输入密码,提示还会问是否保存密码- -
 

配置检测

  • 检查node1
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MySQL  kh-oms4-sit-innodbcluster-db01:3306 ssl  JS > dba.checkInstanceConfiguration("root@kh-oms4-sit-innodbcluster-db01:3306");
 
##查看输出是否返回OK,如果不是修改并重启MySQL
 
Validating local MySQL instance listening at port 3306 for use in an InnoDB cluster...
 


 
This instance reports its own address as kh-oms4-sit-innodbcluster-db01:3306
 
Clients and other cluster members will communicate with it through this address by default. If this is not correct, the report_host MySQL system variable should be changed.
 


 
Checking whether existing tables comply with Group Replication requirements...
 
No incompatible tables detected
 


 
Checking instance configuration...
 
Instance configuration is compatible with InnoDB cluster
 


 
The instance 'kh-oms4-sit-innodbcluster-db01:3306' is valid to be used in an InnoDB cluster.
 


 
{
 
 "status": "ok"
 
}
 
检查node2

MySQL  kh-oms4-sit-innodbcluster-db01:3306 ssl  JS > dba.checkInstanceConfiguration("root@kh-oms4-sit-innodbcluster-db02:3306");
 
Please provide the password for 'root@kh-oms4-sit-innodbcluster-db02:3306': **********
 
Save password for 'root@kh-oms4-sit-innodbcluster-db02:3306'? [Y]es/[N]o/Ne[v]er (default No): y
 
Validating MySQL instance at kh-oms4-sit-innodbcluster-db02:3306 for use in an InnoDB cluster...
 


 
This instance reports its own address as kh-oms4-sit-innodbcluster-db02:3306
 
Clients and other cluster members will communicate with it through this address by default. If this is not correct, the report_host MySQL system variable should be changed.
 


 
Checking whether existing tables comply with Group Replication requirements...
 
No incompatible tables detected
 


 
Checking instance configuration...
 
Instance configuration is compatible with InnoDB cluster
 


 
The instance 'kh-oms4-sit-innodbcluster-db02:3306' is valid to be used in an InnoDB cluster.
 


 
{
 
 "status": "ok"
 
}
 
  • 检查node3
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

MySQL  kh-oms4-sit-innodbcluster-db01:3306 ssl  JS > dba.checkInstanceConfiguration("root@kh-oms4-sit-innodbcluster-db03:3306");
 
Please provide the password for 'root@kh-oms4-sit-innodbcluster-db03:3306': **********
 
Save password for 'root@kh-oms4-sit-innodbcluster-db03:3306'? [Y]es/[N]o/Ne[v]er (default No): y
 
Validating MySQL instance at kh-oms4-sit-innodbcluster-db03:3306 for use in an InnoDB cluster...
 


 
This instance reports its own address as kh-oms4-sit-innodbcluster-db03:3306
 
Clients and other cluster members will communicate with it through this address by default. If this is not correct, the report_host MySQL system variable should be changed.
 


 
Checking whether existing tables comply with Group Replication requirements...
 
No incompatible tables detected
 


 
Checking instance configuration...
 
Instance configuration is compatible with InnoDB cluster
 


 
The instance 'kh-oms4-sit-innodbcluster-db03:3306' is valid to be used in an InnoDB cluster.
 


 
{
 
 "status": "ok"
 
}
 

节点1创建集群

代码语言:javascript
代码运行次数:0
运行
复制
  1. MySQL kh-oms4-sit-innodbcluster-db01:3306 ssl JS > var cluster = dba.createCluster('oms4');
  • 得到如下输出
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

A new InnoDB cluster will be created on instance 'kh-oms4-sit-innodbcluster-db01:3306'.
 


 
Validating instance configuration at kh-oms4-sit-innodbcluster-db01:3306...
 


 
This instance reports its own address as kh-oms4-sit-innodbcluster-db01:3306
 


 
Instance configuration is suitable.
 
NOTE: Group Replication will communicate with other members using 'kh-oms4-sit-innodbcluster-db01:33061'. Use the localAddress option to override.
 


 
Creating InnoDB cluster 'oms4' on 'kh-oms4-sit-innodbcluster-db01:3306'...
 


 
Adding Seed Instance...
 
Cluster successfully created. Use Cluster.addInstance() to add MySQL instances.
 
At least 3 instances are needed for the cluster to be able to withstand up to
 
one server failure.
 

将2、3节点加入集群

node2加入集群

  • 步骤中会问你是否克隆node1节点。

cluster.addInstance('root@kh-oms4-sit-innodbcluster-db02:3306');

  • 得到如下输出
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
WARNING: A GTID set check of the MySQL instance at 'kh-oms4-sit-innodbcluster-db02:3306' determined that it contains transactions that do not originate from the cluster, which must be discarded before it can join the cluster.
 


 
kh-oms4-sit-innodbcluster-db02:3306 has the following errant GTIDs that do not exist in the cluster:
 
8cd6aafa-7ac1-11ea-a904-0050568c2d7d:1-4
 


 
WARNING: Discarding these extra GTID events can either be done manually or by completely overwriting the state of kh-oms4-sit-innodbcluster-db02:3306 with a physical snapshot from an existing cluster member. To use this method by default, set the 'recoveryMethod' option to 'clone'.
 


 
Having extra GTID events is not expected, and it is recommended to investigate this further and ensure that the data can be removed prior to choosing the clone recovery method.
 


 
Please select a recovery method [C]lone/[A]bort (default Abort): C
 
NOTE: Group Replication will communicate with other members using 'kh-oms4-sit-innodbcluster-db02:33061'. Use the localAddress option to override.
 


 
Validating instance configuration at kh-oms4-sit-innodbcluster-db02:3306...
 


 
This instance reports its own address as kh-oms4-sit-innodbcluster-db02:3306
 


 
Instance configuration is suitable.
 
A new instance will be added to the InnoDB cluster. Depending on the amount of
 
data on the cluster this might take from a few seconds to several hours.
 


 
Adding instance to the cluster...
 


 
Monitoring recovery process of the new cluster member. Press ^C to stop monitoring and let it continue in background.
 
Clone based state recovery is now in progress.
 


 
NOTE: A server restart is expected to happen as part of the clone process. If the
 
server does not support the RESTART command or does not come back after a
 
while, you may need to manually start it back.
 


 
* Waiting for clone to finish...
 
NOTE: kh-oms4-sit-innodbcluster-db02:3306 is being cloned from kh-oms4-sit-innodbcluster-db01:3306
 
** Stage DROP DATA: Completed
 
** Clone Transfer 
 
    FILE COPY  ############################################################  100%  Completed
 
    PAGE COPY  ############################################################  100%  Completed
 
    REDO COPY  ############################################################  100%  Completed
 


 
NOTE: kh-oms4-sit-innodbcluster-db02:3306 is shutting down...
 


 
* Waiting for server restart... ready
 
* kh-oms4-sit-innodbcluster-db02:3306 has restarted, waiting for clone to finish...
 
** Stage RESTART: Completed
 
* Clone process has finished: 1.12 GB transferred in 1 min 15 sec (14.94 MB/s)
 


 
State recovery already finished for 'kh-oms4-sit-innodbcluster-db02:3306'
 


 
The instance 'kh-oms4-sit-innodbcluster-db02:3306' was successfully added to the cluster.
 

node3添加进集群

cluster.addInstance('root@kh-oms4-sit-innodbcluster-db03:3306');

  • 输出与node2类似 略过

查看集群状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MySQL  kh-oms4-sit-innodbcluster-db01:3306 ssl  JS > cluster.status()
 
{
 
 "clusterName": "oms4", 
 
 "defaultReplicaSet": {
 
 "name": "default", 
 
 "primary": "kh-oms4-sit-innodbcluster-db01:3306", 
 
 "ssl": "REQUIRED", 
 
 "status": "OK", 
 
 "statusText": "Cluster is ONLINE and can tolerate up to ONE failure.", 
 
 "topology": {
 
 "kh-oms4-sit-innodbcluster-db01:3306": {
 
 "address": "kh-oms4-sit-innodbcluster-db01:3306", 
 
 "mode": "R/W", 
 
 "readReplicas": {}, 
 
 "replicationLag": null, 
 
 "role": "HA", 
 
 "status": "ONLINE", 
 
 "version": "8.0.19"
 
 }, 
 
 "kh-oms4-sit-innodbcluster-db02:3306": {
 
 "address": "kh-oms4-sit-innodbcluster-db02:3306", 
 
 "mode": "R/O", 
 
 "readReplicas": {}, 
 
 "replicationLag": null, 
 
 "role": "HA", 
 
 "status": "ONLINE", 
 
 "version": "8.0.19"
 
 }, 
 
 "kh-oms4-sit-innodbcluster-db03:3306": {
 
 "address": "kh-oms4-sit-innodbcluster-db03:3306", 
 
 "mode": "R/O", 
 
 "readReplicas": {}, 
 
 "replicationLag": null, 
 
 "role": "HA", 
 
 "status": "ONLINE", 
 
 "version": "8.0.19"
 
 }
 
 }, 
 
 "topologyMode": "Single-Primary"
 
 }, 
 
 "groupInformationSourceMember": "kh-oms4-sit-innodbcluster-db01:3306"
 
}
 

安装mysqlrouter

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://dev.mysql.com/get/Downloads/MySQL-Router/mysql-router-8.0.19-linux-glibc2.12-x86_64.tar.xz
 
tar xvf mysql-router-8.0.19-linux-glibc2.12-x86_64.tar.xz
 
mv mysql-router-8.0.19-linux-glibc2.12-x86_64 mysqlrouter
 
chown -R mysql. mysqlrouter/
 
vim /root/.bash_profile
 


 
PATH=PATH:HOME/bin:/service/software/mysql_3306/bin:/service/software/mysqlshell/bin:/service/software/mysqlrouter/bin 

配置mysqlrouter

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## 指定目录/tmp/myrouter 自动生成配置文件与启停脚本
 
mysqlrouter --bootstrap root@kh-oms4-sit-innodbcluster-db01:3306 --directory /tmp/myrouter --conf-use-sockets --user=mysql
 

查看生成配置文件内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# File automatically generated during MySQL Router bootstrap
 
[DEFAULT]
 
user=mysql
 
logging_folder=/tmp/myrouter/log
 
runtime_folder=/tmp/myrouter/run
 
data_folder=/tmp/myrouter/data
 
keyring_path=/tmp/myrouter/data/keyring
 
master_key_path=/tmp/myrouter/mysqlrouter.key
 
connect_timeout=15
 
read_timeout=30
 
dynamic_state=/tmp/myrouter/data/state.json
 


 
[logger]
 
level = INFO
 


 
[metadata_cache:oms4]
 
cluster_type=gr
 
router_id=1
 
user=mysql_router1_lf3xhs2sx1p7
 
metadata_cluster=oms4
 
ttl=0.5
 
use_gr_notifications=0
 


 
[routing:oms4_rw]
 
bind_address=0.0.0.0
 
bind_port=6446
 
socket=/tmp/myrouter/mysql.sock
 
destinations=metadata-cache://oms4/?role=PRIMARY
 
routing_strategy=first-available
 
protocol=classic
 


 
[routing:oms4_ro]
 
bind_address=0.0.0.0
 
bind_port=6447
 
socket=/tmp/myrouter/mysqlro.sock
 
destinations=metadata-cache://oms4/?role=SECONDARY
 
routing_strategy=round-robin-with-fallback
 
protocol=classic
 


 
[routing:oms4_x_rw]
 
bind_address=0.0.0.0
 
bind_port=64460
 
socket=/tmp/myrouter/mysqlx.sock
 
destinations=metadata-cache://oms4/?role=PRIMARY
 
routing_strategy=first-available
 
protocol=x
 


 
[routing:oms4_x_ro]
 
bind_address=0.0.0.0
 
bind_port=64470
 
socket=/tmp/myrouter/mysqlxro.sock
 
destinations=metadata-cache://oms4/?role=SECONDARY
 
routing_strategy=round-robin-with-fallback
 
protocol=x
 
  • 根据配置文件写端口为6446,读端口为6447。X写端口为64460,X读端口为64470

启动mysqlrouter

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@kh-oms4-sit-innodbcluster-db01 myrouter]# /tmp/myrouter/start.sh

consul检查脚本

写端口6446

  • 写json配置文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@kh-oms4-sit-innodbcluster-db01 consul.d]# cat w-kh-oms4-sit-innodbcluster.json
 
{
 
 "services": [
 
 {
 
 "name": "w-kh-oms4-sit-innodbcluster",
 
 "tags": [
 
 "master,sit,mysql"
 
 ],
 
 "address": "10.101.190.112",
 
 "port": 6446,
 
 "checks": [
 
 {
 
 "args":["sh","-c","/service/databases/consul/data/shell/check_mysql_master_3306.sh 6446 "],
 
 "interval": "5s"
 
 }
 
 ]
 
 }
 
 ]
 
}
 
  • check脚本仍然抄用大师兄的shell脚本
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@kh-oms4-sit-innodbcluster-db01 consul.d]# cat /service/databases/consul/data/shell/check_mysql_master_3306.sh
 
#!/bin/bash
 
port=$1
 
user="******"
 
passwod="******"
 


 
comm="/service/software/mysql_3306/bin/mysql -u
slave_info=`$comm -e "show slave status" |wc -l`
 
value=`$comm -Nse "select 1"`
 
get_read_only=`comm -e "show variables like 'read_only'\G"| grep -w "Value" |awk '{print 


 
if [ $slave_info -ne 0 ]
 
then
 
   echo "MySQL $port  Instance is Slave........"
 
   $comm -e "show slave status\G" | egrep -w "Master_Host|Master_User|Master_Port|Master_Log_File|Read_Master_Log_Pos|Relay_Log_File|Relay_Log_Pos|Relay_Master_Log_File|Slave_IO_Running|Slave_SQL_Running|Exec_Master_Log_Pos|Relay_Log_Space|Seconds_Behind_Master"
 
 exit 2
 
fi
 


 
if [ -z $value ]
 
then
 
 exit 2
 
fi
 


 
if [ $get_read_only = "ON" ]
 
then
 
    echo "MySQL $port  Instance is read only........"
 
 exit 2
 
fi
 


 
if  [ -nvalue -a  get_read_only = "OFF" ] 
then
 
    echo "MySQL $port  Instance is Master........"
 
 exit 0
 
fi
 


 
exit 2
 

读端口6447

  • 读配置文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@kh-oms4-sit-innodbcluster-db01 consul.d]# cat r-kh-oms4-sit-innodbcluster.json
 
{
 
 "services": [
 
 {
 
 "name": "r-kh-oms4-sit-innodbcluster",
 
 "tags": [
 
 "sit,slave,mysql"
 
 ],
 
 "address": "10.101.190.112",
 
 "port": 6447,
 
 "checks": [
 
 {
 
 "args":["sh","-c","/service/databases/consul/data/shell/check_mysql_slave_3306.sh 6447 "],
 
 "interval": "5s"
 
 }
 
 ]
 
 }
 
 ]
 
}
 
  • check脚本,因为mysqlrouter无法展示 show slave status输出,可以在组复制一致性设置为After, group_replication_consistency='AFTER',保证数据落地,用 read_only=on作为从节点判断
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash
 
port=$1
 
user="***"***
 
passwod="******"
 


 
max_delay=60
 
comm="/service/software/mysql_3306/bin/mysql -u
value=`$comm -Nse "select 1"`
 
get_read_only=`comm -e "show variables like 'read_only'\G"| grep -w "Value" |awk '{print 


 


 
if [ -z $value ]
 
then
 
 exit 2
 
fi
 


 
if [ $get_read_only = "OFF" ]
 
then
 
    echo "MySQL $port  Instance is read write........"
 
 exit 2
 
fi
 


 


 
if [ $get_read_only = "ON" ]
 
then
 
   echo "MySQL $port  Instance is Slave........"
 
 exit 0
 
fi
 


 
exit 2
 

总结

  • 看到这里的都是真爱拉!总体难点在于配置文件 my.cnf ,5.7的配置文件与8.0的配置文件相差很多,剩下的就是几条命令的事情了,总体比MGR初始化简单很多。
  • 看了官档,限制还是蛮多的,比如隔离级别,间隙锁之类。还需要继续深入理解。
  • 感谢爱可生开源社区之前的innodb cluster扫盲公众推文与大师兄的consul blog
  • 后面就是破坏性测试和压测了,一起来玩鸭!
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 3306pai 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
逆变电源的计算机控制系统,一种专用三相逆变电源控制系统研究
三相逆变器作为交流电源的主要部分,已经广泛应用于工业、能源、交通、运输等领域。本课题研究的三相逆变电源主要应用于船舶的供电系统,为汽轮发电机组交流电动辅油泵和柴油发电机组电动泵提供可靠不间断的三相交流电,能够适应负载直接启动、恒压频比启动等操作。当船电正常时,船电经过整流滤波后通过Boost升压电路为逆变电路提供直流电,当船电故障时,由蓄电池经过升压电路为逆变电路提供直流电。在两种输入电压切换以及负载直接启动时,仍然要保证逆变电路直流母线电压稳定,因此Boost电路在不同输入电压以及负载突变时,必须有良好的动态性能以及稳态性能,同时逆变电路也必须具有良好的带载能力和较好的动态性能,以保证汽轮发电机组柴油发电机组可靠正常工作。因此该专用逆变电源的研究有着非常重要的实际意义。 本文在建立BOOST电路单闭环和双闭环(电容瞬时电压外环和电感电流内环)的数学模型的基础上,讨论并分析了右半平面零点对系统稳定性的影响,指出普通PI电压单闭环控制器受右半平面零点影响大、动态响应慢的问题。基于此,本文采用双极点双零点补偿网络来减小右半平面零点的影响,以提高系统的稳态性能和动态性能。此外,分析了单电压闭环控制器对输入电压响应慢而导致输出电压波动大的缺限及原因,在此基础上,引入输入电压前馈,改善输入电压波动对输出电压的影响。同时,本文还设计了电容电压外环电感电流内环的双闭环控制器,并且分别在单闭环和双闭环控制方式下,对Boost电路带不同负载时的动态性能进行了计算机仿真分析。 本文推导了三相逆变器在abc坐标系、αβ坐标系以及dq坐标系下的数学模型。为了实现稳态基波无静差控制,本文采用基于dq坐标系下电感电流内环和电容电压外环的双闭环控制方式,电流环采用P控制器,电压外环采用普通的PI控制器,并分析了系统的动态性能以及稳态性能。最后进行了实验验证。 针对逆变器输出电压与电网电压的切换,本文对数字锁相环进行了研究,介绍了软件锁相在DSP中实现的两种方式。在建立单dq变换锁相环的数学模型的基础上,采用滞后补偿网络设计了环路滤波器,并对单dq锁相环进行计算机仿真分析,指出单dq锁相环在电网严重不平衡时锁相性能差的问题。基于此,本文提出采用基于双dq坐标系变换的锁相环来改善市电故障时系统的锁相性能,并对双dq锁相环的基本原理作了详细介绍,并进行了仿真分析。此外,对单dq锁相环进行了实验验证。 最后,本文对整个实验平台进行了简要说明,并对BOOST电路、逆变电路、锁相电流的整体级联进行了实验,验证了前三个部分设计的合理性和可行性。
全栈程序员站长
2022/09/06
3040
【电赛】2017年电赛A题——三相逆变电源EG8030测试
三相工频升压变压器采用Δ- Y 连接方式,四线输出相电压为220V,线电压为380V 的纯正弦波三相电源。板上所需+15V 驱动电源采用DC-DC 降压型开关电源芯片EG1181 进行48V 降压转换。本应用中EG8030 工作在三相同步闭环稳压模式,电压反馈采用三个小变压器隔离采样。
全栈程序员站长
2022/08/22
1.7K0
【电赛】2017年电赛A题——三相逆变电源EG8030测试
电赛校赛-三相逆变电源设计(模拟部分)「建议收藏」
因为疫情问题,我们学校的这次电赛的校赛只能线上进行了,我是负责测量部分,所以其实压力相对小一点,为了统一评分,只能使用proteus8.6,我也是无奈,又捡起来了很多年不用的C51 OR C52,其实还行吧,没考电压测量,在我之前仿真测试时候,测试了MSP430的ADC,但是在我们下板成功调试的demo板中的测频测幅程序,发现可能是进不去ADC的中断,莫名其妙。
全栈程序员站长
2022/08/12
1.4K0
电赛校赛-三相逆变电源设计(模拟部分)「建议收藏」
电力电子技术实现电能变换与控制的原理
为了能让大家更清楚直观地理解,文中将对电力变换类型及常用电力变换电路的工作原理进行分析介绍。
芯动大师
2024/04/02
5950
电力电子技术实现电能变换与控制的原理
据说能看懂这75张电路图,月薪都拿2W+
今天为大家整理了一些各类电气控制接线图、电子元件工作原理图,还有可控硅整流电路及负反馈调速装置原理等等,希望对大家的工作有所帮助,一起来了解一下吧。
AI 电堂
2023/02/23
1K0
据说能看懂这75张电路图,月薪都拿2W+
电工电子电力拖动及自动化技术考核实训台QY-DG800D[通俗易懂]
一、产品简介 QY-DG800D高性能电工电子电拖及自动化技术实训与考核装置是针对我国高等院校、职业技术教育的需求而开发的综合性实训考核装置。装置融合了电工、电子、电力拖动、 PLC 、变频器等实训内容,配备多块可自由组合的实训挂箱,适用各类职业院校、中专、技校电工、电子、电拖、机电一体化、自动化等专业的教学和从事相关专业的技术人员实训考核。 二、产品特点 装置实训屏上 380V 交流输出处设有单片机全程监控的一套过流保护装置,相间、线间直接短路或过载,电流超过设定值,系统即告警并切断总电源,确保设备安全。配备漏电保护装置,通过启动停止按钮控制实训台工作电源。测量仪表精度高,采用数字化、智能化模式,符合现代测量发展方向。 装置将电工、电子、电力拖动、 PLC 、变频调速多门学科有机组合在一个实训台上,能按工厂现场操作规程进行小型工程设计实训。 三、技术性能: 1 、工作电源:三相四线(或三相五线)~ 380V±5% 50Hz 2 、温度: -10℃ ~ + 40℃ ,相对湿度< 85% ( 25℃ ) 3 、装置容量:< 1.5KVA 4 、重量: 220Kg 5 、外形尺寸: 1600mm × 700mm × 1500mm 四、配置功能 本实训台主要由实训屏、实训挂箱、实训桌等到组成。 (一)实训屏 实训屏为铁质双层亚光密纹喷塑结构,铝合金面板,为实训挂箱提供交流电源、直流稳压电源、恒流源、函数信号发生器(包括频率计)、测试仪表及实训器件等,具体功能如下: 1 、控制及交流电源部分 ( 1 )提供三相固定 380V 交流电源,相间、线间直接短路或过载由单片机全程自动监控自动保护。电流型电压型漏电开关开启后由启动和停止按钮控制实训台工作电源。具有告警和复位功能。 ( 2 )提供单相 0 ~ 250V/ 2A 连续可调交流电源一路(配备一台 0.5KVA 单相调压器)。同时经整流环节可得一组 0-240V 连续可调直流电源,有表指示输出电压值。 ( 3 )提供~ 220V 插座 2 只,为外部设备提供工作电源。 ( 4 )配备实训用 250V/30W 日光灯管及支架一套。用于日光灯电路连接等实训。 2 、直流电源部分 ( 1 )双路恒流稳压电源,二路输出电压均为 0-30V ,内置式继电器自动换档。多圈电位器连续调节,使用方便。输出最大电流为 1.5A ,具有预设式限流保护功能,输出有 0.5 级数字电流表、电压表指示,电压稳定度 10 -2 ,负载稳定度 10 -2 ,纹波电压 5mv 。 ( 2 )低压 直流稳压电源: +5V , +24V 、 ±12V ,具有短路保护功能。 ( 3 )恒流源:一路 0-500mA 连续可调恒流源,分 2mA 、 20mA 、 500mA 三档,配有数字式直流毫安表指示输出电流,具有输出开路、短路保护功能。 3 、 函数信号发生器 : 3.1 波形:正弦波、三角波、方波、脉冲波、锯齿波、 TTL 方波。 3.2 频率范围:由 0.1Hz 到 2MHz ,分七个频率档级。 3.3 正弦波失真度; 10-30Hz<3% 30Hz-100KHz≤1% 3.4 方波响应 : 前沿 / 后沿 ≤100nS (开路) 3.5 最大输出幅度 ( 开路 ) : f < 1MH 幅度 ≤15VP-P ; 1M < f≤2MHz≤11Vp-p 3.6 直流偏置 ( 开路 ) : ±l0V 3.7 输出阻抗 Z : Z O =50Ω±5Ω 3.8 占空比:脉冲与锯齿波上升、下降沿可连续变化,范围 10% ~ 90 %。 3.9 压控振荡 (VCF) :加外加直流电压 0±5V 变化时,对应的频率变化大于 l00:1 。 3.10 输出衰减: 20dB 40dB 60dB 4 、频率计数器: 4.1 测频范围: lHz ~ l00MHz ,六位数显。 4.2 闸门时间: 0.01S 、 0.1S 、 1S 、 10S 4.3 输入阻抗 (AC 耦合 ) :电阻分量约 500KΩ ,并联电容约 100P 。 5 、智能型真有效值交流数字电压表 交流数字电压表 1 只,采用美国模拟器件公司生产的新型高性能 RMS 真有效值转换器,配以高速 MPU 单元设计而成,通过键控、数显窗口实现人机对话功能控制模式。测量范围: 0-500V ,频率范围: 10Hz-20Hz 。档位自动调节。测量精度为 0.5 级。具有数据存储与查询功能。 6 、智能型真有效值交流数字电流表 交流数字电流表 1 只,采用美国模拟器件公司生产的新型高性能 RMS 真有效值转换器,配以高速 MPU 单元设计而成,通过键控、数显窗口实现人机对话功能控制模式。测量范围: 0 -5A ,频率范围: 10Hz-20Hz 。测量精度为 0.5 级。具有数有数据存储与查询
全栈程序员站长
2022/09/06
9950
电工电子电力拖动及自动化技术考核实训台QY-DG800D[通俗易懂]
玩转电源设计,8个优选逆变电源参考方案大合辑
利用晶闸管电路把直流电转变成交流电,这种对应于整流的逆向过程,定义为逆变。例如:应用晶闸管的电力机车,当下坡时使直流电动机作为发电机制动运行,机车的位能转变成电能,反送到交流电网中去。又如运转着的直流电动机,要使它迅速制动,也可让电动机作发电机运行,把电动机的动能转变为电能,反送到电网中去。
全栈程序员站长
2022/09/06
1.5K0
玩转电源设计,8个优选逆变电源参考方案大合辑
前工程师讲解:开关电源设计-LLC电源
很多最初接触电源的朋友,都是从开关电源设计来进行入门学习的。期间不仅要查阅大量的资料,还要对这些资料进行筛选和整理,比较耗费时间和精力。为此,小编将一名前工程师的开关电源设计经验进行了整理,希望能帮助大家加快自学的步伐。
全栈程序员站长
2022/08/31
2.4K0
前工程师讲解:开关电源设计-LLC电源
matlab逆变的参数设计,基于Matlab的孤立逆变电源设计方案 – 全文
基于Matlab软件平台,采用双环控制策略设计的逆变源,利用Matlab-Simulink-SimPowerSystems的工具箱进行建模仿真,验证了本文所设计方案的可行性和有效性。
全栈程序员站长
2022/07/01
8840
matlab逆变的参数设计,基于Matlab的孤立逆变电源设计方案 – 全文
FOC电机算法设计基础知识.1
FOC算法(Field-Oriented Control,场定向控制算法)是一种常用于交流电机控制的算法。它的目标是将交流电机的控制问题转换为直流电机的控制问题,从而使得交流电机可以像直流电机一样被有效控制。
云深无际
2023/05/24
1.5K0
FOC电机算法设计基础知识.1
PLC控制三相异步电动机正反转系列实训QY-DG800E[通俗易懂]
在现代化生产过程中三相异步电动机的应用几乎涵盖了工业农业和人类生活的各个领域。在生产过程中三相异步电动机往往工作在恶劣的环境下,容易产生短路、断相等事故,工作在大型设备的高压电动机与大功率电动机一旦发生故障损失无法估计。在生产过程中,往往要求电动机能够实现正反转来满足人们的需求,如直梯的上升与下降,起重机大车与小车的左右移动以及吊钩的上升与下降等等。传统的继电器控制电路简单实用,但是继电器的频繁动作导致触点不能良好接触而影响工作。在工业生产中,电机调速存在很多不确定的因素,难以做到精确控制。 利用 PLC 控制三相异步电动机,以其结构简单,接线少,体积小等特点处于优势地位。PLC 一种数字运算操作的电子系统,专为在工业环境应用而设计的。它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算,顺序控制,定时,计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程. PLC 的系统构成与工作原理 1、 编程控制器的基本组成 可编程控制器的基本组成可以划分为两部分,即硬件系统和软件系统。世界各国生产的可编程控制器外观各异,但作为工业控制计算机,其硬件系统都大体相同,主要由中央处理模块、存储模块、输入/输出模块、编程器和电源等几部分构成。
全栈程序员站长
2022/09/06
2.5K0
PLC控制三相异步电动机正反转系列实训QY-DG800E[通俗易懂]
低压无功补偿电容柜浅谈
合上刀熔开关和断路器,无功功率补偿控制器根据进线柜电压和电流的相位差输出控制信号,控制交流接触器闭合和断开,从而控制电容器投入和退出。
全栈程序员站长
2022/09/02
1.3K0
低压无功补偿电容柜浅谈
直流电压前馈控制数字逆变电源设计与实现
逆变电源一般采用瞬时反馈控制技术来提高逆变电源的动态响应速度,减少输出电压的谐波含量,改善输出电压波形的质量。常见的逆变电源控制技术,有重复控制、谐波补偿控制、无差拍控制、电压瞬时值控制和带电流内环的电压瞬时值控制等类型[1~4]。其中,带电流内环电压瞬时值环路的双环控制方法因实现简单,系统动态性能优越和对负载的适应性强等优点,而逐渐成为高性能逆变电源的发展方向之一[4]。但传统控制方法是基于逆变电源直流侧输入电压为无脉动直流电压的假定,而实际逆变电源,存在因电网电压波动或负载突变而导致直流侧电压波动的现象[5]。直流输入电压波动会引起逆变器开环增益波动,进而影响输出电压质量。文献[6]提出在传统双环控制的基础上,增加输出电压有效值反馈环的三环控制策略,在一定程度上消除了直流输入电压波动导致的输出电压稳态误差,但有效值环对输出电压变化的响应速度较慢,控制过程复杂。
全栈程序员站长
2022/06/30
1.4K0
直流电压前馈控制数字逆变电源设计与实现
基于STC89C52的自动循迹小车项目
摘要:本文根据对目标金属物的非接触式探测定位和移动的具体要求,以STC89C52RC单片机为控制核心,结合驱动模块、三个电感模块(LDC1000电感数字传感器)、测速模块和显示模块,设计并实现了一种自动循迹小车。该小车能在规定的具有0.6-0.9mm细铁丝标识的平面跑道上自动循迹前进,且在行进过程中能够检测到硬币并报警,同时小车的运行时间、距离等信息可在显示屏上实时显示。经过多次测试表明,该循迹小车达到了预期的效果,自动循迹稳定,硬币识别准确,实时显示距离及时间效果好,抗干扰能力强。
全栈程序员站长
2022/09/06
1.4K0
基于STC89C52的自动循迹小车项目
三极管开关电路_利用三极管设计开关电路[通俗易懂]
很多工程师在上学时被老师讲的三极管的各种电路接法,和小信号模型分析给绕晕了。而且大学的课本大多数都是在讲三极管的放大特性。其实在实际的电路设计中,三极管的很多应用场景只是利用三级管的开关特性,我们往往是运用三极管来实现开关电路,做一些电平转换的功能。
全栈程序员站长
2022/11/08
2K0
三极管开关电路_利用三极管设计开关电路[通俗易懂]
2011年全国电子设计大赛综合测试题_全国大学生英语竞赛 C类
本系统主要由电位器模块、直流减速电机模块、电源模块、电机驱动模块、单片机最小系统班组成。电位器与主控芯片STM32F407ZGT6相连,通过电位的测算实时向MCU发送摆杆的状态,MCU通过控制LM298N电机驱动模块来控制直流减速电机,进而控制摆杆的状态,并使用LCD显示相关参数。
全栈程序员站长
2022/09/23
6010
2011年全国电子设计大赛综合测试题_全国大学生英语竞赛 C类
protel相关资料
其实,在一块主板上采用蛇行线的原因有两个:一是为了保证走线线路的等长。因为像CPU到北桥芯片的时钟线,它不同于普通家电的电路板线路,在这些线路上以100MHz左右的频率高速运行的信号,对线路的长度十分敏感。不等长的时钟线路会引起信号的不同步,继而造成系统不稳定。故此,某些线路必须以弯曲的方式走线来调节长度。另一个使用蛇行线的常见原因为了尽可能减少电磁辐射(EMI)对主板其余部件和人体的影响。因为高速而单调的数字信号会干扰主板中各种零件的正常工作。通常,主板厂商抑制 EMI的一种简便方法就是设计蛇形线,尽可能多地消化吸收辐射。但是,我们也应该看到,虽然采用蛇行线有上面这些好处,也并不是说在设计主板走线时使用的蛇行线越多越好。因为过多过密的主板走线会造成主板布局的疏密不均,会对主板的质量有一定的影响。好的走线应使主板上各部分线路密度差别不大,并且要尽可能均匀分布,否则很容易造成主板的不稳定。 3、忌用“飞线”主板  判断一块主板走线的好坏,还可以从走线的转弯角度看出来。好的主板布线应该比较均匀整齐,走线转弯角度不应小于135度。因为转弯角度过小的走线在高频电路中相当于电感元件,会对其它设备产生干扰。    而某些设计水平很差的主板厂商在设计走线时,由于技术实力原因往往会导致最后的成品有缺陷。此时,便采取人工修补的方法来解决问题,这种因设计不合理而出现的导线,称之为“飞线”(图2)。如果一块主板上有飞线,就证明该主板的走线设计有一些问题。
全栈程序员站长
2022/06/26
1.7K0
protel相关资料
2016年四川省TI杯电子设计竞赛B题
B题:自动循迹小车 1.任务 设计制作一个自动循迹小车。小车采用一片 TI公司LDC1314或LDC1000电感数字转换器作为循迹传感器,在规定的平面跑道自动按顺时针方向循迹前进。跑道的标识为一根直径0.6~0.9mm的细铁丝,按照图1的示意尺寸,用透明胶带将其贴在跑道上。图中所有圆弧的半径均为为20cm±2cm。
全栈程序员站长
2022/06/26
7160
2016年四川省TI杯电子设计竞赛B题
电气设计心得体会_原理图设计规范
本博客将简述中兴通讯股份有限公司在原理图设计中需要注意的一些事项,其中包含了中兴设计开发部积累的大量硬件开发知识和经验,可以作为学习使用。硬件工程师可以学习并掌握检查条目的内容以及对条目的详细说明,学习部门经验。
全栈程序员站长
2022/10/29
1.5K0
电气设计心得体会_原理图设计规范
有关单片机的毕业设计_1500一套毕业设计贵吗
对大部分同学来说,毕业设计根本不知道从哪下手,完全处于蒙圈状态,为帮助大家能顺利毕业,精心准备800多套单片机毕业设计与您分享!
全栈程序员站长
2022/11/09
2.2K0
推荐阅读
相关推荐
逆变电源的计算机控制系统,一种专用三相逆变电源控制系统研究
更多 >
LV.2
这个人很懒,什么都没有留下~
目录
  • InnoDB Cluster安装
    • 3节点安装MySQL
      • 创建所需目录与用户
      • 配置文件
    • 系统 HOSTS 配置
      • 修改/etc/hosts
      • 三节点验证report-host是否设置正确
    • 三节点创建用户
    • mysqlshell连接一节点检查配置
      • 连接节点
      • 配置检测
    • 节点1创建集群
    • 将2、3节点加入集群
      • node2加入集群
      • node3添加进集群
    • 查看集群状态
    • 安装mysqlrouter
      • 配置mysqlrouter
      • 查看生成配置文件内容
      • 启动mysqlrouter
    • consul检查脚本
      • 写端口6446
      • 读端口6447
    • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档