linux下Mysql多实例实现
什么是MySQL多实例
MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307),运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的服务:;
Mysql多实例实现的3种方式
mysql 多实例常规来讲,有三种方案可以实现,这三种方案各有利弊,如下:
1、基于多配置文件
通过使用多个配置文件来启动不同的进程,以此来实现多实例。
配置文件:
[client] port =3307 socket =/data/3307/mysql.sock [mysql] no-auto-rehash [mysqld] user = mysql port =3307 socket =/data/3307/mysql.sock basedir =/application/mysql datadir =/data/3307/data open_files_limit =1024 back_log =600 max_connections =800 max_connect_errors =3000 table_cache =614 external-locking = FALSE max_allowed_packet =8M sort_buffer_size =1M join_buffer_size =1M thread_cache_size =100 thread_concurrency =2 query_cache_size =2M [root@web001 3307]# cat my.cnf [client] port =3307 socket =/data/3307/mysql.sock [mysql] no-auto-rehash [mysqld] user = mysql port =3307 socket =/data/3307/mysql.sock basedir =/application/mysql datadir =/data/3307/data open_files_limit =1024 back_log =600 max_connections =800 max_connect_errors =3000 table_cache =614 external-locking = FALSE max_allowed_packet =8M sort_buffer_size =1M join_buffer_size =1M thread_cache_size =100 thread_concurrency =2 query_cache_size =2M query_cache_limit =1M query_cache_min_res_unit =2k #default_table_type = InnoDB thread_stack =192K #transaction_isolation = READ-COMMITTED tmp_table_size =2M max_heap_table_size =2M #long_query_time = 1 #log_long_format #log-error = /data/3307/error.log #log-slow-queries = /data/3307/slow.log pid-file =/data/3307/mysql.pid #log-bin = /data/3307/mysql-bin relay-log =/data/3307/relay-bin relay-log-info-file =/data/3307/relay-log.info binlog_cache_size =1M max_binlog_cache_size =1M max_binlog_size =2M expire_logs_days =7 key_buffer_size =16M read_buffer_size =1M read_rnd_buffer_size =1M bulk_insert_buffer_size =1M #myisam_sort_buffer_size = 1M #myisam_max_sort_file_size = 10G #myisam_max_extra_sort_file_size = 10G #myisam_repair_threads = 1 #myisam_recover lower_case_table_names =1 skip-name-resolve slave-skip-errors =1032,1062 replicate-ignore-db=mysql server-id = 7 innodb_additional_mem_pool_size =4M innodb_buffer_pool_size =32M innodb_data_file_path = ibdata1:128M:autoextend innodb_file_io_threads =4 innodb_thread_concurrency =8 innodb_flush_log_at_trx_commit =2 innodb_log_buffer_size =2M innodb_log_file_size =4M innodb_log_files_in_group =3 innodb_max_dirty_pages_pct =90 innodb_lock_wait_timeout =120 innodb_file_per_table =0 [mysqldump] quick max_allowed_packet =2M [mysqld_safe] log-error=/data/3307/mysql_oldboy3307.err pid-file=/data/3307/mysqld.pid
优点:逻辑简单,配置简单
缺点:管理起来不方便
mysql启动停止脚本。
#!/bin/sh #init port=3307 mysql_user="root" mysql_pwd="111111" CmdPath="/application/mysql/bin" mysql_sock="/data/${port}/mysql.sock" function_start_mysql() { if [ ! -e "$mysql_sock" ];then printf "Starting MySql...\n" /bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 >/dev/null & else printf "Mysql is running...\n" exit fi } #stop function 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}/mysql.sock shutdown fi } #restart function 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
2、基于mysqld_multi
通过官方自带的 mysqld_multi 工具,使用单独配置文件来实现多实例
优点: 便于集中管理管理
缺点: 不方便针对每个实例配置进行定制
3、基于IM
使用 MySQL 实例管理器(MYSQLMANAGER),这个方法好像比较好不过也有点复杂
优点:便于集中管理
缺点:耦合度高。IM一挂,实例全挂
不方便针对每个实例配置进行定制
posted on 2018-03-02 21:48 William126 阅读(873) 评论(0) 编辑 收藏 举报