1.创建mysql用户以及组
groupadd mysql useradd -r -g mysql -s /bin/false mysql
2.创建Mysql数据目录
mkdir -p /data/mysql/3306 mkdir -p /data/mysql/3307 mkdir -p /data/mysql/3308 chown -R mysql.mysql /data/
3.创建mysql logs目录
mkdir -p /logs/mysql/3306 mkdir -p /logs/mysql/3307 mkdir -p /logs/mysql/3308 mkdir -p /var/run/mysqld chown -R mysql.mysql /logs/ chown -R mysql.mysql /var/run/mysqld
4.解压Mysql安装包
tar xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C / cd / mv mysql-5.7.26-linux-glibc2.12-x86_64/ mysql chown -R mysql.mysql /mysql
5.将Mysql加入环境变量
[root@mysqlmulti /]# . ~/.bash_profile [root@mysqlmulti /]# cat ~/.bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin:/mysql/bin export PATH
6.初始化数据
cd /mysql/bin ./mysqld --initialize --user=mysql --basedir=/mysql --datadir=/data/mysql/3306 --explicit_defaults_for_timestamp ./mysqld --initialize --user=mysql --basedir=/mysql --datadir=/data/mysql/3307 --explicit_defaults_for_timestamp ./mysqld --initialize --user=mysql --basedir=/mysql --datadir=/data/mysql/3308 --explicit_defaults_for_timestamp
7.修改配置文件
[root@mysqlmulti run]# cat /etc/my.cnf [mysqld_multi] mysqld = /mysql/bin/mysqld_safe mysqladmin = /mysql/bin/mysqladmin [mysqld3306] port = 3306 server_id = 3306 basedir =/mysql datadir =/data/mysql/3306 log-bin=/data/mysql/3306/mysql-bin socket =/tmp/mysql3306.sock log-error =/logs/mysql/3306/mysqld3306.log pid-file =/var/run/mysqld/mysqld3306.pid [mysqld3307] port = 3307 server_id = 3307 basedir =/mysql datadir =/data/mysql/3307 log-bin=/data/mysql/3307/mysql-bin socket =/tmp/mysql3307.sock log-error =/logs/mysql/3307/mysqld3307.log pid-file =/var/run/mysqld/mysqld3307.pid [mysqld3308] port = 3308 server_id = 3308 basedir =/mysql datadir =/data/mysql/3308 log-bin=/data/mysql/3308/mysql-bin socket =/tmp/mysql3308.sock log-error =/logs/mysql/3308/mysqld3308.log pid-file =/var/run/mysqld/mysqld3308.pid
8.创建日志文件
touch /logs/mysql/3306/mysqld3306.log touch /logs/mysql/3307/mysqld3307.log touch /logs/mysql/3308/mysqld3308.log chown -R mysql.mysql /logs/
9.启动3306,3307,3308实例
mysqld_multi start 3306 mysqld_multi start 3307 mysqld_multi start 3308
10.访问3306、3307、3308实例,密码是第六步初始化数据生成的密码
mysql -uroot -p -S /tmp/mysql3306.sock mysql -uroot -p -S /tmp/mysql3307.sock mysql -uroot -p -S /tmp/mysql3308.sock
11.更改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'wwwwww'; mysql> FLUSH PRIVILEGES;
12.查看多实例状态
[root@mysqlmulti bin]# mysqld_multi report WARNING: Log file disabled. Maybe directory or file isn't writable? mysqld_multi log file version 2.16; run: Sat Jul 13 23:38:27 2019 Reporting MySQL servers MySQL server from group: mysqld3306 is running MySQL server from group: mysqld3307 is running MySQL server from group: mysqld3308 is running
本文旨在学习多实例多个cnf配置文件下的安装与配置。
本文中创建了3306、3307、3308三个实例。
1.创建mysql用户以及组
groupadd mysql useradd -r -g mysql -s /bin/false mysql
2.创建mysql数据目录
mkdir -p /data/{3306,3307,3308}/data chown -R mysql.mysql /data/
3.创建mysql logs目录
mkdir -p /logs/{3306,3307,3308} mkdir -p /logs/{3306,3307,3308}/redolog mkdir -p /logs/{3306,3307,3308}/undolog touch /logs/3306/mysqld3306.log touch /logs/3307/mysqld3307.log touch /logs/3308/mysqld3308.log chown -R mysql.mysql /logs/ mkdir -p /var/run/mysqld chown -R mysql.mysql /var/run/mysqld
4.解压Mysql安装包
tar xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C / cd / mv mysql-5.7.26-linux-glibc2.12-x86_64/ mysql chown -R mysql.mysql /mysql
5.将Mysql加入环境变量
[root@mysqlmulti /]# . ~/.bash_profile [root@mysqlmulti /]# cat ~/.bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin:/mysql/bin export PATH
6.修改配置文件
修改/data/3306/my3306.cnf文件
[root@mysql57 3306]# cat my3306.cnf [client] port = 3306 socket = /data/3306/mysql3306.sock [mysql] auto-rehash [mysqld_safe] log-error = /logs/3306/mysqld3306.log pid-error = /data/3306/mysql3306.pid [mysqld] user = mysql port = 3306 socket= /data/3306/mysql3306.sock pid-file = /data/3306/mysql3306.pid datadir = /data/3306/data basedir = /mysql skip_name_resolve = 1 skip-external-locking max_connections = 3000 max_connect_errors = 10 transaction_isolation = READ-COMMITTED interactive_timeout=86400 wait_timeout=86400 back_log=600 ####cache###### table_open_cache=2000 thread_cache_size=500 query_cache_size=128M query_cache_min_res_unit=128k sort_buffer_size=2M read_buffer_size=2M read_rnd_buffer_size=4M join_buffer_size=2M bulk_insert_buffer_size=16M max_heap_table_size=64M tmp_table_size=64M ###MyISAM#### key_buffer_size=64M key_cache_block_size=4k myisam_sort_buffer_size=2M ########innodb settings######## #innodb_page_size = 4k innodb_buffer_pool_size = 1G innodb_buffer_pool_instances = 1 innodb_buffer_pool_load_at_startup = 1 innodb_buffer_pool_dump_at_shutdown = 1 #innodb_lru_scan_depth = 2000 innodb_lock_wait_timeout = 50 #innodb_io_capacity = 4000 #innodb_io_capacity_max = 8000 innodb_flush_method = O_DIRECT innodb_log_group_home_dir = /logs/3306/redolog/ innodb_undo_directory = /logs/3306/undolog/ innodb_undo_logs = 128 #innodb_undo_tablespaces = 3 innodb_flush_neighbors = 1 innodb_log_file_size = 256M innodb_log_buffer_size = 8M innodb_purge_threads = 4 innodb_large_prefix = 1 innodb_thread_concurrency = 64 innodb_print_all_deadlocks = 1 innodb_strict_mode = 1 innodb_sort_buffer_size = 4M ######mysqld-5.7######## innodb_buffer_pool_dump_pct = 40 innodb_page_cleaners = 4 innodb_undo_log_truncate = 1 innodb_max_undo_log_size = 2G innodb_purge_rseg_truncate_frequency = 128 binlog_gtid_simple_recovery=1 log_timestamps=system transaction_write_set_extraction=MURMUR32 show_compatibility_56=on sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #skip-grant-tables
修改/data/3307/my3307.cnf文件
[root@mysql57 3307]# cat my3307.cnf [client] port = 3307 socket = /data/3307/mysql3307.sock [mysql] auto-rehash [mysqld_safe] log-error = /logs/3307/mysqld3307.log pid-error = /data/3307/mysql3307.pid [mysqld] user = mysql port = 3307 socket= /data/3307/mysql3307.sock pid-file = /data/3307/mysql3307.pid datadir = /data/3307/data basedir = /mysql skip_name_resolve = 1 skip-external-locking max_connections = 3000 max_connect_errors = 10 transaction_isolation = READ-COMMITTED interactive_timeout=86400 wait_timeout=86400 back_log=600 ####cache###### table_open_cache=2000 thread_cache_size=500 query_cache_size=128M query_cache_min_res_unit=128k sort_buffer_size=2M read_buffer_size=2M read_rnd_buffer_size=4M join_buffer_size=2M bulk_insert_buffer_size=16M max_heap_table_size=64M tmp_table_size=64M ###MyISAM#### key_buffer_size=64M key_cache_block_size=4k myisam_sort_buffer_size=2M ########innodb settings######## #innodb_page_size = 4k innodb_buffer_pool_size = 1G innodb_buffer_pool_instances = 1 innodb_buffer_pool_load_at_startup = 1 innodb_buffer_pool_dump_at_shutdown = 1 #innodb_lru_scan_depth = 2000 innodb_lock_wait_timeout = 50 #innodb_io_capacity = 4000 #innodb_io_capacity_max = 8000 innodb_flush_method = O_DIRECT innodb_log_group_home_dir = /logs/3307/redolog/ innodb_undo_directory = /logs/3307/undolog/ innodb_undo_logs = 128 #innodb_undo_tablespaces = 3 innodb_flush_neighbors = 1 innodb_log_file_size = 256M innodb_log_buffer_size = 8M innodb_purge_threads = 4 innodb_large_prefix = 1 innodb_thread_concurrency = 64 innodb_print_all_deadlocks = 1 innodb_strict_mode = 1 innodb_sort_buffer_size = 4M ######mysqld-5.7######## innodb_buffer_pool_dump_pct = 40 innodb_page_cleaners = 4 innodb_undo_log_truncate = 1 innodb_max_undo_log_size = 2G innodb_purge_rseg_truncate_frequency = 128 binlog_gtid_simple_recovery=1 log_timestamps=system transaction_write_set_extraction=MURMUR32 show_compatibility_56=on sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #skip-grant-tables
修改/data/3308/my3308.cnf文件
[root@mysql57 3308]# cat my3308.cnf [client] port = 3308 socket = /data/3308/mysql3308.sock [mysql] auto-rehash [mysqld_safe] log-error = /logs/3308/mysqld3308.log pid-error = /data/3308/mysql3308.pid [mysqld] user = mysql port = 3308 socket= /data/3308/mysql3308.sock pid-file = /data/3308/mysql3308.pid datadir = /data/3308/data basedir = /mysql skip_name_resolve = 1 skip-external-locking max_connections = 3000 max_connect_errors = 10 transaction_isolation = READ-COMMITTED interactive_timeout=86400 wait_timeout=86400 back_log=600 ####cache###### table_open_cache=2000 thread_cache_size=500 query_cache_size=128M query_cache_min_res_unit=128k sort_buffer_size=2M read_buffer_size=2M read_rnd_buffer_size=4M join_buffer_size=2M bulk_insert_buffer_size=16M max_heap_table_size=64M tmp_table_size=64M ###MyISAM#### key_buffer_size=64M key_cache_block_size=4k myisam_sort_buffer_size=2M ########innodb settings######## #innodb_page_size = 4k innodb_buffer_pool_size = 1G innodb_buffer_pool_instances = 1 innodb_buffer_pool_load_at_startup = 1 innodb_buffer_pool_dump_at_shutdown = 1 #innodb_lru_scan_depth = 2000 innodb_lock_wait_timeout = 50 #innodb_io_capacity = 4000 #innodb_io_capacity_max = 8000 innodb_flush_method = O_DIRECT innodb_log_group_home_dir = /logs/3308/redolog/ innodb_undo_directory = /logs/3308/undolog/ innodb_undo_logs = 128 #innodb_undo_tablespaces = 3 innodb_flush_neighbors = 1 innodb_log_file_size = 256M innodb_log_buffer_size = 8M innodb_purge_threads = 4 innodb_large_prefix = 1 innodb_thread_concurrency = 64 innodb_print_all_deadlocks = 1 innodb_strict_mode = 1 innodb_sort_buffer_size = 4M ######mysqld-5.7######## innodb_buffer_pool_dump_pct = 40 innodb_page_cleaners = 4 innodb_undo_log_truncate = 1 innodb_max_undo_log_size = 2G innodb_purge_rseg_truncate_frequency = 128 binlog_gtid_simple_recovery=1 log_timestamps=system transaction_write_set_extraction=MURMUR32 show_compatibility_56=on sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #skip-grant-tables
6.初始化数据
cd /mysql/bin [root@mysql57 bin]# ./mysqld --initialize --user=mysql --basedir=/mysql --datadir=/data/3306/data --explicit_defaults_for_timestamp 2019-07-15T11:51:33.672753Z 0 [Warning] InnoDB: New log files created, LSN=45790 2019-07-15T11:51:33.809864Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2019-07-15T11:51:33.883915Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: e497ef6e-a6f6-11e9-8d94-080027704b98. 2019-07-15T11:51:33.923591Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2019-07-15T11:51:33.924124Z 1 [Note] A temporary password is generated for root@localhost: dxg4gx7od_0Y [root@mysql57 bin]# ./mysqld --initialize --user=mysql --basedir=/mysql --datadir=/data/3307/data --explicit_defaults_for_timestamp 2019-07-15T12:04:40.909570Z 0 [Warning] InnoDB: New log files created, LSN=45790 2019-07-15T12:04:41.109548Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2019-07-15T12:04:41.189840Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: b9dd499e-a6f8-11e9-aafd-080027704b98. 2019-07-15T12:04:41.191921Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2019-07-15T12:04:41.192590Z 1 [Note] A temporary password is generated for root@localhost: yhFw?#fPl2&N [root@mysql57 bin]# ./mysqld --initialize --user=mysql --basedir=/mysql --datadir=/data/3308/data --explicit_defaults_for_timestamp 2019-07-15T12:14:45.071994Z 0 [Warning] InnoDB: New log files created, LSN=45790 2019-07-15T12:14:45.286324Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2019-07-15T12:14:45.373528Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 21fc66ed-a6fa-11e9-a44b-080027704b98. 2019-07-15T12:14:45.375971Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2019-07-15T12:14:45.376668Z 1 [Note] A temporary password is generated for root@localhost: u9;Cqar8>gaP
7.启动mysql,在/data/3306下创建mysql脚本,内容如下:
[root@mysql57 3306]# cat mysql #!/bin/sh port=3306 mysql_user="root" mysql_pwd="wwwwww" CmdPath="/mysql/bin" mysql_sock="/data/${port}/mysql3306.sock" #start Mysql Services function_start_mysql() { if [ ! -e "$mysql_sock" ];then printf "Starting MySQL...\n" /bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my3306.cnf 2>&1 > /dev/null & else printf "MySQL is running...\n" exit fi } #stop Mysql Services function_stop_mysql() { if [ ! -e "$mysql_sock" ];then printf "MySQL is stopped...\n" exit else printf "Stoping MySQL...\n" ${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql3306.sock shutdown fi } #restart Mysql Services function_restart_mysql() { printf "Restarting MySQL...\n" function_stop_mysql sleep 2 function_start_mysql } case $1 in start) function_start_mysql ;; stop) function_stop_mysql ;; restart) function_restart_mysql ;; *) printf "Usage: /data/${port}/mysql {start|stop|restart}\n" esac 分别在/data/3307和/data/3308下也创建类似mysql,需要需要里面3306为3307或3308 执行命令启动3306、3307、3308实例 [root@mysql57 bin]# /data/3306/mysql start MySQL is running... [root@mysql57 bin]# /data/3307/mysql start MySQL is running... [root@mysql57 bin]# /data/3308/mysql start MySQL is running...
8.访问3306、3307、3308实例,密码是第六步初始化数据生成的密码
mysql -uroot -p -S /data/3306/mysql3306.sock mysql -uroot -p -S /data/3307/mysql3307.sock mysql -uroot -p -S /data/3308/mysql3308.sock
9.更改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'wwwwww'; mysql> FLUSH PRIVILEGES;
10.查看多实例状态
[root@mysql57 ~]# ps -ef | grep mysqld | grep -v grep root 6832 1 0 20:00 pts/1 00:00:00 /bin/sh /mysql/bin/mysqld_safe --defaults-file=/data/3306/my3306.cnf mysql 7594 6832 0 20:00 pts/1 00:00:03 /mysql/bin/mysqld --defaults-file=/data/3306/my3306.cnf --basedir=/mysql --datadir=/data/3306/data --plugin-dir=/mysql/lib/plugin --user=mysql --log-error=/logs/3306/mysqld3306.log --pid-file=/data/3306/mysql3306.pid --socket=/data/3306/mysql3306.sock --port=3306 root 7810 1 0 20:13 pts/2 00:00:00 /bin/sh /mysql/bin/mysqld_safe --defaults-file=/data/3307/my3307.cnf mysql 8572 7810 1 20:13 pts/2 00:00:06 /mysql/bin/mysqld --defaults-file=/data/3307/my3307.cnf --basedir=/mysql --datadir=/data/3307/data --plugin-dir=/mysql/lib/plugin --user=mysql --log-error=/logs/3307/mysqld3307.log --pid-file=/data/3307/mysql3307.pid --socket=/data/3307/mysql3307.sock --port=3307 root 8892 1 0 20:20 pts/5 00:00:00 /bin/sh /mysql/bin/mysqld_safe --defaults-file=/data/3308/my3308.cnf mysql 9654 8892 5 20:20 pts/5 00:00:05 /mysql/bin/mysqld --defaults-file=/data/3308/my3308.cnf --basedir=/mysql --datadir=/data/3308/data --plugin-dir=/mysql/lib/plugin --user=mysql --log-error=/logs/3308/mysqld3308.log --pid-file=/data/3308/mysql3308.pid --socket=/data/3308/mysql3308.sock --port=3308 [root@mysql57 3308]# netstat -unltp | grep 3306 tcp6 0 0 :::3306 :::* LISTEN 7594/mysqld [root@mysql57 3308]# netstat -unltp | grep 3307 tcp6 0 0 :::3307 :::* LISTEN 8572/mysqld [root@mysql57 3308]# netstat -unltp | grep 3308 tcp6 0 0 :::3308 :::* LISTEN 9654/mysqld
11.停止mysql
[root@mysql57 3308]# /data/3306/mysql stop && /data/3307/mysql stop && /data/3308/mysql stop Stoping MySQL... mysqladmin: [Warning] Using a password on the command line interface can be insecure. Stoping MySQL... mysqladmin: [Warning] Using a password on the command line interface can be insecure. Stoping MySQL... mysqladmin: [Warning] Using a password on the command line interfac