多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### **mysql多实例安装** #### **1.关闭mysqld及启动方式** ~~~ pkill mysqld ps -ef|grep mysql rm -f /etc/init.d/mysqld ~~~ #### **2.创建目录** ~~~ mkdir -p /data/{3306,3307}/data tree /data ~~~ /data 总的多实例目录 |-- 3306 3306实例的目录 |-------data 3306实例的数据文件目录 |--3307 3307实例的目录 |-------data 3307实例的数据文件目录 备注:mkdir -p /data/{3306,3307}/data 相当于 mkdir -p /data/3306/data; mkdir -p /data/3307/data 两条命令 **生产硬件配置,MEN 32G 双cpu 8核 磁盘6*600g sas 15k+ 2~3个实例** #### **3.创建mysql多实例的配置文件** mysql数据库默认为用户提供了多个配置文件模板,用户可以根据硬件配置大小来选择。 ~~~ ls -l support-files/*.cnf /bin/cp support-files/my-small.cnf /etc/my.cnf ~~~ 通过rz等方式上传配置文件模板my.cnf文件到相关目录下 ~~~ vi /data/3306/my.cnf vi /data/3307/my.cnf ~~~ /data/3306/my.cnf ~~~ [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-rehash [mysqld] 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 max_connect_errors = 3000 table_cache = 614 external-locking = FALSE max_allowed_packet = 8M sort_buffer_size = 1M joins_buffer_size = 1M thread_cache_size = 100 thread_concurency = 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-COMMITED tmp_table_size = 2M max_heap_table_size = 2M long_query_time = 1 log_long_format log_error = /data/3306/error.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_md_buffer_size = 1M bulk_insert_buffer_size= 1M myisam_sort_buffer_size = 1M myisam_max_sort_file_size =1G 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 = ibdatal:128Mautoextend 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_oldboy3306.err pid-file = /data/3306/mysqld.pid ~~~ **/data/3306/my.cnf和/data/3307/my.cnf区别** 1./data/3306/my.cnf ~~~ port = 3306 socket = /data/3306/mysql.sock datadir = /data/3306/data long_query_time = 1 #log_error = /data/3306/error.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 server-id = 1 log-error = /data/3306/mysql_oldbody3306.err ~~~ 1./data/3307/my.cnf ~~~ port = 3307 socket = /data/3307/mysql.sock datadir = /data/3307/data #long_query_time = 1 #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 server-id = 3 log-error = /data/3307/mysql_oldbody3307.err ~~~ #### **创建mysql多实例的启动文件** ~~~ vi /data/3306/mydql vi /data/3307/mysql ~~~ 通过rz等方式上传配置文件模板mysql文件到相关目录下 /data/3306/mysql ~~~ #!bin/sh #init port = 3306 mysql_user = "root" mysql_pwd = "admin" CmdPath = "/application/mysql/bin" mysql_sock = "/data/${port}/mysql.sock" #startup 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 print "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 ~~~ 最终目录结构为: /data |----3306 |--------data |-----------my.cnf |-----------mysql |------3307 |---------data |-------------my.cnf |-------------mysql 多实例启动文件的启动mysql服务实质: mysqld_safe --default-file = /data/3306/my.cnf 2>&1 >/dev/null & mysqld_safe --default-file = /data/3307/my.cnf 2>&1 >/dev/null & 多实例停止文件的停止mysql服务实质: mysqladmin - u root -p admin -S /data/3306/mysql.sock shutdown mysqladmin - u root -p admin -S /data/3307/mysql.sock shutdown #### **授权mysql用户和组管理整个多实例目录/data** ~~~ chown -R mysql.mysql /data find /data/ -name mysql /data/3306/mysql /data/3307/mysql ~~~ #### **授权mysql多实例服务所有启动文件mysql可执行** ~~~ #查找/data目录下的mysql 文件 find /data/ -type f -name "mysql" #查找/data目录下的mysql文件并查看 find /data/ -type f -name "mysql" | xrags ls - l #查找/data目录下的mysql文件并添加权限 find /data/ -type f -name "mysql" | xargs chmod +x find /data -name mysql -exec chmod 700 {} \; find /data -name mysql | xargs chmod 700 find /data -name mysql -exec chmod 700 {} \; find /data -name mysql -exec chown root.root {} \; find /data -name mysql -exec ls -l {} \ ; ~~~ #### **配置mysql命令全局使用路径** ~~~ ①方法一 #添加全局变量 echo 'export PATH=/usr/local/mysql/bin:$PATH' >>/etc/profile #查看全局变量 tail -l /etc/profile #使全局变量生效 source /etc/profile ②方法二 /bin/cp /usr/local/mysql/bin/* /usr/local/sbin/ ~~~ #### **初始化mysql多实例的数据库文件** mysql5.1.x初始化命令: ~~~ mysql_install_db -basedir=/application/mysql --datadir=/data/3306/data --user=mysql mysql_install_db -basedir=/application/mysql --datadir=/data/3307/data --user=mysql ~~~ mysql5.2.x初始化命令为: ~~~ cd /application/mysql/scripts #和5.1的路径不同,不在mysql bin 路径下 ./mysql_install_db -basedir=/application/mysql --datadir=/data/3306/data --user=mysql ./mysql_install_db -basedir=/application/mysql --datadir=/data/3307/data --user=mysql ~~~ #### **启动多实例mysql** ~~~ /data/3306/mysql start /data/3307/mysql start netstat -lntup | grep 330 或 ss -lntup | grep 330 ~~~ 注:查看mysql错误日志 ``` grep log-error my.cnf |tail -l tail -100 /data/3306/mysql_oldboy3306.err ``` #### **多实例登录mysql** ``` mysql -S /data/3306/mysql.sock create database d3306 #切换到3307 system mysql -S /data/3307/mysql.sock ``` #### **为root增加密码** ``` mysqladmin -u root -S /data/3306/mysql.scok password 'amdin123' ``` #### **新增加一个3308实例** ``` mkdir -p /data/3308/data cp /data/3306/my.cnf /data/3308 cp /data/3306/mysql /data/3308 #vi 批量替换my.cnf 3306 为3308 :g/3306/s//3308/ :%s/3306/3308/g :n1,n2s/3306/3308/gc n1,n2为行号在指定行号之间替换 cd /application/mysql/scripts/ ./mysql_install_db --user=mysql --basedir=/application/mysql --datadir = /data/3308/data/ /data/3308/mysql.sock start ```