小编之前写了一篇安装mysql-5.5.32的博客,现在来部署mysql多实例
由于内容重复,所以不多做解释。
创建mysql用户和组
groupadd mysql
useradd mysql -s /bin/nologin -M -g mysql
新建文件夹
mkdir /usr/local/mysql-5.5.32 mkdir /data/mysql chown -R mysql.mysql /data/mysql
编译安装cmake
#tar xf cmake-2.8.8.tar.gz #cd cmake-2.8.8 #./configure #gmake #gmake install
编译安装mysql
#yum install ncurses-devel openssl-devel -y #tar xf mysql-5.5.32.tar.gz
编译选项
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.5.32/ -DMYSQL_DATADIR=/data/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql-5.5.32/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii -DENABLED_LOCAL_INFILE=ON -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITHOUT_PARTITION_STORAGE_ENGINE=1 -DWITH_FAST_MUTEXES=1 -DWITH_ZLIB=bundled -DENABLED_LOCAL_INFILE=1 -DWITH_READLINE=1 -DWITH_EMBEDDED_SERVER=1 -DWITH_DEBUG=0
#make -j2 && make install -j2
创建链接和多实例所需要的文件夹
ln -sv /usr/local/mysql-5.5.32 /usr/local/mysql mkdir -p /data/{3306,3307}/data
提为3306和3307目录供配置文件和启动脚本 所需要的配置文件在尾部提供
cp support-files/my-medium.cnf /data/3306/my.cnf 进行修改
cp /data/3306/my.cnf /data/3307/my.cnf
vim /data/3307/my.cnf 做如下修改
server-id = 2
:%s/3306/3307/g
数据库初始化
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/3306/data --user=mysql /usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/3307/data --user=mysql
注:如果初始化报错,请参考上一篇文章: http://www.cnblogs.com/shanlang/p/5203478.html
为mysql 提供mysql启动脚本
cp mysql /data/3360/mysql cp mysql /data/3307/mysql
替换其端口号
vim /dtat/3306/mysql
:%s/3307/3306/g
目录情况如下
# tree -L 3 /data/
/data/
|-- 3306 3306mysql sock和错误日志存放位置
| |-- data 3306mysql的数据目录,
| | |-- mysql 启动脚本
| | |-- performance_schema
| | `-- test
| `-- my.cnf 3306mysql的配置文件
|-- 3307
| |-- data
| | |-- mysql
| | |-- performance_schema
| | `-- test
| `-- my.cnf
|-- lost+found
`-- mysql
如果乱码,可以输入#LANG=en_zh
对数据目录授权于mysql
chown -R mysql.mysql /data/3306 chown -R mysql.mysql /data/3307
mysql启动
/data/3306/mysql start /data/3307/mysql start netstat -tnlp |grep mysql
配置环境变量
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile.d/mysqld.sh source /etc/profile
多实例mysql的登陆
为了区分数据库,需要指定sock或端口
mysql -S /data/3306/mysql.sock
mysql -S /data/3307msyql.sock
启动脚本
########################################################################################## 3306 my.cnf文件 # 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 following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /data/3306/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 socket = /data/3306/mysql.sock basedir = /usr/local/mysql datadir = /data/3306/data 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 # Don't listen on a TCP/IP port at all. This can be a security enhancement, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets or named pipes. # Note that using this option without enabling named pipes on Windows # (via the "enable-named-pipe" option) will render mysqld useless! # #skip-networking # Replication Master Server (default) # binary logging is required for replication log-bin=/data/3306/mysql-bin # binary logging format - mixed recommended binlog_format=mixed # required unique id between 1 and 2^32 - 1 # defaults to 1 if master-host is not set # but will not function as a master if omitted server-id = 1 # Replication Slave (comment out master section to use this) # # To configure this host as a replication slave, you can choose between # two methods : # # 1) Use the CHANGE MASTER TO command (fully described in our manual) - # the syntax is: # # CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>, # MASTER_USER=<user>, MASTER_PASSWORD=<password> ; # # where you replace <host>, <user>, <password> by quoted strings and # <port> by the master's port number (3306 by default). # # Example: # # CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306, # MASTER_USER='joe', MASTER_PASSWORD='secret'; # # OR # # 2) Set the variables below. However, in case you choose this method, then # start replication for the first time (even unsuccessfully, for example # if you mistyped the password in master-password and the slave fails to # connect), the slave will create a master.info file, and any later # change in this file to the variables' values below will be ignored and # overridden by the content of the master.info file, unless you shutdown # the slave server, delete master.info and restart the slaver server. # For that reason, you may want to leave the lines below untouched # (commented) and instead use CHANGE MASTER TO (see above) # # required unique id between 2 and 2^32 - 1 # (and different from the master) # defaults to 2 if master-host is set # but will not function as a slave if omitted #server-id = 2 # # The replication master for this slave - required #master-host = <hostname> # # The username the slave will use for authentication when connecting # to the master - required #master-user = <username> # # The password the slave will authenticate with when connecting to # the master - required #master-password = <password> # # The port the master is listening on. # optional - defaults to 3306 #master-port = <port> # # binary logging - not required for slaves, but recommended #log-bin=mysql-bin # Uncomment the following if you are using InnoDB tables #innodb_data_home_dir = /data/mysql #innodb_data_file_path = ibdata1:10M:autoextend #innodb_log_group_home_dir = /data/mysql # You can set .._buffer_pool_size up to 50 - 80 % # of RAM but beware of setting memory usage too high #innodb_buffer_pool_size = 16M #innodb_additional_mem_pool_size = 2M # Set .._log_file_size to 25 % of buffer pool size #innodb_log_file_size = 5M #innodb_log_buffer_size = 8M #innodb_flush_log_at_trx_commit = 1 #innodb_lock_wait_timeout = 50 [mysql_safe] log-error=/data/3306/ilanni.err pid-file=/data/3306/ilanni.pid [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-timeou ##########################################################################################
########################################################################################## 3306 my.cnf文件 # 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 following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /data/3306/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 socket = /data/3306/mysql.sock basedir = /usr/local/mysql datadir = /data/3306/data 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 # Don't listen on a TCP/IP port at all. This can be a security enhancement, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets or named pipes. # Note that using this option without enabling named pipes on Windows # (via the "enable-named-pipe" option) will render mysqld useless! # #skip-networking # Replication Master Server (default) # binary logging is required for replication log-bin=/data/3306/mysql-bin # binary logging format - mixed recommended binlog_format=mixed # required unique id between 1 and 2^32 - 1 # defaults to 1 if master-host is not set # but will not function as a master if omitted server-id = 1 # Replication Slave (comment out master section to use this) # # To configure this host as a replication slave, you can choose between # two methods : # # 1) Use the CHANGE MASTER TO command (fully described in our manual) - # the syntax is: # # CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>, # MASTER_USER=<user>, MASTER_PASSWORD=<password> ; # # where you replace <host>, <user>, <password> by quoted strings and # <port> by the master's port number (3306 by default). # # Example: # # CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306, # MASTER_USER='joe', MASTER_PASSWORD='secret'; # # OR # # 2) Set the variables below. However, in case you choose this method, then # start replication for the first time (even unsuccessfully, for example # if you mistyped the password in master-password and the slave fails to # connect), the slave will create a master.info file, and any later # change in this file to the variables' values below will be ignored and # overridden by the content of the master.info file, unless you shutdown # the slave server, delete master.info and restart the slaver server. # For that reason, you may want to leave the lines below untouched # (commented) and instead use CHANGE MASTER TO (see above) # # required unique id between 2 and 2^32 - 1 # (and different from the master) # defaults to 2 if master-host is set # but will not function as a slave if omitted #server-id = 2 # # The replication master for this slave - required #master-host = <hostname> # # The username the slave will use for authentication when connecting # to the master - required #master-user = <username> # # The password the slave will authenticate with when connecting to # the master - required #master-password = <password> # # The port the master is listening on. # optional - defaults to 3306 #master-port = <port> # # binary logging - not required for slaves, but recommended #log-bin=mysql-bin # Uncomment the following if you are using InnoDB tables #innodb_data_home_dir = /data/mysql #innodb_data_file_path = ibdata1:10M:autoextend #innodb_log_group_home_dir = /data/mysql # You can set .._buffer_pool_size up to 50 - 80 % # of RAM but beware of setting memory usage too high #innodb_buffer_pool_size = 16M #innodb_additional_mem_pool_size = 2M # Set .._log_file_size to 25 % of buffer pool size #innodb_log_file_size = 5M #innodb_log_buffer_size = 8M #innodb_flush_log_at_trx_commit = 1 #innodb_lock_wait_timeout = 50 [mysql_safe] log-error=/data/3306/ilanni.err pid-file=/data/3306/ilanni.pid [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-timeou ##########################################################################################
#safe-updates [myisamchk] key_buffer_size = 20M sort_buffer_size = 20M read_buffer = 2M write_buffer = 2M [mysqlhotcopy] interactive-timeou ######################################################################################### ########################################################################################## 启动脚本 #!/bin/bash #init port=3307 mysql_user="root" #mysql_pwd="kkk123" basePath="/usr/local/mysql/bin" mysql_sock="/data/${port}/mysql.sock" # start function_start_mysql() { if [ ! -e "$mysql_sock" ];then printf "Starting MySQL ... \n" /bin/bash ${basePath}/mysqld_safe --defaults-file=/data/${port}/my.cnf >> /dev/null & else printf "MySQL is running...\n" exit 0 fi } # sotp function_sotp_mysql() { if [ ! -e "$mysql_sock" ];then printf "MySQL is stopped... \n" exit 0 else printf "Stoping MySQL...\n" ${basePath}/mysqladmin -u${mysql_user} -p${mysql_pwd} -S $mysql_sock shutdown fi sleep 3 function_start_mysql } case $1 in start) function_start_mysql ;; stop) function_sotp_mysql ;; restart) function_restart_mysql ;; *) echo " PTAH/mysql $1" ;; esac ####################################################################################