多实例官方安装方案02 - MySQL中文参考手册
2019-09-11 阅读 : 次
再来看第二种通过官方自带的mysqld_multi实现多实例实战:
通过官方自带的mysqld_multi使用单独的配置文件来实现多实例,这种方式定制每个实例的配置不太方面,优点是管理起来很方便,集中管理。下面就分别来实战这两种多实例的安装和管理
环境介绍:
mysql 版本:5.5.29
操作系统:Centos 5.5
mysql实例数:3个
实例占用端口分别为:3306、3307、3308
这里的mysql安装以及数据库的初始化和前面的步骤一样。
必要软件包
yum -y install ncurses-devel gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* libmcrypt* libtool-ltdl-devel* libtool make cmake
创建mysql用户
/usr/sbin/groupadd mysql/usr/sbin/useradd -g mysql mysql -s /sbin/nologin
编译安装MySQL
tar -zxvf mysql-5.5.29.tar.gz && cd mysql-5.5.29 #默认情况下是安装在/usr/local/mysql cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql /-DMYSQL_DATADIR=/usr/local/mysql/data /-DSYSCONFDIR=/etc /-DWITH_MYISAM_STORAGE_ENGINE=1 /-DWITH_INNOBASE_STORAGE_ENGINE=1 /-DWITH_MEMORY_STORAGE_ENGINE=1 /-DWITH_READLINE=1 /-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock /-DMYSQL_TCP_PORT=3306 /-DENABLED_LOCAL_INFILE=1 /-DWITH_PARTITION_STORAGE_ENGINE=1 /-DEXTRA_CHARSETS=all /-DDEFAULT_CHARSET=utf8 /-DDEFAULT_COLLATION=utf8_general_cimake && make install
初始化数据库
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/dbdata_3306/data --user=mysql/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/dbdata_3307/data --user=mysql/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/dbdata_3308/data --user=mysql
为什么要初始化数据库?
答:初始化的主要目的就是创建基础的数据库文件,例如生成MySQL库,表等.
授权数据库权限给mysql用户
setfacl -m u:mysql:rwx -R /datasetfacl -m d:u:mysql:rwx -R /data
mysqld_multi的配置
vim /etc/my.cnf
[mysqld_multi]mysqld = /usr/local/mysql/bin/mysqld_safemysqladmin = /usr/local/mysql/bin/mysqladminuser = adminpassword = password[mysqld1]socket = /data/dbdata_3306/mysql.sockport = 3306pid-file = /data/dbdata_3306/3306.piddatadir = /data/dbdata_3306/datauser = mysqlskip-name-resolvelower_case_table_names=1innodb_file_per_table=1back_log = 50max_connections = 300max_connect_errors = 1000table_open_cache = 2048max_allowed_packet = 16Mbinlog_cache_size = 2Mmax_heap_table_size = 64Msort_buffer_size = 2Mjoin_buffer_size = 2Mthread_cache_size = 64thread_concurrency = 8query_cache_size = 64Mquery_cache_limit = 2Mft_min_word_len = 4default-storage-engine = innodbthread_stack = 192Ktransaction_isolation = REPEATABLE-READtmp_table_size = 64Mlog-bin=mysql-binbinlog_format=mixedslow_query_loglong_query_time = 1server-id = 3306key_buffer_size = 8Mread_buffer_size = 2Mread_rnd_buffer_size = 2Mbulk_insert_buffer_size = 64Mmyisam_sort_buffer_size = 128Mmyisam_max_sort_file_size = 10Gmyisam_repair_threads = 1myisam_recoverinnodb_additional_mem_pool_size = 16Minnodb_buffer_pool_size = 200Minnodb_data_file_path = ibdata1:10M:autoextendinnodb_file_io_threads = 8innodb_thread_concurrency = 16innodb_flush_log_at_trx_commit = 1innodb_log_buffer_size = 16Minnodb_log_file_size = 512Minnodb_log_files_in_group = 3innodb_max_dirty_pages_pct = 60innodb_lock_wait_timeout = 120[mysqld2]socket = /data/dbdata_3307/mysql.sockport = 3307pid-file = /data/dbdata_3307/3307.piddatadir = /data/dbdata_3307/datauser = mysqlskip-name-resolvelower_case_table_names=1innodb_file_per_table=1back_log = 50max_connections = 300max_connect_errors = 1000table_open_cache = 2048max_allowed_packet = 16Mbinlog_cache_size = 2Mmax_heap_table_size = 64Msort_buffer_size = 2Mjoin_buffer_size = 2Mthread_cache_size = 64thread_concurrency = 8query_cache_size = 64Mquery_cache_limit = 2Mft_min_word_len = 4default-storage-engine = innodbthread_stack = 192Ktransaction_isolation = REPEATABLE-READtmp_table_size = 64Mlog-bin=mysql-binbinlog_format=mixedslow_query_loglong_query_time = 1server-id = 3307key_buffer_size = 8Mread_buffer_size = 2Mread_rnd_buffer_size = 2Mbulk_insert_buffer_size = 64Mmyisam_sort_buffer_size = 128Mmyisam_max_sort_file_size = 10Gmyisam_repair_threads = 1myisam_recoverinnodb_additional_mem_pool_size = 16Minnodb_buffer_pool_size = 200Minnodb_data_file_path = ibdata1:10M:autoextendinnodb_file_io_threads = 8innodb_thread_concurrency = 16innodb_flush_log_at_trx_commit = 1innodb_log_buffer_size = 16Minnodb_log_file_size = 512Minnodb_log_files_in_group = 3innodb_max_dirty_pages_pct = 60innodb_lock_wait_timeout = 120[mysqld3]socket = /data/dbdata_3308/mysql.sockport = 3308pid-file = /data/dbdata_3308/3308.piddatadir = /data/dbdata_3308/datauser = mysqlskip-name-resolvelower_case_table_names=1innodb_file_per_table=1back_log = 50max_connections = 300max_connect_errors = 1000table_open_cache = 2048max_allowed_packet = 16Mbinlog_cache_size = 2Mmax_heap_table_size = 64Msort_buffer_size = 2Mjoin_buffer_size = 2Mthread_cache_size = 64thread_concurrency = 8query_cache_size = 64Mquery_cache_limit = 2Mft_min_word_len = 4default-storage-engine = innodbthread_stack = 192Ktransaction_isolation = REPEATABLE-READtmp_table_size = 64Mlog-bin=mysql-binbinlog_format=mixedslow_query_loglong_query_time = 1server-id = 3308key_buffer_size = 8Mread_buffer_size = 2Mread_rnd_buffer_size = 2Mbulk_insert_buffer_size = 64Mmyisam_sort_buffer_size = 128Mmyisam_max_sort_file_size = 10Gmyisam_repair_threads = 1myisam_recoverinnodb_additional_mem_pool_size = 16Minnodb_buffer_pool_size = 200Minnodb_data_file_path = ibdata1:10M:autoextendinnodb_file_io_threads = 8innodb_thread_concurrency = 16innodb_flush_log_at_trx_commit = 1innodb_log_buffer_size = 16Minnodb_log_file_size = 512Minnodb_log_files_in_group = 3innodb_max_dirty_pages_pct = 60innodb_lock_wait_timeout = 120[mysqldump]quickmax_allowed_packet = 256M[mysql]no-auto-rehashprompt=//u@rose //r://m://s>[myisamchk]key_buffer_size = 512Msort_buffer_size = 512Mread_buffer = 8Mwrite_buffer = 8M[mysqlhotcopy]interactive-timeout[mysqld_safe]open-files-limit = 8192
更改环境变量
export PATH=/usr/local/mysql/bin:$PATH# 或者vim /etc/profilePATH=/usr/local/mysql/bin:${PATH}source /etc/profile
mysqld_multi启动
/usr/local/mysql/bin/mysqld_multi start 1/usr/local/mysql/bin/mysqld_multi start 2/usr/local/mysql/bin/mysqld_multi start 3# 或采用一条命令的形式/usr/local/mysql/bin/mysqld_multi start 1-3
更改原来密码(出于安全考虑,还需要删除系统中没有密码的帐号)
/usr/local/mysql/bin/mysqladmin -uroot password 'password' -S /data/dbdata_3306/mysql.sock/usr/local/mysql/bin/mysqladmin -uroot password 'password' -S /data/dbdata_3307/mysql.sock/usr/local/mysql/bin/mysqladmin -uroot password 'password' -S /data/dbdata_3308/mysql.sock
登录MySQL并创建admin账户密码(停止mysql的时候需要使用)
/usr/local/mysql/bin/mysql -uroot -ppassword -S /data/dbdata_3306/mysql.sockGRANT SHUTDOWN ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password';flush privileges;/usr/local/mysql/bin/mysql -uroot -ppassword -S /data/dbdata_3307/mysql.sockGRANT SHUTDOWN ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password';flush privileges;/usr/local/mysql/bin/mysql -uroot -ppassword -S /data/dbdata_3308/mysql.sockGRANT SHUTDOWN ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password';flush privileges;
mysqld_multi关闭进程(测试无效)
/usr/local/mysql/bin/mysqld_multi stop 1/usr/local/mysql/bin/mysqld_multi stop 1-3
管理的话,在本地都是采用 -S /data/dbdata_3308/mysql.sock,如果在远程可以通过不同的端口连接上去做管理操作。其他的和单实例的管理没什么区别!
相关博文参考:
mysql多实例的配置和管理
本文地址:https://www.helloaliyun.com/tutorial/494.html