MySQL使用mysqld_multi部署单机多实例

随着硬件的性能越来越好,往往我们的数据库服务器若只开了一个单实例回有点浪费硬件资源的,这一点就不解释了哈。
参考: http://blog.itpub.net/26230597/viewspace-1659537/ 大神的解释

源码安装mysql参考blog:http://blog.csdn.net/mchdba/article/details/35994251,源码包下载地址:
http://download.csdn.net/detail/mchdba/7545037
http://download.csdn.net/detail/jyf0412/8726723   percona-server-5.5.41-37.0
http://download.csdn.net/detail/jyf0412/8807893
   percona-server-5.6.23-72.1


下载好源码包后,先自己准备好数据库账号,安装目录

创建好安装目录
mkdir-p /usr/local/mysql
创建好数据库存放目录,推荐大空间磁盘,可以再挂载一个数据目录/data

编译安装的过程有点麻烦,但是大家不要怕,其实编译安装也很简单的
如果大家不想cmake的时候一哈一哈的warning或者error
那就来个简单的:
#Set timezone(设置服务器的时区:亚洲上海)
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#Remove MySQL if exists mysql (删除服务器上已存在MySQL,切记数据库备份)
rpm -qa|grep mysql
rpm -e mysql
yum -y remove mysql-server mysql mysql-libs

#常用依赖安装
centos:
yum -y install patch make cmake gcc gcc-c++ gcc-g77 flex bison file libtool libtool-libs autoconf kernel-devel libjpeg libjpeg-devel libpng libpng-devel libpng10 libpng10-devel gd gd-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glib2 glib2-devel bzip2 bzip2-devel libevent libevent-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel vim-minimal nano fonts-chinese gettext gettext-devel ncurses-devel gmp-devel pspell-devel unzip libcap diffutils
debian:
yum -y install build-essential gcc g++ make cmake autoconf automake re2c wget cron bzip2 libzip-dev libc6-dev file rcconf flex vim nano bison m4 gawk less make cpp binutils diffutils unzip tar bzip2 libbz2-dev libncurses5 libncurses5-dev libtool libevent-dev libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlibc openssl libsasl2-dev libxml2 libxml2-dev libltdl3-dev libltdl-dev libmcrypt-dev zlib1g zlib1g-dev libbz2-1.0 libbz2-dev libglib2.0-0 libglib2.0-dev libpng3 libfreetype6 libfreetype6-dev libjpeg62 libjpeg62-dev libjpeg-dev libpng-dev libpng12-0 libpng12-dev curl libcurl3 libmhash2 libmhash-dev libpq-dev libpq5 gettext libncurses5-dev libcurl4-gnutls-dev libjpeg-dev libpng12-dev libxml2-dev zlib1g-dev libfreetype6 libfreetype6-dev libssl-dev libcurl3 libcurl4-openssl-dev libcurl4-gnutls-dev mcrypt libcap-dev diffutils ca-certificates debian-keyring debian-archive-keyring
ubuntu:
build-essential gcc g++ make cmake automake autoconf re2c wget cron bzip2 libzip-dev libc6-dev file rcconf flex vim nano bison m4 gawk less make cpp binutils diffutils unzip tar bzip2 libbz2-dev unrar p7zip libncurses5-dev libncurses5 libncurses5-dev libncurses5-dev libtool libevent-dev libpcre3 libpcre3-dev libpcrecpp0  libssl-dev zlibc openssl libsasl2-dev libltdl3-dev libltdl-dev libmcrypt-dev zlib1g zlib1g-dev libbz2-1.0 libbz2-dev libglib2.0-0 libglib2.0-dev libpng3 libjpeg62 libjpeg62-dev libjpeg-dev libpng-dev libpng12-0 libpng12-dev curl libcurl3 libmhash2 libmhash-dev libpq-dev libpq5 gettext libncurses5-dev libcurl4-gnutls-dev libjpeg-dev libpng12-dev libxml2-dev zlib1g-dev libfreetype6 libfreetype6-dev libssl-dev libcurl3 libcurl4-openssl-dev libcurl4-gnutls-dev mcrypt libcap-dev diffutils ca-certificates debian-keyring debian-archive-keyring

删除原来数据库配置文件,如果有的话
rm -f /etc/my.cnf

tar -zxvf percona-server-5.6.23-72.1.tar.gz
cd percona-server-5.6.23-72.1

编译
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1

make && make install

添加数据库用户
groupadd mysql
useradd -s /sbin/nologin -M -g mysql mysql

我这里为了凸显鲜果是开了7个实例
mkdir -p /data/dbdata_3306
mkdir -p /data/dbdata_3307
mkdir -p /data/dbdata_3308
mkdir -p /data/dbdata_3309
mkdir -p /data/dbdata_3310
mkdir -p /data/dbdata_3311
mkdir -p /data/dbdata_3312
chown -R mysql:mysql *

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/dbdata_3306 --user=mysql
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/dbdata_3307 --user=mysql
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/dbdata_3308 --user=mysql
.....

mysqladmin -uroot -S /data/dbdata_3306/mysql.sock password 123456
mysqladmin -uroot -S /data/dbdata_3307/mysql.sock password 123456
mysqladmin -uroot -S /data/dbdata_3308/mysql.sock password 123456
......

创建一个管理这些实例的日志,这个日志是配置在配置文件的
touch /data/my_multi.log 

配置文件:
# Example MySQL config file for medium systems.
#
# This is for a system with little memory (32M - 64M) where MySQL plays
# an important part, or systems up to 128M where MySQL is used together with
# other programs (such as a web server)
#
# MySQL programs look for option files in a set of
# locations which depend on the deployment platform.
# You can copy this option file to one of those
# locations. For information about these locations, see:
# http://dev.mysql.com/doc/mysql/en/option-files.html
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.

# The MySQL server
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user       = root
password   = 123456
log=/data/my_multi.log


[mysqld1]
socket = /data/dbdata_3306/mysql.sock
port = 3306
pid-file = /data/dbdata_3306/3306.pid
datadir = /data/dbdata_3306
user = mysql
skip-name-resolve
innodb_file_per_table=1
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log-bin=mysql-bin
binlog_format=mixed
expire_logs_days=7
slow_query_log
long_query_time = 3
server-id = 1
innodb_data_home_dir = /data/dbdata_3306
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /data/dbdata_3306
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50


[mysqld2]
socket = /data/dbdata_3307/mysql.sock
port = 3307
pid-file = /data/dbdata_3307/3307.pid
datadir = /data/dbdata_3307
user = mysql
skip-name-resolve
innodb_file_per_table=1
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log-bin=mysql-bin
binlog_format=mixed
expire_logs_days=7
slow_query_log
long_query_time = 3
server-id = 1
innodb_data_home_dir = /data/dbdata_3307
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /data/dbdata_3307
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
.....

[mysqldump]
quick
max_allowed_packet = 256M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
open-files-limit = 8192
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout

可以自己DIY配置文件,我这个是小网站配置,也是lnmp的默认配置
看看效果吧



 mysqld_multi --defaults-extra-file=/etc/my_multi.cnf start
 mysqld_multi --defaults-extra-file=/etc/my_multi.cnf report



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30290247/viewspace-1700037/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30290247/viewspace-1700037/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MySQL实例是指在同一个服务器上同时运行多个 MySQL 服务器实例的技术。这样可以在同一台机器上同时管理多个数据库,每个实例都有自己的数据库和配置文件。这在某些情况下可以提高数据库性能和可用性,比如当你需要在不同的数据库之间进行负载均衡时。 ### 回答2: MySQL实例是指在一台服务器上同时运行多个独立的MySQL数据库实例。通常情况下,一个服务器只能运行一个MySQL实例,也就是只能使用一个端口号和一个数据目录。而使用实例技术可以在同一台服务器上启动多个MySQL实例,每个实例有自己独立的端口号和数据目录,彼此之间互相独立,互不影响。 使用实例技术可以带来一些好处。首先,可以在同一台服务器上运行多个不同版本的MySQL,方便进行版本的升级和测试。其次,不同的实例可以用于不同的用途,如一个实例用于商业系统,一个实例用于数据分析,这样可以更好地管理和维护数据库。此外,多实例还可以提高服务器的利用率,节约硬件资源的开销。 实现多实例可以通过操作系统级别的配置,也可以通过MySQL自带的工具mysqld_multi来实现。操作系统级别的配置需要手动创建多个配置文件、数据目录和日志文件,并在启动时指定不同的配置文件和数据目录。而mysqld_multi则可以通过简单的命令管理多个实例的启动、停止和重启,非常方便。 需要注意的是,多实例会增加服务器的负担和资源消耗,因此在配置多实例时需要考虑服务器硬件的配置和性能。另外,不同实例之间的资源和权限划分也需要谨慎规划,以确保数据的安全性和隔离性。 ### 回答3: MySQL实例是指在一台物理服务器上同时运行多个独立的MySQL数据库实例。每个实例独立运行,并有自己的配置文件、数据目录和网络端口等。多实例可以对应用程序和数据库进行隔离,可以在同一台服务器上运行多个应用,使得资源利用更加高效。 MySQL实例的好处有以下几点: 1. 资源利用率高:多实例可以在同一台服务器上运行多个独立的MySQL,充分利用服务器的资源,提高资源利用率。 2. 管理灵活性:每个实例都有独立的配置文件和数据目录,可以根据不同的应用需求进行灵活的配置和管理。 3. 数据隔离性好:多实例可以对不同的应用或者不同的用户进行数据隔离,避免不同实例之间的数据干扰。 4. 故障容错性高:每个实例都是独立运行的,一个实例出现问题不会影响其他实例的正常运行,提高了系统的容错性和稳定性。 5. 方便实施数据库复制:多实例可以方便地实施数据库复制,将数据从一个实例复制到另一个实例,提供数据备份和灾难恢复的能力。 总之,MySQL实例是一种在一台物理服务器上运行多个独立的MySQL数据库实例的技术,能够充分利用服务器资源、提高数据库的管理灵活性、数据隔离性和故障容错性,是开发人员和系统管理员的重要工具之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值