zoukankan      html  css  js  c++  java
  • Mysql进阶-day3


    多实例介绍:

      mysql多实例就是一台服务器开启多个不同的服务端口(3306,3307),运行多个MySQL服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供各自的服务端口。

      这些mysql多实例共用一套mysql安装程序,使用不同的my.cnf配置文件、启动程序、数据文件。在提供服务时,多实例MySQL在逻辑上看来十个字独立的,多个实例之间是根据配置文件的设定值,来取得服务器的相关硬件资源

     MySQL多实例常见配置方案

    1.多配置文件方案
    #通过多个配置文件及多个启动程序来实现多实例的方案
    
    2.单一配置文件部署方案
    #把所有的实例放在一个配置文件里,一个mysqld就是一个实例
    

    安装配置多实例

    1.建立MySQL多实例的条件
         首先要用前面说过的四中安装方法之一(编译安装,cmake安装,yum安装,免编译安装)安装好数据库,
    2.安装(看前面的)
    
    3.开始配置
    [root@MySQL /]# service mysqld stop
    [root@MySQL /]# mkdir /data/{3306,3307}/data -p #创建多实例目录
    [root@MySQL /]# cat /data/3306/my.cnf 
    ####
    [client]
    port = 3306
    socket = /tmp/mysql_3306.sock
    
    [mysql]
    no-auto-rehash
    
    [mysqld]
    user            = mysql
    port		= 3306
    socket		= /tmp/mysql_3306.sock
    basedir = /usr/local/mysql-5.5.54/
    datadir = /data/3306/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 = 1
    #log_long_format
    log-error = /data/3306/error_3306.log
    log-slow-queries = /data/3306/slow.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_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 = 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 = 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/3306/mysql_3306.err
    pid-file=/data/3306/mysqld_3306.pid
    ####
    #另一个就不看了,把所有的3306换成3307即可
    [root@MySQL /]# touch /data/3306/mysql_3306.err  #创建相关错误日志文件
    [root@MySQL /]# touch /data/3307/mysql_3307.err  #创建相关错误日志文件
    [root@MySQL /]# chown -R mysql.mysql /data
    [root@MySQL /]# mysql_install_db --basedir=/usr/local/mysql --datadir=/data/3306/data --user=mysql
    [root@MySQL /]# mysql_install_db --basedir=/usr/local/mysql --datadir=/data/3307/data --user=mysql
    #初始化
    [root@MySQL /]# mysqld_safe --defaults-file=/data/3306/my.cnf 2>&1 &
    [root@MySQL /]# mysqld_safe --defaults-file=/data/3307/my.cnf 2>&1 &
    #启动
    
    #这里启动可以自己写个脚本,脚本放在下面
    
    [root@MySQL /]# mysqladmin -uroot password -S /tmp/mysql_3306.sock
    [root@MySQL /]# mysqladmin -uroot password -S /tmp/mysql_3307.sock
    #为两个实例创建管理员和密码
    [root@MySQL /]# mysql -uroot -p -S /tmp/mysql_3306.sock #连接数据库
    
    #多实例到这里就安装完了
    

    脚本

    #!/bin/bash
    PORT=3306
    USERNAME="root"
    PASSWORD="3306"
    start_mysql()
    {
    printf "Starting MySQL...
    "
    /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/${PORT}/my.cnf 2>&1 > /dev/null &
    }
    stop_mysql()
    {
    printf "Stoping MySQL...
    "
    /usr/local/mysql/bin/mysqladmin -u${USERNAME} -p${PASSWORD} -S /tmp/mysql_${PORT}.sock shutdown
    }
    restart_mysql()
    {
    printf "Restarting MySQL...
    "
    stop_mysql
    start_mysql
    }
    kill_mysql()
    {
    kill -9 $(ps -ef | grep 'bin/mysqld_safe' | grep ${PORT} | awk '{printf $2}')
    kill -9 $(ps -ef | grep 'libexec/mysqld' | grep ${PORT} | awk '{printf $2}')
    }
    case $1 in
    start)
    start_mysql;;
    stop)
    stop_mysql;;
    kill)
    kill_mysql;;
    restart)
    restart_mysql;;
    *)
    echo "Usage: /data/dbdata_${mysql_port}/mysqld {start|stop|restart|kill}";;
    esac

    新增实例

    这个不写,跟前面是一样的,增加一个数据目录,配置文件,脚本,授权,初始化,启动
    

  • 相关阅读:
    Java 介绍比较全面的一遍文章
    JSP页面中path和basepath的含义
    myeclipse2014 破解步骤
    word文档去掉复制过来的背景颜色
    String,创建对象问题
    使用Spring框架的好处(转帖)
    myeclipse中将整块的代码所选中的代码左右移动的快捷键
    点击关闭窗口时,弹出提醒的一个事件
    switch能使用的数据类型有6种
    观察者模式(设计模式_15)
  • 原文地址:https://www.cnblogs.com/wazy/p/8446509.html
Copyright © 2011-2022 走看看