1. 程式人生 > >MySQL 5.7.19多例項安裝(二進位制安裝模式)

MySQL 5.7.19多例項安裝(二進位制安裝模式)

MySQL可以通過在一臺伺服器上,部署執行多個MySQL服務程序,通過不同的socket監聽不同的服務埠來提供各自的服務。各個例項之間是相互獨立的,每個例項的datadir, port, socket, pid都是不同的

作業系統

redhat 7.4

資料庫 mysql

5.7.19

安裝前準備

執行兩個例項,埠分別是4000,4001

midir   /data/4000
midir   /data/4001
cd /data/4000
mkdir  binlog  data  logs   redolog  relaylog  soket  undolog
cd /data/4001
mkdir  binlog  data  logs   redolog  relaylog  soket  undolog
chown -R mysql:mysql  /data

配置引數檔案

每個例項的my.cnf的配置檔案 vim /data/4000/my.cnf vim /data/4001/my.cnf 例如:

[client]
port = 4000
socket = /data/4000/soket/mysql.sock

[mysql]
no-auto-rehash

[mysqld]
port = 4000
server_id = 4000
basedir = /usr/local/mysql
datadir = /data/4000/data
log-bin = /data/4000/logs/rays-bin.log
socket = /data/4000/soket/mysql.sock
innodb_log_group_home_dir = /data/4000/redolog
innodb_undo_directory = /data/4000/undolog
tmpdir = /data/4000/data
relay_log = /data/4000/redolog/redhat-relay
log-error = /var/log/mysqld4000.log

default_time_zone = "+08:00"
character_set_server = utf8mb4
transaction_isolation = READ-COMMITTED
explicit_defaults_for_timestamp = 1
max_allowed_packet = 16M
lower_case_table_names = 1
open_files_limit = 10240
secure_file_priv = ""
plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"

# connection settings #
interactive_timeout = 31536000
wait_timeout = 31536000
lock_wait_timeout = 3600
skip_name_resolve = 1
max_connections = 1024    # ulimit -n >= 1834
thread_cache_size = 1536
thread_stack = 512K
max_connect_errors = 50000
connect_timeout = 60

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

# session memory settings #
read_buffer_size = 8M
read_rnd_buffer_size = 16M    
sort_buffer_size = 16M     
join_buffer_size = 16M
tmp_table_size = 32M          
key_buffer_size = 32M
query_cache_type = 0
query_cache_size = 0

# log settings #
slow_query_log_file=/data/4000/logs/slow-log.log
slow_query_log = 1
log_queries_not_using_indexes = 1
log_slow_admin_statements = 1
log_slow_slave_statements = 1
log_throttle_queries_not_using_indexes = 10
expire_logs_days = 10
log_bin_trust_function_creators = 1
binlog_cache_size = 4M
max_binlog_cache_size = 4G
binlog_gtid_simple_recovery = 1
log_timestamps = system

# innodb settings #
#innodb_data_file_path = ibdata1:1G:autoextend
innodb_buffer_pool_size = 32M
innodb_buffer_pool_instances = 1
innodb_log_file_size = 32M
innodb_log_files_in_group = 2
innodb_lru_scan_depth = 4096
innodb_lock_wait_timeout = 60
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000
innodb_flush_method = O_DIRECT
innodb_undo_tablespaces = 3
innodb_thread_concurrency = 8    # cores * 2
innodb_write_io_threads = 2      # cores / 2
innodb_read_io_threads = 2       # cores / 2
innodb_print_all_deadlocks = 1
innodb_sort_buffer_size = 64M
innodb_stats_persistent_sample_pages = 64
innodb_online_alter_log_max_size = 4G
innodb_log_buffer_size = 128M
innodb_rollback_on_timeout = ON
innodb_purge_threads = 8
innodb_page_cleaners = 8
innodb_undo_log_truncate = 1
innodb_sync_spin_loops = 30
innodb_spin_wait_delay = 6

# replication settings #
gtid_mode = ON
enforce_gtid_consistency = 1
master_verify_checksum = ON

# master settings #
auto_increment_increment
auto_increment_offset

# slave settings #
master_info_repository = TABLE
relay_log_info_repository = TABLE
slave_parallel_type = LOGICAL_CLOCK
slave_parallel_workers = 64
slave_rows_search_algorithms = "INDEX_SCAN,HASH_SCAN"
log_slave_updates = 1
relay_log_recovery = 1

# semi-sync replication settings #

loose_rpl_semi_sync_master_enabled = 1
loose_rpl_semi_sync_slave_enabled = 1
loose_rpl_semi_sync_master_timeout = 3000

[mysqldump]
quick
max_allowed_packet = 32M

[mysqld_safe]
log-error = /var/log/mysqld4000.log      #錯誤日誌列印在這裡
pid-file = /var/lib/mysqld/mysqld4000.pid

安裝,完成後記住root密碼

例如:

mysqld --defaults-file=/data/4000/my.cnf --initialize --user=mysql --datadir=/data/4000/data --explicit_defaults_for_timestamp
mysqld_safe --defaults-file=/data/4000/my.cnf 2>&1 > /dev/null &

#啟動例項並修改root密碼
mysql -uroot -p -S /data/4000/soket/mysql.sock    
#密碼在 /var/log/mysqld4000.log  中  A temporary password is generated for 
[email protected]
:密碼 mysql>set password=password('123456'); mysql>flush privileges;

4001步驟也一樣

訪問管理

超級管理員  
mysql> create user [email protected]'%' IDENTIFIED by '[email protected]';  
mysql> grant all privileges on *.* to [email protected]'%';  
mysql> flush privileges;  

關閉某個例項

mysqladmin -uroot -prootpwd -S /data/4000/soket/mysql.sock    shutdown
mysqladmin -uroot -prootpwd -S /data/4001/soket/mysql.sock    shutdown

客戶端登陸,開放埠防火牆

firewall-cmd --zone=public --add-port=4000/tcp --permanent firewall-cmd --zone=public --add-port=4001/tcp --permanent firewall-cmd --reload

參考: