今天看视频学习了下mysql的多实例,感觉很杂,现在梳理下,多实例简单说就是在一台主机内运行多个逻辑上互不影响的MySQL,它们可以共用相同的物理资源,但是配置文件,数据库内容不同。

步骤:


1,安装mysql5.6

安装方式有很多,不在赘述,我采用的是编译安装,版本是mysql5.6.29。指定安装路径到了/usr/local/mysql中



make install完成后不用做其他操作,直接做第二步即可。

2,配置文件以及启动程序


思路


在根目录下新建data文件夹,建立两个数据库,分别以其端口号作为子文件夹名称

第一步


新建目录,并赋予mysql用户组权限

-p          /data/         330         {         6         ,         7         }/data
 chown -R mysql.mysql /data


我们为两个数据库分配端口为3306和3307.



因为我这是已经安装好的,所以多了很多文件,真正做完后每个文件夹内只有my.cnf,mysql,和data


完成后不要忘了chmod给予my.cnf,mysql执行权限

mysql <wbr>5.6多实例



附配置文件详细内容



#配置文件my.cnf


my.cnf

[client]         
 port          =          3306         
 socket = /data/         3306         /mysql.sock
 [mysql]
 no-auto-rehash
 socket = /data/         3306         /mysql.sock
 [mysqld]
 socket = /data/         3306         /mysql.sock
 user = mysql
 port =          3306         
 socket = /data/         3306         /mysql.sock
 basedir = /usr/local/mysql
 datadir = /data/         3306         /data
 open_files_limit =          1024         
 back_log =          600         
 max_connections =          800         
         # 会话上限800
         max_connect_errors =          3000         
         # 客户端密码错误允许最大次数
         table_open_cache =          614         
         # 所有线程最大打开表的数量614
         external-locking = FALSE
         # 不允许外部文件级别的锁
         max_allowed_packet = 8M
         # 服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小
         sort_buffer_size = 1M
         #最小排序缓冲字节
         join_buffer_size = 1M
         #join连接(不太清楚这里意思)
         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
 slow_query_log =          1         
 slow_query_log_file = /data/         3306         /slow.log
 long_query_time =          2         
         #以上三个参数记录慢日志,查询时间超过2秒以上的
 #log-error = /data/3306/error.log
         pid-         file         = /data/         3306         /mysql.pid
 log-         bin         = /data/         3306         /mysql-         bin         
 relay-log = /data/         3306         /relay-         bin         
 relay-log-info-         file         = /data/         3306         /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_repair_threads =          1         
 myisam_recover

 lower_case_table_names =          1         
 skip-name-resolve
 slave-skip-errors =          1032         ,         1062         
 replicate-ignore-db = mysql

 server-         id         =         1         

 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 =          2         
 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/         3306         /mysql_liyao3306.err
 pid-         file         =/data/         3306         /mysqld.pid

#mysql启动文件


mysql

#!/bin/bash
         port=         3306         
 mysql_user=         "root"         
 mysql_pwd=         "123.com"         
 CmdPath=         "/usr/local/mysql/bin"         
 mysql_sock=         "/data/${port}/mysql.sock"         
         #start function
         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()
 {
     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


第二步,初始化数据库


必须到mysql_install_db这个文件的文件夹中


初始化数据库

--basedir=/usr/local/mysql          --datadir=/data/         3306         /data --user=mysql

注意,datadir路径指向/data对应目录,初始化成功后即可在data目录中看到相应的文件


第三步,开启以及关闭



开启数据库命令

3306         /mysql start


此时无法使用stop关闭数据库,需要设立密码



重设密码命令

-u          root          -S          /data/         3306         /mysql.sock password          '123.com'


设置完密码后,vi /data/3306/mysql 启动文件,将mysql_pwd改为你的密码,OK,可以使用了。


涉及安全问题,可以将data下的mysql文件全部改为700权限,用户改成root。


#更改权限
         find         /data -         type         f -name          "mysql"         -         exec         chmod          700         {} \;
         #更改用户
         find         /data -         type         f -name          "mysql"         -         exec         chown root.root {} \;


3,问题



如果出现问题,建议从以下几点考虑。



1,权限问题,包括目录,文件


2,路径问题,根据实际情况修改配置文件,切莫直接搬运


3,如无法确,请查看日志文件,日志在/data/330?/下,根据日志查找错误。


以上三种已经包含了90%的问题


4,磁盘空间


5,安装不完整,缺少对应支持。




enjoy it