参数文件基于:https://imysql.com/my-cnf-wizard.html生成,生产环境请根据实际环境配置cat my.cnf[mysql]#用户名@主机名 时间 [数据库]prompt="\u@mysql01 \R:\m:\s [\d]> "no-auto-rehash# 官方文档中写的password,但是存在bug,需要改成pass(v5.7.9)# 写成password,start时正常,stop时,报如下错误# Access denied for user 'multi_admin'@'localhost' (using password: YES)# 配置上mysqld_safe守护进程[mysqld_multi]mysqld = /usr/local/mysql/bin/mysqld_safemysqladmin = /usr/local/mysql/bin/mysqladminuser = multi_adminpass = 123log = /var/log/mysqld_multi.log# mysqld后面的数字为GNR, 是该实例的标识# mysqld_multi start 1, mysqld_multi start 2-4[mysqld1]basedir = /usr/local/mysqlserver-id = 11port = 3306bind_address = 0.0.0.0user = mysqlperformance_schema = offinnodb_buffer_pool_size = 128Mskip_name_resolve = 1pid-file = /data/mysql5_7_23/data1/mysql.pid1datadir = /data/mysql5_7_23/data1/socket = /data/mysql5_7_23/data1/mysql.sockpid-file = /data/mysql5_7_23/data1/mysql01.pidslow_query_log_file = /data/mysql5_7_23/data1/slow.loglog-error = /data/mysql5_7_23/data1/error.loglog-bin = /data/mysql5_7_23/data1/mybinlog[mysqld2]basedir = /usr/local/mysqlserver-id = 12port = 3307bind_address = 0.0.0.0user = mysqlperformance_schema = offinnodb_buffer_pool_size = 128Mskip_name_resolve = 1pid-file = /data/mysql5_7_23/data2/mysql.pid2datadir = /data/mysql5_7_23/data2/socket = /data/mysql5_7_23/data2/mysql.sockpid-file = /data/mysql5_7_23/data2/mysql02.pidslow_query_log_file = /data/mysql5_7_23/data2/slow.loglog-error = /data/mysql5_7_23/data2/error.loglog-bin = /data/mysql5_7_23/data2/mybinlog# 定义不同版本# [mysqld3]# server-id = 33# datadir = /data3# basedir = /usr/local/mysql56 # basedir定义了使用5.6的mysql版本,如果有此标签,上面5.7也要有basedir参数,否则默认会以5.6启动# port = 3309# socket = /tmp/mysql.sock3# plugin_dir=/usr/local/mysql56/lib/plugin # plugin 目录也变了[mysqld]#user = mysql#port = 3306basedir = /usr/local/mysql#datadir = /data/mysql5_7_23/#socket = /data/mysql5_7_23/mysql.sockpid-file = mysql01.pidcharacter-set-server = utf8mb4#skip_name_resolve = 1open_files_limit = 65535back_log = 1024max_connections = 512max_connect_errors = 1000000table_open_cache = 1024table_definition_cache = 1024table_open_cache_instances = 64thread_stack = 512Kexternal-locking = FALSEmax_allowed_packet = 32Msort_buffer_size = 4Mjoin_buffer_size = 4Mthread_cache_size = 768interactive_timeout = 600wait_timeout = 600tmp_table_size = 32Mmax_heap_table_size = 32Mslow_query_log = 1#slow_query_log_file = /data/mysql5_7_23/slow.log#log-error = /data/mysql5_7_23/error.loglong_query_time = 0.1log_queries_not_using_indexes =1log_throttle_queries_not_using_indexes = 60min_examined_row_limit = 100log_slow_admin_statements = 1log_slow_slave_statements = 1#server-id = 3306#log-bin = /data/mysql5_7_23/mybinlogsync_binlog = 1binlog_cache_size = 4Mmax_binlog_cache_size = 2Gmax_binlog_size = 1Gexpire_logs_days = 3master_info_repository = TABLErelay_log_info_repository = TABLEgtid_mode = onenforce_gtid_consistency = 1log_slave_updatesslave-rows-search-algorithms = 'INDEX_SCAN,HASH_SCAN'binlog_format = rowbinlog_checksum = 1relay_log_recovery = 1relay-log-purge = 1key_buffer_size = 32Mread_buffer_size = 8Mread_rnd_buffer_size = 4Mbulk_insert_buffer_size = 64Mmyisam_sort_buffer_size = 128Mmyisam_max_sort_file_size = 10Gmyisam_repair_threads = 1lock_wait_timeout = 3600explicit_defaults_for_timestamp = 1innodb_thread_concurrency = 0innodb_sync_spin_loops = 100innodb_spin_wait_delay = 30transaction_isolation = REPEATABLE-READ#innodb_additional_mem_pool_size = 16M#innodb_buffer_pool_size = 512Minnodb_buffer_pool_instances = 4innodb_buffer_pool_load_at_startup = 1innodb_buffer_pool_dump_at_shutdown = 1innodb_data_file_path = ibdata1:1G:autoextendinnodb_flush_log_at_trx_commit = 1innodb_log_buffer_size = 32Minnodb_log_file_size = 512Minnodb_log_files_in_group = 2innodb_max_undo_log_size = 4Ginnodb_undo_directory = undologinnodb_undo_tablespaces = 95# 根据您的服务器IOPS能力适当调整# 一般配普通SSD盘的话,可以调整到 10000 - 20000# 配置高端PCIe SSD卡的话,则可以调整的更高,比如 50000 - 80000innodb_io_capacity = 4000innodb_io_capacity_max = 8000innodb_flush_neighbors = 0innodb_write_io_threads = 8innodb_read_io_threads = 8innodb_purge_threads = 4innodb_page_cleaners = 4innodb_open_files = 65535innodb_max_dirty_pages_pct = 50innodb_flush_method = O_DIRECTinnodb_lru_scan_depth = 4000innodb_checksum_algorithm = crc32innodb_lock_wait_timeout = 10innodb_rollback_on_timeout = 1innodb_print_all_deadlocks = 1innodb_file_per_table = 1innodb_online_alter_log_max_size = 4Ginternal_tmp_disk_storage_engine = InnoDBinnodb_stats_on_metadata = 0# some var for MySQL 5.7innodb_checksums = 1#innodb_file_format = Barracuda#innodb_file_format_max = Barracudaquery_cache_size = 0query_cache_type = 0innodb_undo_logs = 128innodb_status_file = 1# 注意: 开启 innodb_status_output & innodb_status_output_locks 后, 可能会导致log-error文件增长较快innodb_status_output = 0innodb_status_output_locks = 0#performance_schema#performance_schema = 1performance_schema_instrument = '%=on'#innodb monitorinnodb_monitor_enable="module_innodb"innodb_monitor_enable="module_server"innodb_monitor_enable="module_dml"innodb_monitor_enable="module_ddl"innodb_monitor_enable="module_trx"innodb_monitor_enable="module_os"innodb_monitor_enable="module_purge"innodb_monitor_enable="module_log"innodb_monitor_enable="module_lock"innodb_monitor_enable="module_buffer"innodb_monitor_enable="module_index"innodb_monitor_enable="module_ibuf_system"innodb_monitor_enable="module_buffer_page"innodb_monitor_enable="module_adaptive_hash"[mysqldump]quickmax_allowed_packet = 32M
初始化:
mysqld --initialize --user=mysql --datadir=/data/mysql5_7_23/data1
mysqld --initialize --user=mysql --datadir=/data/mysql5_7_23/data2
mysql_ssl_rsa_setup --user=mysql --datadir=/data/mysql5_7_23/data1/
mysql_ssl_rsa_setup --user=mysql --datadir=/data/mysql5_7_23/data2/
启动所有实例
mysqld_multi start
根据[mysql1]
单独启动实例
mysqld_multi start 1
或者
mysqld_multi start 1-2
查看实例状态
mysqld_multi report
多实例加入服务
cp /usr/local/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multid
chkconfig mysqld_multid on
根据临时密码登录,修改密码,端口号不需要加
mysql -u root -S /data/mysql5_7_23/data1/mysql.sock -p -P3306
mysql -u root -S /data/mysql5_7_23/data2/mysql.sock -p -P3307
查看端口
netstat -tnlp | grep mysql
给管理用户授权
create user 'multi_admin'@'localhost' identified by '123';
grant shutdown on *.* to 'multi_admin'@'localhost';
和[mysqld_multi]中的user,pass需要对应,这样才能使用mysqld_multi关闭数据库