mysql8.0.20安裝測試innodb cluster

本文記錄搭建mysql innodb cluster的過程和基本的測試。mysql

 

一、環境描述linux

主機名 主機IP 部署
tidb60 192.168.68.60 MySQL8.0.20
tidb61 192.168.68.61 MySQL8.0.20
tidb62 192.168.68.62 MySQL8.0.20
tidb63 192.168.68.63 MySQL-shell,MySQL-route

 

二、下載安裝包sql

https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
https://cdn.mysql.com//Downloads/MySQL-Router/mysql-router-8.0.20-linux-glibc2.12-x86_64.tar.xz
https://cdn.mysql.com//Downloads/MySQL-Shell/mysql-shell-8.0.20-linux-glibc2.12-x86-64bit.tar.gzshell

 

二、環境部署session

2.1 MySQL8.0.20 實例部署,以tidb60主機上爲例。socket

mkdir -p /home/mysql_cluster/my3366/{socket,data,logs,dump_dir}ide

cd /home/mysql_clusteroop

chown -R mysql:mysql my3366測試

/usr/local/mysql8020/bin/mysqld --defaults-file=/home/mysql_cluster/my3366/my3366.cnf --initializeui

nohup /usr/local/mysql8020/bin/mysqld_safe --defaults-file=/home/mysql_cluster/my3366/my3366.cnf --user=mysql &

 /usr/local/mysql8020/bin/mysql -S /home/mysql_cluster/my3366/socket/mysql3366.sock -uroot -p

 create user dba@'%' identified  WITH mysql_native_password by 'dba';
 grant all on *.* to dba@'%' with grant option;
 flush privileges;

 

參數文件/home/mysql_cluster/my3366/my3366.cnf

[client]
port    = 
socket    = /home/mysql_cluster/my3366/socket/mysql3366.sock
[mysql]
prompt="\\u@\\h \R:\m:\s [\\d]>"
no-auto-rehash
port                           = 3366
socket                         = /home/mysql_cluster/my3366/socket/mysql3366.sock
default_character_set          = utf8mb4
[mysqladmin]
port                           = 3366
socket                         = /home/mysql_cluster/my3366/socket/mysql3366.sock
[mysqldump]
port                           = 3366
socket                         = /home/mysql_cluster/my3366/socket/mysql3366.sock
[xtrabackup]
port                           = 3366
socket                         = /home/mysql_cluster/my3366/socket/mysql3366.sock
[mysqlbackup]
port                           = 3366
socket                         = /home/mysql_cluster/my3366/socket/mysql3366.sock
safe_slave_backup_timeout      = 0
[mysqld]
# basic settings #
user                           = mysql
port			       = 3366
default_storage_engine         = InnoDB
server_id                      = 168603366
sql_mode                       = STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
socket                         = /home/mysql_cluster/my3366/socket/mysql3366.sock
pid_file                       = /home/mysql_cluster/my3366/socket/mysql3366.pid
basedir                        = /usr/local/mysql8020
datadir                        = /home/mysql_cluster/my3366/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                      = /home/mysql_cluster/my3366/logs/mysql-error.log
log_timestamps                 = SYSTEM
log_queries_not_using_indexes  = 1
slow_query_log                 = 1
slow_query_log_file            = /home/mysql_cluster/my3366/logs/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           = /home/mysql_cluster/my3366/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              = /home/mysql_cluster/my3366/dump_dir
default_password_lifetime     = 0
# replication settings #
skip_slave_start               = 1
relay_log                      = /home/mysql_cluster/my3366/logs/relay-bin
slave_pending_jobs_size_max    = 128M
log_slave_updates = 1
log_bin                        = /home/mysql_cluster/my3366/logs/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 #

  

 2.2 配置檢查

  在tidb63主機上部署mysqlshell,下載後解壓,配置環境變量便可使用,部署路徑跟進實際環境便可。

  檢查節點1:tidb60:3366實例

  [root@tidb63 bin]# pwd
/home/jm/data/mysql-shell-8.0.20/bin
[root@tidb63 bin]# ./mysqlsh dba@tidb60:3366
Please provide the password for 'dba@tidb60:3366': ***
MySQL Shell 8.0.20

Copyright (c) 2016, 2020, 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 '\?' for help; '\quit' to exit.
Creating a session to 'dba@tidb60:3366'
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 36698
Server version: 8.0.20 MySQL Community Server - GPL
No default schema selected; type \use <schema> to set one.
MySQL  tidb60:3366 ssl  JS > dba.checkInstanceConfiguration("dba@tidb60:3366");
Please provide the password for 'dba@tidb60:3366': ***
Validating MySQL instance at tidb60.com:3366 for use in an InnoDB cluster...

This instance reports its own address as tidb60.com:3366
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 'tidb60.com:3366' is valid to be used in an InnoDB cluster.

{
    "status": "ok"
}
MySQL  tidb60:3366 ssl  JS >

   

 檢查節點2:tidb61:3366實例

 MySQL  tidb60:3366 ssl  JS > dba.checkInstanceConfiguration("dba@tidb61:3366");
Please provide the password for 'dba@tidb61:3366': ***
Validating MySQL instance at tidb61.com:3366 for use in an InnoDB cluster...
This instance reports its own address as tidb61.com:3366
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 'tidb61.com:3366' is valid to be used in an InnoDB cluster.
{
    "status": "ok"
}
 MySQL  tidb60:3366 ssl  JS >
 
 檢查節點3:tidb62:3366實例
 
 MySQL  tidb60:3366 ssl  JS > dba.checkInstanceConfiguration("dba@tidb62:3366");
Please provide the password for 'dba@tidb62:3366': ***
Validating MySQL instance at tidb62.com:3366 for use in an InnoDB cluster...
This instance reports its own address as tidb62.com:3366
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 'tidb62.com:3366' is valid to be used in an InnoDB cluster.
{
    "status": "ok"
}
 MySQL  tidb60:3366 ssl  JS >

 

  2.3 建立集羣

 能夠在任一 一個節點上執行,根據測試發現初次加入集羣的這節點最終是是master節點,便可以R/W

[root@tidb63 bin]# pwd
/home/jm/data/mysql-shell-8.0.20/bin
[root@tidb63 bin]# ./mysqlsh dba@tidb60:3366
Please provide the password for 'dba@tidb60:3366': ***
MySQL Shell 8.0.20
Copyright (c) 2016, 2020, 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 '\?' for help; '\quit' to exit.
Creating a session to 'dba@tidb60:3366'
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 37770
Server version: 8.0.20 MySQL Community Server - GPL
No default schema selected; type \use <schema> to set one.
 MySQL  tidb60:3366 ssl  JS > var cluster = dba.createCluster('lixd');
A new InnoDB cluster will be created on instance 'tidb60:3366'.
Disabling super_read_only mode on instance 'tidb60.com:3366'.
Validating instance configuration at tidb60:3366...
This instance reports its own address as tidb60.com:3366
Instance configuration is suitable.
NOTE: Group Replication will communicate with other members using 'tidb60.com:33661'. Use the localAddress option to override.
Creating InnoDB cluster 'lixd' on 'tidb60.com:3366'...
Adding Seed Instance...
NOTE: Metadata schema found in target 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.
 MySQL  tidb60:3366 ssl  JS >

 

將另外2個節點添加到該cluster中

相關文章
相關標籤/搜索